From 2fd0ca2c64671cd5a945a3d6d9189caf1fbf06ce Mon Sep 17 00:00:00 2001 From: luolan Date: Sat, 6 Sep 2025 16:19:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Qodana=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=B9=B6=E5=AE=9E=E7=8E=B0=E7=8E=A9=E5=AE=B6?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/AdminPlayerControllers.cs | 96 +++++++++++++++++++ AGSS/DbSet/UserSet.cs | 1 + AGSS/Models/Entities/PagedResult.cs | 10 ++ AGSS/Services/PlayerService.cs | 57 +++++++++++ qodana.yaml | 41 ++++++++ 5 files changed, 205 insertions(+) create mode 100644 AGSS/Controllers/Admin/AdminPlayerControllers.cs create mode 100644 AGSS/Models/Entities/PagedResult.cs create mode 100644 AGSS/Services/PlayerService.cs create mode 100644 qodana.yaml diff --git a/AGSS/Controllers/Admin/AdminPlayerControllers.cs b/AGSS/Controllers/Admin/AdminPlayerControllers.cs new file mode 100644 index 0000000..e352a4e --- /dev/null +++ b/AGSS/Controllers/Admin/AdminPlayerControllers.cs @@ -0,0 +1,96 @@ +using AGSS.Models.Entities; +using AGSS.Models.Template; +using AGSS.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; + +namespace AGSS.Controllers.Admin; + + +[Authorize(Roles = "Admin")] +[Route("api/v1/[controller]")] +public class AdminPlayerControllers:ControllerBase +{ + private readonly RoleManager _roleManager; + + + private readonly UserManager _userManager; // Assuming UserModel is the type of user + + private readonly PlayerService _playerService; + public AdminPlayerControllers(RoleManager roleManager, UserManager userManager, PlayerService playerService) + { + _roleManager = roleManager; + _userManager = userManager; + _playerService = playerService; + } + + + [HttpDelete] + public async Task DelPlayer(string id) + { + try + { + + await _playerService.DelectPlayerAsync(id); + return Ok(new ReturnTemplate(200,"删除成功!","")); + + } + catch (Exception e) + { + Console.WriteLine(e); + return Ok(new ReturnTemplate(500, "出现了错误", "")); + } + + + } + [HttpPost] + public async Task NewPlayer(PlayerModel player) + { + try + { + + await _playerService.CreatePlayerAsync(player); + return Ok(new ReturnTemplate(200, "你已经新建了player", player)); + + } + catch (Exception e) + { + Console.WriteLine(e); + return Ok(new ReturnTemplate(500, "出现了错误", "")); + } + + + } + [HttpGet("Page")] + public async Task GetPlayers([FromQuery] int pageNumber, [FromQuery] int pageSize) + { + try + { + var pagedResult = await _playerService.GetPlayersAsync(pageNumber, pageSize); + return Ok(new ReturnTemplate(200, "成功获取玩家列表", pagedResult)); + } + catch (Exception e) + { + Console.WriteLine(e); + return Ok(new ReturnTemplate(500, "出现了错误", new PagedResult())); + } + } + [HttpGet] + public async Task UpdatePlayer([FromBody]PlayerModel player) + { + try + { + var result = await _playerService.UpdatePlayerAsync(player); + return Ok(new ReturnTemplate(500, "更新成功","")); + } + catch (Exception e) + { + Console.WriteLine(e); + return Ok(new ReturnTemplate(500, "出现了错误","")); + + } + + } + +} \ No newline at end of file diff --git a/AGSS/DbSet/UserSet.cs b/AGSS/DbSet/UserSet.cs index 52ea038..35a3ed6 100644 --- a/AGSS/DbSet/UserSet.cs +++ b/AGSS/DbSet/UserSet.cs @@ -10,6 +10,7 @@ namespace AGSS.DbSet public override DbSet Roles { get; set; } public DbSet DictItems { get; set; } public DbSet Menus { get; set; } + public DbSet Players { get; set; } public ApplicationDbContext(DbContextOptions options) : base(options) diff --git a/AGSS/Models/Entities/PagedResult.cs b/AGSS/Models/Entities/PagedResult.cs new file mode 100644 index 0000000..53f5ca1 --- /dev/null +++ b/AGSS/Models/Entities/PagedResult.cs @@ -0,0 +1,10 @@ +namespace AGSS.Models.Entities +{ + public class PagedResult + { + public int TotalItems { get; set; } + public int PageNumber { get; set; } + public int PageSize { get; set; } + public List Items { get; set; } = new List(); + } +} diff --git a/AGSS/Services/PlayerService.cs b/AGSS/Services/PlayerService.cs new file mode 100644 index 0000000..d4915e0 --- /dev/null +++ b/AGSS/Services/PlayerService.cs @@ -0,0 +1,57 @@ +using AGSS.DbSet; +using AGSS.Models.Entities; +using Microsoft.EntityFrameworkCore; + +namespace AGSS.Services; + +public class PlayerService +{ + + private readonly ApplicationDbContext _context; + + public PlayerService(ApplicationDbContext context) + { + _context = context; + } + + public async Task CreatePlayerAsync(PlayerModel player) + { + var result= await _context.Players.AddAsync(new PlayerModel() + { + Name = player.Name, + Asset = player.Asset, + Description = player.Description, + }); + return true; + } + public async Task UpdatePlayerAsync(PlayerModel player) + { + var result = await _context.Players.FirstAsync(a => a.Uuid == player.Uuid); + result.Name = player.Name; + result.Asset = player.Asset; + result.Description = player.Description; + await _context.SaveChangesAsync(); + return true; + } + public async Task DelectPlayerAsync(string PlayerId) + { + var result = await _context.Players.FirstAsync(a => a.Uuid == PlayerId); + _context.Remove(result); + return true; + } + public async Task> GetPlayersAsync(int pageNumber, int pageSize) + { + var totalItems = await _context.Players.CountAsync(); + var skip = (pageNumber - 1) * pageSize; + var players = await _context.Players.Skip(skip).Take(pageSize).ToListAsync(); + return new PagedResult + { + TotalItems = totalItems, + PageNumber = pageNumber, + PageSize = pageSize, + Items = players + }; + } + + +} \ No newline at end of file diff --git a/qodana.yaml b/qodana.yaml new file mode 100644 index 0000000..c871fc3 --- /dev/null +++ b/qodana.yaml @@ -0,0 +1,41 @@ +#-------------------------------------------------------------------------------# +# Qodana analysis is configured by qodana.yaml file # +# https://www.jetbrains.com/help/qodana/qodana-yaml.html # +#-------------------------------------------------------------------------------# +version: "1.0" + +#Specify IDE code to run analysis without container (Applied in CI/CD pipeline) +ide: QDNET + +#Specify inspection profile for code analysis +profile: + name: qodana.starter + +#Enable inspections +#include: +# - name: + +#Disable inspections +#exclude: +# - name: +# paths: +# - + +#Execute shell command before Qodana execution (Applied in CI/CD pipeline) +#bootstrap: sh ./prepare-qodana.sh + +#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline) +#plugins: +# - id: #(plugin id can be found at https://plugins.jetbrains.com) + +# Quality gate. Will fail the CI/CD pipeline if any condition is not met +# severityThresholds - configures maximum thresholds for different problem severities +# testCoverageThresholds - configures minimum code coverage on a whole project and newly added code +# Code Coverage is available in Ultimate and Ultimate Plus plans +#failureConditions: +# severityThresholds: +# any: 15 +# critical: 5 +# testCoverageThresholds: +# fresh: 70 +# total: 50