This commit is contained in:
王炜翔 2024-08-10 14:18:17 +08:00
parent 9c12fcb612
commit 0476e13241

View File

@ -19,6 +19,8 @@ using NPOI.OpenXmlFormats.Spreadsheet;
using Mirai.Net.Data.Shared;
using MimeKit;
using MailKit.Net.Smtp;
using Mirai.Net.Utils.Scaffolds;
using Mirai.Net.Sessions.Http.Managers;
namespace asg_form.Controllers
{
@ -89,32 +91,6 @@ namespace asg_form.Controllers
}
[Route("api/v1/admin/qianyi")]
[HttpPost]
public async Task<ActionResult<object>> qianyi()
{
using (TestDbContext db = new TestDbContext())
{
await db.Database.MigrateAsync();
db.RemoveRange(delform);
await db.SaveChangesAsync();
}
return Ok();
}
[Route("api/v1/admin/deljunk")]
[HttpPost]
public async Task<ActionResult<object>> deljunk()
{
using(TestDbContext db=new TestDbContext())
{
db.Database.SetCommandTimeout(2000);
var delform = db.Forms.Include(a => a.role).Where(a => a.team_name.Length >= 25);
db.RemoveRange(delform);
await db.SaveChangesAsync();
}
return Ok();
}
[Route("api/v1/admin/Privacy_Policy")]
[HttpPost]
@ -135,6 +111,42 @@ namespace asg_form.Controllers
}
[Route("api/v1/admin/post_qqbotmsg")]
[HttpPost]
[Authorize]
public async Task<ActionResult<object>> post_qqbotmsg([FromBody] string msg,string qqgrope,bool is_atall)
{
if (!this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin"))
{
return BadRequest(new error_mb { code = 400, message = "无权访问" });
}
if(is_atall){
var messageChain = new MessageChainBuilder()
.AtAll()
.Plain(msg)
.Build();
await MessageManager.SendGroupMessageAsync(qqgrope, messageChain);
}
else{
var messageChain = new MessageChainBuilder()
.Plain(msg)
.Build();
await MessageManager.SendGroupMessageAsync(qqgrope, messageChain);
}
return Ok("成功!");
}
[Route("api/v1/admin/allschedle_c")]
[HttpGet]
[Authorize]
@ -192,6 +204,95 @@ namespace asg_form.Controllers
}
/// <summary>
/// 获取所有用户-支持分页(整合api:allperson_c)
/// </summary>
/// <param name="page"></param>
/// <param name="page_long"></param>
/// <param name="keyword"></param>
/// <returns></returns>
[Route("api/v2/admin/allperson")]
[HttpGet]
[Authorize]
public async Task<ActionResult<post_user_v2>> getalladmin_v2(string? keyword, short page, short page_long = 10)
{
if (this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin"))
{
List<User> users = new List<User>();
post_user_v2 user = new post_user_v2();
if (keyword == null)
{
int a = userManager.Users.Count();
user.Count = a;
int b = page_long * page;
if (page_long * page > a)
{
b = a;
}
users = userManager.Users.Skip(page_long * page - page_long).Take(page_long).ToList();
}
else
{
int a = userManager.Users.Where(a => a.UserName.IndexOf(keyword) >= 0 || a.chinaname.IndexOf(keyword) >= 0 || a.Email.IndexOf(keyword) >= 0).Count();
user.Count = a;
int b = page_long * page;
if (page_long * page > a)
{
b = a;
}
users = userManager.Users.Where(a => a.UserName.IndexOf(keyword) >= 0 || a.chinaname.IndexOf(keyword) >= 0 || a.Email.IndexOf(keyword) >= 0).Skip(page_long * page - page_long).Take(page_long).ToList();
}
foreach (var auser in users)
{
bool isadmin = await userManager.IsInRoleAsync(auser, "admin");
var roles = await userManager.GetRolesAsync(auser);
try
{
// user.user.Add(new post_user { id = auser.Id, chinaname = auser.chinaname, name = auser.UserName, isadmin = isadmin, email = auser.Email, Roles = (List<string>)roles, officium = auser.officium, Integral = auser.Integral });
}
catch
{
}
}
return user;
}
else
{
return BadRequest(new error_mb { code = 400, message = "无权访问" });
}
}
public class post_user_v2
{
public int Count { get; set; }
public List<post_user> user { get; set; } = new List<post_user>();
}
/// <summary>
/// 设置管理员,需要superadmin
/// </summary>
@ -207,7 +308,8 @@ namespace asg_form.Controllers
var ouser = await userManager.FindByIdAsync(userid);
await userManager.AddToRoleAsync(ouser, "admin");
return "成功!";
return Ok(new { message = "用户成功设置为管理员" });
}
else
{
@ -525,16 +627,29 @@ namespace asg_form.Controllers
/// <returns></returns>
[Route("api/v1/admin/form/")]
[HttpDelete]
public async Task<ActionResult<string>> delform(string formname)
public async Task<ActionResult<string>> delform(int formid)
{
if (this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin"))
{
TestDbContext ctx = new TestDbContext();
var form = await ctx.Forms.Include(a=>a.role).FirstOrDefaultAsync(a => a.team_name == formname);
var form = await ctx.Forms.Include(a => a.role).FirstOrDefaultAsync(a => a.Id == formid);
var users = await userManager.Users.Include(a => a.haveform).Where(a => a.haveform == form).ToListAsync();
try
{
foreach (var user in users)
{
user.haveform = null;
await userManager.UpdateAsync(user);
}
}
catch
{
}
ctx.Forms.Remove(form); ;
await ctx.SaveChangesAsync();
logger.Warn($"管理员删除了表单{formname},参赛选手:{string.Join(',',form.role.Select(a=>a.role_name))}");
logger.Warn($"管理员删除了表单{formid},参赛选手:{string.Join(',', form.role.Select(a => a.role_name))}");
return Ok("删除成功!");
}
else