From cbfdbd38823c6bd3f86ecfb87b70a34ec20526dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=82=9C=E7=BF=94?= <2307953404@qq.com> Date: Sat, 26 Oct 2024 10:23:37 +0800 Subject: [PATCH] get teams according eventId --- asg_form/Controllers/Team/Team_http.cs | 59 +++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 6 deletions(-) diff --git a/asg_form/Controllers/Team/Team_http.cs b/asg_form/Controllers/Team/Team_http.cs index e116483..aeb81c3 100644 --- a/asg_form/Controllers/Team/Team_http.cs +++ b/asg_form/Controllers/Team/Team_http.cs @@ -8,6 +8,7 @@ using Microsoft.EntityFrameworkCore; using NPOI.OpenXmlFormats.Dml; using System.Security.Claims; using static allteam1; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory; namespace asg_form.Controllers.Team { @@ -206,24 +207,70 @@ namespace asg_form.Controllers.Team } } + public class TeamFind + { + public string teamName { get; set; } + public List roleNames { get; set; } + } + [Route("api/v3/form/all")] [HttpGet] [Authorize] - public async Task> GetformbyId(short page, short limit, int eventId) + public async Task> GetFormById(short page, short limit, int sort, int eventId) { - using (var db = new TestDbContext()) + using (var db = new TestDbContext()) { try { - var query = await db.Forms.FindAsync(eventId); - - return Ok(new { code = 200, message = "没有完成的接口" }); + var query = from m in db.Forms + where m.events.Id == eventId + join r in db.Roles on m.Id equals r.form.Id + select new + { + m.team_name, + r.role_name, + m.piaoshu, + m.time + }; + switch (sort) + { + case 0: + query = query.OrderByDescending(m => m.piaoshu).ThenByDescending(m => m.time); + break; + case 1: + query = query.OrderBy(m => m.piaoshu); + break; + case 2: + query = query.OrderByDescending(m => m.piaoshu); + break; + case 3: + query = query.OrderBy(m => m.time); + break; + case 4: + query = query.OrderByDescending(m => m.time); + break; + default: + break; + } + var results = await query + .GroupBy(m => new { m.team_name, m.piaoshu, m.time }) + .Select(g => new TeamFind + { + teamName = g.Key.team_name, + roleNames = g.Select(x => x.role_name).ToList() + }) + .Skip((page - 1) * limit) + .Take(limit) + .ToListAsync(); + int total = results.Count(); + return Ok(new { code = 200, message = "成功", data = results,total }); } catch (Exception ex) { - return Ok(new { code = 500, message = "服务器错误", ex }); + return Ok(new { code = 500, message = "服务器错误", ex = ex.Message }); } } } + } }