Files
QYZH.InteractiveMagazine/QYZH.InteractiveMagazine.WebApi/Controllers/PetManageController.cs
glz 0126c6b097 refactor: 完善枚举系统与状态类型转换,新增枚举管理接口
1. 为所有枚举添加Description特性用于中文描述
2. 移除实体类中冗余的状态字段注释与定义
3. 将所有枚举状态参数改为int类型转换,统一数据交互格式
4. 新增系统管理枚举查询接口与实现,支持获取所有枚举元数据
5. 调整宠物服务模板状态更新接口参数类型
2026-06-08 17:54:36 +08:00

495 lines
17 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Microsoft.AspNetCore.Mvc;
using QYZH.InteractiveMagazine.IService;
using QYZH.InteractiveMagazine.Models.Common;
using QYZH.InteractiveMagazine.Models.Dto;
using QYZH.InteractiveMagazine.Models.Dto.Pet;
using QYZH.InteractiveMagazine.Models.Enum;
namespace QYZH.InteractiveMagazine.WebApi.Controllers;
/// <summary>
/// 宠物管理控制器(后台)
/// </summary>
[Route("api/[controller]")]
[ApiController]
[ApiExplorerSettings(GroupName = nameof(ApiVersionEnum.Platform))]
public class PetManageController : BaseController
{
private readonly IPetService _petService;
private readonly ILogger<PetManageController> _logger;
public PetManageController(IPetService petService, ILogger<PetManageController> logger)
{
_petService = petService;
_logger = logger;
}
// ==================== 宠物模板管理 ====================
/// <summary>
/// 创建宠物模板
/// </summary>
[HttpPost]
public async Task<BaseResponse<PetTemplateOutput>> CreateTemplateAsync([FromBody] PetTemplateInput input)
{
try
{
var result = await _petService.CreateTemplateAsync(input);
return Success(result, "创建宠物模板成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "创建宠物模板业务异常: {Message}", ex.Message);
return BaseResponse<PetTemplateOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "创建宠物模板系统异常");
return BaseResponse<PetTemplateOutput>.Fail("创建宠物模板失败,请稍后重试");
}
}
/// <summary>
/// 更新宠物模板
/// </summary>
[HttpPut("{id}")]
public async Task<BaseResponse<PetTemplateOutput>> UpdateTemplateAsync(long id, [FromBody] PetTemplateInput input)
{
try
{
var result = await _petService.UpdateTemplateAsync(id, input);
return Success(result, "更新宠物模板成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "更新宠物模板业务异常: {Message}", ex.Message);
return BaseResponse<PetTemplateOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "更新宠物模板系统异常ID{Id}", id);
return BaseResponse<PetTemplateOutput>.Fail("更新宠物模板失败,请稍后重试");
}
}
/// <summary>
/// 删除宠物模板
/// </summary>
[HttpDelete("{id}")]
public async Task<BaseResponse<object>> DeleteTemplateAsync(long id)
{
try
{
await _petService.DeleteTemplateAsync(id);
return Success(new object(), "删除宠物模板成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "删除宠物模板业务异常: {Message}", ex.Message);
return BaseResponse<object>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "删除宠物模板系统异常ID{Id}", id);
return BaseResponse<object>.Fail("删除宠物模板失败,请稍后重试");
}
}
/// <summary>
/// 获取单个宠物模板
/// </summary>
[HttpGet("{id}")]
public async Task<BaseResponse<PetTemplateOutput>> GetTemplateByIdAsync(long id)
{
try
{
var result = await _petService.GetTemplateByIdAsync(id);
return Success(result);
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "获取宠物模板业务异常: {Message}", ex.Message);
return BaseResponse<PetTemplateOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "获取宠物模板系统异常ID{Id}", id);
return BaseResponse<PetTemplateOutput>.Fail("获取宠物模板失败,请稍后重试");
}
}
/// <summary>
/// 分页查询宠物模板列表
/// </summary>
[HttpPost("list")]
public async Task<BaseResponse<PageListModel<PetTemplateOutput>>> GetTemplatesAsync([FromBody] PetTemplateQueryInput input)
{
try
{
var result = await _petService.GetTemplatesAsync(input);
return Success(result);
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "查询宠物模板列表业务异常: {Message}", ex.Message);
return BaseResponse<PageListModel<PetTemplateOutput>>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "查询宠物模板列表系统异常");
return BaseResponse<PageListModel<PetTemplateOutput>>.Fail("查询宠物模板列表失败,请稍后重试");
}
}
/// <summary>
/// 更新宠物模板状态(启用/禁用)
/// </summary>
[HttpPut("{id}/status")]
public async Task<BaseResponse<object>> UpdateTemplateStatusAsync(long id, [FromBody] int status)
{
try
{
await _petService.UpdateTemplateStatusAsync(id, status);
return Success(new object(), "更新状态成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "更新模板状态业务异常: {Message}", ex.Message);
return BaseResponse<object>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "更新模板状态系统异常ID{Id}", id);
return BaseResponse<object>.Fail("更新模板状态失败,请稍后重试");
}
}
// ==================== 进化链管理 ====================
/// <summary>
/// 创建进化阶段
/// </summary>
[HttpPost("evolution")]
public async Task<BaseResponse<PetEvolutionOutput>> CreateEvolutionAsync([FromBody] PetEvolutionInput input)
{
try
{
var result = await _petService.CreateEvolutionAsync(input);
return Success(result, "创建进化阶段成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "创建进化阶段业务异常: {Message}", ex.Message);
return BaseResponse<PetEvolutionOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "创建进化阶段系统异常");
return BaseResponse<PetEvolutionOutput>.Fail("创建进化阶段失败,请稍后重试");
}
}
/// <summary>
/// 更新进化阶段
/// </summary>
[HttpPut("evolution/{id}")]
public async Task<BaseResponse<PetEvolutionOutput>> UpdateEvolutionAsync(long id, [FromBody] PetEvolutionInput input)
{
try
{
var result = await _petService.UpdateEvolutionAsync(id, input);
return Success(result, "更新进化阶段成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "更新进化阶段业务异常: {Message}", ex.Message);
return BaseResponse<PetEvolutionOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "更新进化阶段系统异常ID{Id}", id);
return BaseResponse<PetEvolutionOutput>.Fail("更新进化阶段失败,请稍后重试");
}
}
/// <summary>
/// 删除进化阶段
/// </summary>
[HttpDelete("evolution/{id}")]
public async Task<BaseResponse<object>> DeleteEvolutionAsync(long id)
{
try
{
await _petService.DeleteEvolutionAsync(id);
return Success(new object(), "删除进化阶段成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "删除进化阶段业务异常: {Message}", ex.Message);
return BaseResponse<object>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "删除进化阶段系统异常ID{Id}", id);
return BaseResponse<object>.Fail("删除进化阶段失败,请稍后重试");
}
}
/// <summary>
/// 获取单个进化阶段
/// </summary>
[HttpGet("evolution/{id}")]
public async Task<BaseResponse<PetEvolutionOutput>> GetEvolutionByIdAsync(long id)
{
try
{
var result = await _petService.GetEvolutionByIdAsync(id);
return Success(result);
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "获取进化阶段业务异常: {Message}", ex.Message);
return BaseResponse<PetEvolutionOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "获取进化阶段系统异常ID{Id}", id);
return BaseResponse<PetEvolutionOutput>.Fail("获取进化阶段失败,请稍后重试");
}
}
/// <summary>
/// 分页查询进化阶段列表
/// </summary>
[HttpPost("evolution/list")]
public async Task<BaseResponse<PageListModel<PetEvolutionOutput>>> GetEvolutionsAsync([FromBody] PetEvolutionQueryInput input)
{
try
{
var result = await _petService.GetEvolutionsAsync(input);
return Success(result);
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "查询进化阶段列表业务异常: {Message}", ex.Message);
return BaseResponse<PageListModel<PetEvolutionOutput>>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "查询进化阶段列表系统异常");
return BaseResponse<PageListModel<PetEvolutionOutput>>.Fail("查询进化阶段列表失败,请稍后重试");
}
}
// ==================== 皮肤管理 ====================
/// <summary>
/// 创建皮肤
/// </summary>
[HttpPost("skin")]
public async Task<BaseResponse<PetSkinOutput>> CreateSkinAsync([FromBody] PetSkinInput input)
{
try
{
var result = await _petService.CreateSkinAsync(input);
return Success(result, "创建皮肤成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "创建皮肤业务异常: {Message}", ex.Message);
return BaseResponse<PetSkinOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "创建皮肤系统异常");
return BaseResponse<PetSkinOutput>.Fail("创建皮肤失败,请稍后重试");
}
}
/// <summary>
/// 更新皮肤
/// </summary>
[HttpPut("skin/{id}")]
public async Task<BaseResponse<PetSkinOutput>> UpdateSkinAsync(long id, [FromBody] PetSkinInput input)
{
try
{
var result = await _petService.UpdateSkinAsync(id, input);
return Success(result, "更新皮肤成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "更新皮肤业务异常: {Message}", ex.Message);
return BaseResponse<PetSkinOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "更新皮肤系统异常ID{Id}", id);
return BaseResponse<PetSkinOutput>.Fail("更新皮肤失败,请稍后重试");
}
}
/// <summary>
/// 删除皮肤
/// </summary>
[HttpDelete("skin/{id}")]
public async Task<BaseResponse<object>> DeleteSkinAsync(long id)
{
try
{
await _petService.DeleteSkinAsync(id);
return Success(new object(), "删除皮肤成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "删除皮肤业务异常: {Message}", ex.Message);
return BaseResponse<object>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "删除皮肤系统异常ID{Id}", id);
return BaseResponse<object>.Fail("删除皮肤失败,请稍后重试");
}
}
/// <summary>
/// 获取单个皮肤(含图片列表)
/// </summary>
[HttpGet("skin/{id}")]
public async Task<BaseResponse<PetSkinOutput>> GetSkinByIdAsync(long id)
{
try
{
var result = await _petService.GetSkinByIdAsync(id);
return Success(result);
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "获取皮肤业务异常: {Message}", ex.Message);
return BaseResponse<PetSkinOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "获取皮肤系统异常ID{Id}", id);
return BaseResponse<PetSkinOutput>.Fail("获取皮肤失败,请稍后重试");
}
}
/// <summary>
/// 分页查询皮肤列表
/// </summary>
[HttpPost("skin/list")]
public async Task<BaseResponse<PageListModel<PetSkinOutput>>> GetSkinsAsync([FromBody] PetSkinQueryInput input)
{
try
{
var result = await _petService.GetSkinsAsync(input);
return Success(result);
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "查询皮肤列表业务异常: {Message}", ex.Message);
return BaseResponse<PageListModel<PetSkinOutput>>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "查询皮肤列表系统异常");
return BaseResponse<PageListModel<PetSkinOutput>>.Fail("查询皮肤列表失败,请稍后重试");
}
}
// ==================== 皮肤图片管理 ====================
/// <summary>
/// 创建皮肤图片
/// </summary>
[HttpPost("skin-image")]
public async Task<BaseResponse<PetSkinImageOutput>> CreateSkinImageAsync([FromBody] PetSkinImageInput input)
{
try
{
var result = await _petService.CreateSkinImageAsync(input);
return Success(result, "创建皮肤图片成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "创建皮肤图片业务异常: {Message}", ex.Message);
return BaseResponse<PetSkinImageOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "创建皮肤图片系统异常");
return BaseResponse<PetSkinImageOutput>.Fail("创建皮肤图片失败,请稍后重试");
}
}
/// <summary>
/// 更新皮肤图片
/// </summary>
[HttpPut("skin-image/{id}")]
public async Task<BaseResponse<PetSkinImageOutput>> UpdateSkinImageAsync(long id, [FromBody] PetSkinImageInput input)
{
try
{
var result = await _petService.UpdateSkinImageAsync(id, input);
return Success(result, "更新皮肤图片成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "更新皮肤图片业务异常: {Message}", ex.Message);
return BaseResponse<PetSkinImageOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "更新皮肤图片系统异常ID{Id}", id);
return BaseResponse<PetSkinImageOutput>.Fail("更新皮肤图片失败,请稍后重试");
}
}
/// <summary>
/// 删除皮肤图片
/// </summary>
[HttpDelete("skin-image/{id}")]
public async Task<BaseResponse<object>> DeleteSkinImageAsync(long id)
{
try
{
await _petService.DeleteSkinImageAsync(id);
return Success(new object(), "删除皮肤图片成功");
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "删除皮肤图片业务异常: {Message}", ex.Message);
return BaseResponse<object>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "删除皮肤图片系统异常ID{Id}", id);
return BaseResponse<object>.Fail("删除皮肤图片失败,请稍后重试");
}
}
/// <summary>
/// 获取指定皮肤的所有图片
/// </summary>
[HttpGet("skin-images/{skinId}")]
public async Task<BaseResponse<List<PetSkinImageOutput>>> GetSkinImagesAsync(long skinId)
{
try
{
var result = await _petService.GetSkinImagesBySkinIdAsync(skinId);
return Success(result);
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "获取皮肤图片列表业务异常: {Message}", ex.Message);
return BaseResponse<List<PetSkinImageOutput>>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "获取皮肤图片列表系统异常SkinId{SkinId}", skinId);
return BaseResponse<List<PetSkinImageOutput>>.Fail("获取皮肤图片列表失败,请稍后重试");
}
}
}