Files
QYZH.InteractiveMagazine/QYZH.InteractiveMagazine.WebApi/Controllers/PetManageController.cs
glz 78b686f9e5 refactor: 批量新增枚举类型并完成实体、DTO、服务层枚举替换
- 新增30+业务枚举类型覆盖用户、宠物、商城、社区、积分等模块
- 完成实体类、DTO、服务层的字符串枚举替换为强类型枚举
- 修复用户状态枚举名称变更,将Frozen改为Disabled
- 新增批量发布社区消息接口与控制器实现
- 新增操作日志、积分管理、补偿任务相关服务与DTO
2026-06-08 16:57:44 +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] string 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("获取皮肤图片列表失败,请稍后重试");
}
}
}