From a942f3ad7d112b5b75747304e15ebfb0f14725ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=AF=85?= <2667210109@qq.com> Date: Sun, 24 Nov 2024 00:18:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asg_form/Controllers/form_cs.cs | 146 +++++++++++++++++++++++++++++++- 1 file changed, 144 insertions(+), 2 deletions(-) diff --git a/asg_form/Controllers/form_cs.cs b/asg_form/Controllers/form_cs.cs index 39e6661..3020696 100644 --- a/asg_form/Controllers/form_cs.cs +++ b/asg_form/Controllers/form_cs.cs @@ -25,12 +25,154 @@ using static using Manganese.Array; using Microsoft.AspNetCore.Identity; using Flurl.Http; +using System.Security.Claims; namespace asg_form.Controllers { + public class form_cs : ControllerBase + { + [Route("api/v3/form/all")] + [HttpGet] + public async Task> GetFormById(short page, short limit, int sort, int eventId) + { + using (var db = new TestDbContext()) + { + try + { + var query = db.Forms.Where(f => f.events.Id == eventId); + query = sort switch + { + 0 => query.OrderByDescending(m => m.piaoshu).ThenByDescending(m => m.time), + 1 => query.OrderBy(m => m.piaoshu), + 2 => query.OrderByDescending(m => m.piaoshu), + 3 => query.OrderBy(m => m.time), + 4 => query.OrderByDescending(m => m.time), + _ => query + }; + if (this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "nbadmin") || this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) + { + try + { + var results = await query + .Skip((page - 1) * limit) + .Take(limit) + .Select(f => new AdminTeamFind + { + form = f, + roles = findRolesByFormId(f.Id, 0) + }) + .ToListAsync(); + int total = await query.CountAsync(); + return Ok(new { code = 200, message = "成功", data = results, total }); + } + catch (Exception ex) + { + return Ok(new { code = 500, message = "服务器错误", error = ex.Message }); + } + } + else + { + var results = await query + .Skip((page - 1) * limit) + .Take(limit) + .Select(f => new AdminTeamFind + { + form = new form + { + Id = f.Id, + team_name = f.team_name, + piaoshu = f.piaoshu, + }, + roles = findRolesByFormId(f.Id, 1) + }) + .ToListAsync(); + int total = await query.CountAsync(); + return Ok(new { code = 200, message = "成功", data = results, total }); + } + } + catch (Exception ex) + { + return Ok(new { code = 500, message = "服务器错误", ex = ex.Message }); + } + } + } + public class tmpRole + { + public string? roleName { get; set; } + public int? roleRank { get; set; } + public string? commonRoles { get; set; } + public string? roleLin { get; set; } + public string? roleId { get; set; } + public string? gameName { get; set; } + public string? idCard { get; set; } + public string? phoneNumber { get; set; } + public string? idCardName { get; set; } + + } + public class TeamFind + { + + public long formId { get; set; } + public string teamName { get; set; } + public int voteOfLikes { get; set; } + public List roles { get; set; } = new List(); + + } + public class AdminTeamFind + { + public form? form { get; set; } + public List? roles { get; set; } = new List(); + } + + private static List findRolesByFormId(long formId, int y) + { + var roles = new List(); + var db = new TestDbContext(); + try + { + var query = db.Roles.Where(x => x.form.Id == formId); + if (y == 1) + { + roles = query + .Select(f => new tmpRole + { + roleName = f.role_name, + roleRank = f.Historical_Ranks, + commonRoles = f.Common_Roles, + roleLin = f.role_lin + }) + .ToList(); + } + else + { + roles = query + .Select(f => new tmpRole + { + roleName = f.role_name, + roleRank = f.Historical_Ranks, + commonRoles = f.Common_Roles, + roleLin = f.role_lin, + roleId = f.role_id, + gameName = f.Game_Name, + idCard = f.Id_Card, + phoneNumber = f.Phone_Number, + idCardName = f.Id_Card_Name + }) + .ToList(); + } + + } + catch (Exception ex) + { + Console.WriteLine($"Error in BuildTree: {ex.Message}"); + throw; + } + return roles; + } + } [ApiController] [Route("[controller]")] @@ -281,7 +423,7 @@ namespace asg_form.Controllers if (imageFile == null || imageFile.Length == 0) return BadRequest("Invalid image file."); // 将文件保存到磁盘 - var filePath = Path.Combine(Directory.GetCurrentDirectory(), $"loge/{for1.events_name}/{for1.events_name}/", $"{imageFile.FileName}"); + var filePath = Path.Combine(Directory.GetCurrentDirectory(), $"loge/{for1.events_name}/", $"{imageFile.FileName}"); using (var stream = new FileStream(filePath, FileMode.Create)) { await imageFile.CopyToAsync(stream); @@ -497,8 +639,8 @@ namespace asg_form.Controllers } } - + public class role {