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; } } public class BlackController : ControllerBase { private readonly RoleManager roleManager; private readonly UserManager userManager; public BlackController( RoleManager roleManager, UserManager userManager) { this.roleManager = roleManager; this.userManager = userManager; } /// /// 增加信息 /// /// /// [Route("api/v1/blackTable/Add")] [HttpPost] [Authorize] public async Task> 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); } } } /// /// 更新信息 /// /// /// [Route("api/v1/blackTable/Update")] [HttpPost] [Authorize] public async Task> 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) { if (datas.recordTime!=null) dataAvb.record_time = datas.recordTime; if (datas.violator != null) dataAvb.violator = datas.violator; if (dataAvb.platform_record != null) dataAvb.platform_record =dataAvb.platform_record; if (dataAvb.offending_details != null) dataAvb.offending_details = dataAvb.offending_details; if (dataAvb.platform_record != null) 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 = "记录不存在!" }); } } /// /// 删除信息 /// /// /// [Route("api/v1/blackTable/Del")] [HttpDelete] [Authorize] public async Task> blackDel([FromQuery] string idFind) { if (!this.User.FindAll(ClaimTypes.Role).Any(a => a.Value == "admin") || !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> FindBlacks([FromQuery]string recordYear = null,string violator=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 .Where(g => (recordYear==null || g.record_time.Contains(recordYear)) && (g.violator==violator || violator==null)) .OrderByDescending(n => n.record_time) .Skip((page - 1) * limit) .Take(limit) .ToListAsync(); var data = new { rows = Tasks, total = TotalRecords, }; return Ok(new { code = 200, message = " ", data }); } } } }