asg_backend/asg_form/Controllers/BlackController.cs
2025-02-05 21:09:37 +08:00

194 lines
7.2 KiB
C#

using AsmResolver.PE.DotNet.Cil;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Security.Claims;
using static asg_form.Controllers.AssignmentController;
namespace asg_form.Controllers
{
public class BlackDB
{
public Guid id { get; set; }
public string record_time { get; set; }
public string violator { get; set; }
public string platform_record { get; set; }
public string offending_details { get; set; }
public string processing_result { get; set; }
public string feature_id { get; set; }
public string recorder { get; set; }
}
public class BlackFront
{
public string recordTime { get; set; }
public string violator { get; set; }
public string platformRecord { get; set; }
public string offendingDetails { get; set; }
public string processingResult { get; set; }
public string featureId { get; set; }
}
public class BlackChange
{
public string id { get; set; }
public string recordTime { get; set; }
public string violator { get; set; }
public string platformRecord { get; set; }
public string offendingDetails { get; set; }
public string processingResult { get; set; }
public string featureId { get; set; }
}
[ApiController]
public class BlackController : ControllerBase
{
private readonly RoleManager<Role> roleManager;
private readonly UserManager<User> userManager;
public BlackController(
RoleManager<Role> roleManager, UserManager<User> userManager)
{
this.roleManager = roleManager;
this.userManager = userManager;
}
/// <summary>
/// 增加信息
/// </summary>
/// <param name="datas"></param>
/// <returns></returns>
[Route("api/v1/blackTable/Add")]
[HttpPost]
[Authorize]
public async Task<ActionResult<object>> blackAdd ([FromBody] BlackFront datas)
{
string userId = this.User.FindFirst(ClaimTypes.NameIdentifier)!.Value;
var user = await userManager.FindByIdAsync(userId);
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())
{
try
{
var blackp = new BlackDB
{
record_time = datas.recordTime,
violator = datas.violator,
platform_record = datas.platformRecord,
offending_details = datas.offendingDetails,
processing_result = datas.processingResult,
feature_id = datas.featureId,
recorder = user.chinaname,
};
try
{
sub.T_blacks.Add(blackp);
await sub.SaveChangesAsync();
return Ok(new error_mb { code = 200, message = "添加黑名单人员成功!" });
}
catch (Exception ex)
{
return Ok(new { code = 500, message = "服务器错误", details = ex });
}
}
catch (Exception ex)
{
return BadRequest(ex);
}
}
}
/// <summary>
/// 更新信息
/// </summary>
/// <param name="datas"></param>
/// <returns></returns>
[Route("api/v1/blackTable/Update")]
[HttpPost]
[Authorize]
public async Task<ActionResult<object>> blackUpd([FromBody] BlackChange datas)
{
string userId = this.User.FindFirst(ClaimTypes.NameIdentifier)!.Value;
var user = await userManager.FindByIdAsync(userId);
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 dataAvb = sub.T_blacks.FirstOrDefault(n => n.id.ToString() == datas.id);
if(dataAvb!=null)
{
dataAvb.record_time = datas.recordTime;
dataAvb.violator = datas.violator;
dataAvb.platform_record =dataAvb.platform_record;
dataAvb.offending_details = dataAvb.offending_details;
dataAvb.platform_record = dataAvb.platform_record;
dataAvb.recorder = user.chinaname;
await sub.SaveChangesAsync();
return Ok(new error_mb { code = 200, message = "成功修改" });
}
return Ok(new { code = 200, message = "记录不存在!" });
}
}
/// <summary>
/// 删除信息
/// </summary>
/// <param name="idFind"></param>
/// <returns></returns>
[Route("api/v1/blackTable/Del")]
[HttpDelete]
[Authorize]
public async Task<ActionResult<object>> blackDel([FromQuery] string idFind)
{
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 dataAvb = sub.T_blacks.FirstOrDefault(n => n.id.ToString() == idFind);
if (dataAvb != null)
{
sub.T_blacks.Remove(dataAvb);
await sub.SaveChangesAsync();
return Ok(new error_mb { code = 200, message = "成功删除" });
}
return Ok(new { code = 200, message = "没有这个记录!" });
}
}
[Route("api/v1/admin/FindBlacks")]
[HttpGet]
public async Task<ActionResult<object>> FindBlacks([FromQuery]string status = null, short page = 1, short limit = 10)
{
using (TestDbContext sub = new TestDbContext())
{
var query = sub.T_blacks.AsQueryable();
var TotalRecords = await query.CountAsync();
var Tasks = await query
.Skip((page - 1) * limit)
.Take(limit)
.ToListAsync();
var data = new
{
rows = Tasks,
total = TotalRecords,
};
return Ok(new { code = 200, message = " ", data });
}
}
}
}