258 lines
9.8 KiB
C#
258 lines
9.8 KiB
C#
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;
|
||
|
||
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 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 class RegisterController : ControllerBase
|
||
{
|
||
private readonly RoleManager<Role> roleManager;
|
||
private readonly UserManager<User> userManager;
|
||
public RegisterController(
|
||
RoleManager<Role> roleManager, UserManager<User> userManager)
|
||
{
|
||
this.roleManager = roleManager;
|
||
this.userManager = userManager;
|
||
}
|
||
|
||
[Route("/api/v1/userRegister")]
|
||
[HttpPost]
|
||
[Authorize]
|
||
public async Task<ActionResult<object>> UserRgst([FromBody] userMsg msg)
|
||
{
|
||
|
||
using (TestDbContext sub = new TestDbContext())
|
||
{
|
||
if (msg.userId == null)
|
||
{
|
||
return Ok(new error_mb { code = 400, message = "用户ID为空" });
|
||
}
|
||
|
||
if (sub.T_Comform.Find(msg.userId) != null)
|
||
{
|
||
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 = "未审核"
|
||
};
|
||
sub.T_Comform.Add(rgst);
|
||
await sub.SaveChangesAsync();
|
||
string mesg = $"[ASG管理系统]有新解说申请,请及时上后台系统审批。";
|
||
string qqgroup = "925510646";
|
||
var atuserqq = "235593230";
|
||
var message = new MessageBuilder().Add(new AtSegment(atuserqq)).Text(mesg).Build();
|
||
await runbot.runbotr.SendMessageAsync(MessageEnvironment.Channel, qqgroup, null, message, qqgroup);
|
||
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";
|
||
await sub.SaveChangesAsync();
|
||
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<ActionResult<object>> 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
|
||
};
|
||
await sub.SaveChangesAsync();
|
||
return Ok(new { code = 200, message = "成功修改", data = result });
|
||
}
|
||
}
|
||
|
||
[Route("/api/v1/admin/findRegister")]
|
||
[HttpGet]
|
||
[Authorize]
|
||
public async Task<ActionResult<object>> 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
|
||
.OrderBy(a => a.status)
|
||
.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<ActionResult<object>> 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<ActionResult<string>> 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 (query == null ) return Ok(new { code = 404, message = "用户1未找到" });
|
||
if (user == null) return Ok(new { code = 404, message = "用户2未找到" });
|
||
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 = "没有管理员,无法设置" });
|
||
}
|
||
}
|
||
}
|