diff --git a/asg_form/Controllers/admin.cs b/asg_form/Controllers/admin.cs index 7b0768a..1bc29cf 100644 --- a/asg_form/Controllers/admin.cs +++ b/asg_form/Controllers/admin.cs @@ -461,14 +461,15 @@ public async Task> GetAdminUsersV2(string? keyword = nu //管理员设置用户的职位 [Route("api/v1/admin/setop")] - [HttpPost] + [HttpGet] [Authorize] public async Task> setrole(string userid, string opname) { if (this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { + var ouser = await userManager.FindByIdAsync(userid); - + ouser.joinTime = (DateTime.Now.ToString()); ouser.officium = opname; await userManager.UpdateAsync(ouser); diff --git a/asg_form/Controllers/user_form.cs b/asg_form/Controllers/user_form.cs index b036feb..a446c60 100644 --- a/asg_form/Controllers/user_form.cs +++ b/asg_form/Controllers/user_form.cs @@ -1,8 +1,10 @@ using Manganese.Text; +using Masuit.Tools; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using System.Buffers.Text; using System.Data; using System.Security.Claims; using static asg_form.blog; @@ -182,28 +184,51 @@ namespace asg_form.Controllers } + public class userRanking + { + public long userId { get; set; } + public string username { get; set; } + public string joinTime { get; set; } + public string base64 { get; set; } + public int count { get; set; } + } - - /* /// - /// 职位时间设置接口 + /// + /// 解说排行榜 /// /// - [Authorize] - [Route("api/v1/user/settime")] - [HttpPost] - public async Task> settime([FromBody] timeSet msg) + [Route("api/v1/user/ranking")] + [HttpGet] + public async Task> rankingList(short page = 1, short limit = 10) { - - string userId = this.User.FindFirst(ClaimTypes.NameIdentifier)!.Value; - var user = await userManager.FindByIdAsync(userId); - if(user.officium != "Commentator") + try { - return Ok(new { code = 200, message = "你不是解说,不参与排名!" }); + DateTime currentTime = DateTime.Now; + + var rankings = userManager.Users + .Where(u => u.joinTime != null && u.officium == "Commentator") + .AsEnumerable() + .OrderByDescending(u => (currentTime - u.joinTime.ToDateTime()).TotalSeconds) + .Skip((page - 1) * limit) + .Take(limit) + .Select(u => new userRanking + { + userId = u.Id, + username = u.chinaname, + joinTime = u.joinTime, + base64 = u.UserBase64, + //count = (int)((currentTime - u.joinTime.ToDateTime()).TotalSeconds/ 86400), + }) + .ToList(); + + return Ok(new { code = 200, message = "", rankings }); } - user.joinTime = msg.joinTime; - await userManager.UpdateAsync(user); - return Ok(new { code = 200, message = "你成功修改了自己加入ASG的时间!" }); - } */ + catch (Exception ex) + { + return StatusCode(500, new { code = 500, message = "获取排行榜失败", error = ex.Message }); + } + + } } } diff --git a/asg_form/User.cs b/asg_form/User.cs index 00dcfe1..27d09da 100644 --- a/asg_form/User.cs +++ b/asg_form/User.cs @@ -29,6 +29,7 @@ namespace asg_form //public List? Roles { get; set; } public string? roleListName { get; set; } public string? roleListCode { get; set; } + public string? joinTime { get; set; } } public class Role : IdentityRole