using Manganese.Array; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using System.Security.Claims; using Microsoft.EntityFrameworkCore; using RestSharp.Extensions; using System.Threading.Tasks; using Flandre.Core.Common; using Flandre.Core.Messaging.Segments; using Flandre.Core.Messaging; using static asg_form.Controllers.InviteReferee; using asg_form.Controllers.Store; namespace asg_form.Controllers.Teamregistration { public class ComformDB { public int? id { get; set; } public string chinaname { get; set; } public int user_id { get; set; } public int sex { get; set; } public string introduction { get; set; } public string game_id { get; set; } public string history_rank { get; set; } public string contact_number { get; set; } public string create_time { get; set; } //public string web_social_name { get; set; } public string approval_person { get; set; } public string approval_time { get; set; } public string status { get; set; } public string biz_type { get; set; } public string req_role { get; set; } public string intro_url { get; set; } } public class userMsg { public string chinaname { get; set; } public int userId { get; set; } public int sex { get; set; } public string introduction { get; set; } public string gameId { get; set; } public string? historyRank { get; set; } public string? contactNumber { get; set; } public int? id { get; set; } public string bizType { get; set; } public string reqRole { get; set; } public string introUrl { get; set; } } [ApiController] public class RegisterController : ControllerBase { private readonly RoleManager roleManager; private readonly UserManager userManager; public RegisterController( RoleManager roleManager, UserManager userManager) { this.roleManager = roleManager; this.userManager = userManager; } [Route("/api/v1/userRegister")] [HttpPost] [Authorize] public async Task> UserRgst([FromBody] userMsg msg) { using (TestDbContext sub = new TestDbContext()) { if (msg.id == null && sub.T_Comform.Any(n => n.user_id==msg.userId)) { return Ok(new error_mb { code = 400, message = "你已经提交过表单了,请不要重复提交" }); } var dateString = DateTime.Now.ToString(); if (msg.id == null) { var rgst = new ComformDB { chinaname = msg.chinaname, user_id = msg.userId, sex = msg.sex, introduction = msg.introduction, game_id = msg.gameId, history_rank = msg.historyRank, contact_number = msg.contactNumber, create_time = dateString, status = "1", approval_person = "未审核", approval_time = "未审核", biz_type = msg.bizType, req_role = msg.reqRole, intro_url = msg.introUrl, }; sub.T_Comform.Add(rgst); await sub.SaveChangesAsync(); string mesg1 = $"[ASG管理系统]有新解说申请,请及时上后台系统审批。"; string qqgroup1 = "925510646"; var atuserqq1 = "235593230"; try { var message1 = new MessageBuilder().Add(new AtSegment(atuserqq1)).Text(mesg1).Build(); await runbot.runbotr.SendMessageAsync(MessageEnvironment.Channel, qqgroup1, null, message1, qqgroup1); }catch (Exception e) { return Ok(new error_mb { code = 200, message = "提交成功但是信息没有成功发出" }); } return Ok(new error_mb { code = 200, message = "提交成功" }); } var query = sub.T_Comform.Find(msg.id); if (query == null) { return Ok(new error_mb { code = 404, message = "记录未找到" }); } query.chinaname = msg.chinaname; query.user_id = msg.userId; query.sex = msg.sex; query.introduction = msg.introduction; query.game_id = msg.gameId; query.history_rank = msg.historyRank; query.contact_number = msg.contactNumber; query.create_time = dateString; query.status = "1"; query.biz_type = msg.bizType; query.req_role = msg.reqRole; query.intro_url = msg.introUrl; await sub.SaveChangesAsync(); string mesg = $"[ASG管理系统]有新解说申请,请及时上后台系统审批。"; string qqgroup = "925510646"; var atuserqq = "235593230"; try { var message = new MessageBuilder().Add(new AtSegment(atuserqq)).Text(mesg).Build(); await runbot.runbotr.SendMessageAsync(MessageEnvironment.Channel, qqgroup, null, message, qqgroup); } catch (Exception e) { return Ok(new error_mb { code = 200, message = "提交成功但是信息没有成功发出" }); } return Ok(new error_mb { code = 200, message = "成功修改" }); } } public class approveStatus { public string status { get; set; } public int id { get; set; } public string approvalPerson { get; set; } } [Route("/api/v1/admin/approval")] [HttpPost] [Authorize] public async Task> Approve([FromBody] approveStatus msg) { if (!this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "nbadmin")&& !this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { return Ok(new error_mb { code = 401, message = "无权访问" }); } var dateString = DateTime.Now; using (TestDbContext sub = new TestDbContext()) { var form = sub.T_Comform.Find(msg.id); if (form == null) { return Ok(new error_mb { code = 400, message = "不存在这个报名" }); } form.status = msg.status; form.approval_time = dateString.ToString(); form.approval_person = msg.approvalPerson; var result = new { code = 200, message = "", chinaName = form.chinaname, userId = form.user_id, sex = form.sex, introduction = form.introduction, gameId = form.game_id, historyRank = form.history_rank, createTime = form.create_time, approvalPerson = form.approval_person, approvalTime = form.approval_time, status = form.status, reqRole = form.req_role, }; await sub.SaveChangesAsync(); return Ok(new { code = 200, message = "成功修改", data = result }); } } [Route("/api/v1/admin/findRegister")] [HttpGet] [Authorize] public async Task> GetLists([FromQuery] string chinaname = null, string status = null, short page = 1, short limit = 10) { if (!this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "nbadmin")&& !this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { return Ok(new error_mb { code = 401, message = "无权访问" }); } using (TestDbContext sub = new TestDbContext()) { var query = sub.T_Comform.AsQueryable(); if (!string.IsNullOrEmpty(chinaname)) { query = query.Where(n => n.chinaname.Contains(chinaname)); } if (!string.IsNullOrEmpty(status)) { query = query.Where(n => n.status == status); } var TotalRecords = await query.CountAsync(); var Tasks = await query .OrderByDescending(t => t.status == "1" ? 3 : t.status == "5" ? 2 : t.status == "3" ? 1 : t.status == "2" ? 0 : 10) .Skip((page - 1) * limit) .Take(limit) .ToListAsync(); var result = new { rows = Tasks, total = TotalRecords, }; return Ok(result); } } [Route("/api/v1/userMsg")] [HttpGet] [Authorize] public async Task> Mymsgs([FromQuery] int userid) { using (TestDbContext sub = new TestDbContext()) { var query = sub.T_Comform.AsQueryable() .Where(n => n.user_id == userid) .OrderByDescending(a => a.user_id); var result = await query.ToListAsync(); return Ok(new { code=200,data = result }); } } [Route("api/v1/admin/refuseCom")] [HttpGet] [Authorize] public async Task> refuse_com(int userId) { if (this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { using (TestDbContext testDb = new TestDbContext()) { try { var query = testDb.T_Comform.FirstOrDefault(c => c.user_id == userId); var user = await userManager.Users.FirstOrDefaultAsync(u => u.Id == userId); if (user == null) return Ok(new { code = 404, message = "用户未找到" }); if (query != null) {query.status = "4"; } user.officium = null; await testDb.SaveChangesAsync(); await userManager.UpdateAsync(user); return Ok(new { code = 200, message = "修改成功" }); }catch (Exception ex) { return Ok(new { code = 500, message = "服务器错误" }); } } } return Ok(new error_mb { code = 401, message = "没有管理员,无法设置" }); } /// /// 根据主键id找申请表所有内容T_Comform /// [Route("api/v1/admin/findFormById")] [HttpGet] [Authorize] public async Task> find_by_id(int Id) { string userId = this.User.FindFirst(ClaimTypes.NameIdentifier)!.Value; var user = await userManager.FindByIdAsync(userId); if (!this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin")) { return Ok(new error_mb { code = 401, message = "无权访问" }); } using (TestDbContext sub = new TestDbContext()) { var query = await sub.T_Comform.FirstOrDefaultAsync(n => n.id == Id); return Ok(new { code = 200, data = query }); } } } }