添加Qodana配置文件并实现玩家管理功能

This commit is contained in:
罗小澜 2025-09-06 16:19:31 +08:00
parent 2961bd5322
commit 2fd0ca2c64
5 changed files with 205 additions and 0 deletions

View File

@ -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<RoleModel> _roleManager;
private readonly UserManager<UserModel> _userManager; // Assuming UserModel is the type of user
private readonly PlayerService _playerService;
public AdminPlayerControllers(RoleManager<RoleModel> roleManager, UserManager<UserModel> userManager, PlayerService playerService)
{
_roleManager = roleManager;
_userManager = userManager;
_playerService = playerService;
}
[HttpDelete]
public async Task<IActionResult> 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<IActionResult> 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<IActionResult> 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<PlayerModel>()));
}
}
[HttpGet]
public async Task<IActionResult> 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, "出现了错误",""));
}
}
}

View File

@ -10,6 +10,7 @@ namespace AGSS.DbSet
public override DbSet<RoleModel> Roles { get; set; }
public DbSet<DictItem> DictItems { get; set; }
public DbSet<MenuModel> Menus { get; set; }
public DbSet<PlayerModel> Players { get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)

View File

@ -0,0 +1,10 @@
namespace AGSS.Models.Entities
{
public class PagedResult<T>
{
public int TotalItems { get; set; }
public int PageNumber { get; set; }
public int PageSize { get; set; }
public List<T> Items { get; set; } = new List<T>();
}
}

View File

@ -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<bool> 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<bool> 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<bool> DelectPlayerAsync(string PlayerId)
{
var result = await _context.Players.FirstAsync(a => a.Uuid == PlayerId);
_context.Remove(result);
return true;
}
public async Task<PagedResult<PlayerModel>> 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<PlayerModel>
{
TotalItems = totalItems,
PageNumber = pageNumber,
PageSize = pageSize,
Items = players
};
}
}

41
qodana.yaml Normal file
View File

@ -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: <SomeEnabledInspectionId>
#Disable inspections
#exclude:
# - name: <SomeDisabledInspectionId>
# paths:
# - <path/where/not/run/inspection>
#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> #(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