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; /// /// 宠物管理控制器(后台) /// [Route("api/[controller]")] [ApiController] [ApiExplorerSettings(GroupName = nameof(ApiVersionEnum.Platform))] public class PetManageController : BaseController { private readonly IPetService _petService; private readonly ILogger _logger; public PetManageController(IPetService petService, ILogger logger) { _petService = petService; _logger = logger; } // ==================== 宠物模板管理 ==================== /// /// 创建宠物模板 /// [HttpPost] public async Task> 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.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "创建宠物模板系统异常"); return BaseResponse.Fail("创建宠物模板失败,请稍后重试"); } } /// /// 更新宠物模板 /// [HttpPut("{id}")] public async Task> 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.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "更新宠物模板系统异常,ID:{Id}", id); return BaseResponse.Fail("更新宠物模板失败,请稍后重试"); } } /// /// 删除宠物模板 /// [HttpDelete("{id}")] public async Task> DeleteTemplateAsync(long id) { try { await _petService.DeleteTemplateAsync(id); return Success(new object(), "删除宠物模板成功"); } catch (BusinessException ex) { _logger.LogWarning(ex, "删除宠物模板业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "删除宠物模板系统异常,ID:{Id}", id); return BaseResponse.Fail("删除宠物模板失败,请稍后重试"); } } /// /// 获取单个宠物模板 /// [HttpGet("{id}")] public async Task> GetTemplateByIdAsync(long id) { try { var result = await _petService.GetTemplateByIdAsync(id); return Success(result); } catch (BusinessException ex) { _logger.LogWarning(ex, "获取宠物模板业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "获取宠物模板系统异常,ID:{Id}", id); return BaseResponse.Fail("获取宠物模板失败,请稍后重试"); } } /// /// 分页查询宠物模板列表 /// [HttpPost("list")] public async Task>> 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>.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "查询宠物模板列表系统异常"); return BaseResponse>.Fail("查询宠物模板列表失败,请稍后重试"); } } /// /// 更新宠物模板状态(启用/禁用) /// [HttpPut("{id}/status")] public async Task> 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.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "更新模板状态系统异常,ID:{Id}", id); return BaseResponse.Fail("更新模板状态失败,请稍后重试"); } } // ==================== 进化链管理 ==================== /// /// 创建进化阶段 /// [HttpPost("evolution")] public async Task> 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.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "创建进化阶段系统异常"); return BaseResponse.Fail("创建进化阶段失败,请稍后重试"); } } /// /// 更新进化阶段 /// [HttpPut("evolution/{id}")] public async Task> 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.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "更新进化阶段系统异常,ID:{Id}", id); return BaseResponse.Fail("更新进化阶段失败,请稍后重试"); } } /// /// 删除进化阶段 /// [HttpDelete("evolution/{id}")] public async Task> DeleteEvolutionAsync(long id) { try { await _petService.DeleteEvolutionAsync(id); return Success(new object(), "删除进化阶段成功"); } catch (BusinessException ex) { _logger.LogWarning(ex, "删除进化阶段业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "删除进化阶段系统异常,ID:{Id}", id); return BaseResponse.Fail("删除进化阶段失败,请稍后重试"); } } /// /// 获取单个进化阶段 /// [HttpGet("evolution/{id}")] public async Task> GetEvolutionByIdAsync(long id) { try { var result = await _petService.GetEvolutionByIdAsync(id); return Success(result); } catch (BusinessException ex) { _logger.LogWarning(ex, "获取进化阶段业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "获取进化阶段系统异常,ID:{Id}", id); return BaseResponse.Fail("获取进化阶段失败,请稍后重试"); } } /// /// 分页查询进化阶段列表 /// [HttpPost("evolution/list")] public async Task>> 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>.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "查询进化阶段列表系统异常"); return BaseResponse>.Fail("查询进化阶段列表失败,请稍后重试"); } } // ==================== 皮肤管理 ==================== /// /// 创建皮肤 /// [HttpPost("skin")] public async Task> 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.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "创建皮肤系统异常"); return BaseResponse.Fail("创建皮肤失败,请稍后重试"); } } /// /// 更新皮肤 /// [HttpPut("skin/{id}")] public async Task> 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.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "更新皮肤系统异常,ID:{Id}", id); return BaseResponse.Fail("更新皮肤失败,请稍后重试"); } } /// /// 删除皮肤 /// [HttpDelete("skin/{id}")] public async Task> DeleteSkinAsync(long id) { try { await _petService.DeleteSkinAsync(id); return Success(new object(), "删除皮肤成功"); } catch (BusinessException ex) { _logger.LogWarning(ex, "删除皮肤业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "删除皮肤系统异常,ID:{Id}", id); return BaseResponse.Fail("删除皮肤失败,请稍后重试"); } } /// /// 获取单个皮肤(含图片列表) /// [HttpGet("skin/{id}")] public async Task> GetSkinByIdAsync(long id) { try { var result = await _petService.GetSkinByIdAsync(id); return Success(result); } catch (BusinessException ex) { _logger.LogWarning(ex, "获取皮肤业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "获取皮肤系统异常,ID:{Id}", id); return BaseResponse.Fail("获取皮肤失败,请稍后重试"); } } /// /// 分页查询皮肤列表 /// [HttpPost("skin/list")] public async Task>> 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>.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "查询皮肤列表系统异常"); return BaseResponse>.Fail("查询皮肤列表失败,请稍后重试"); } } // ==================== 皮肤图片管理 ==================== /// /// 创建皮肤图片 /// [HttpPost("skin-image")] public async Task> 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.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "创建皮肤图片系统异常"); return BaseResponse.Fail("创建皮肤图片失败,请稍后重试"); } } /// /// 更新皮肤图片 /// [HttpPut("skin-image/{id}")] public async Task> 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.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "更新皮肤图片系统异常,ID:{Id}", id); return BaseResponse.Fail("更新皮肤图片失败,请稍后重试"); } } /// /// 删除皮肤图片 /// [HttpDelete("skin-image/{id}")] public async Task> DeleteSkinImageAsync(long id) { try { await _petService.DeleteSkinImageAsync(id); return Success(new object(), "删除皮肤图片成功"); } catch (BusinessException ex) { _logger.LogWarning(ex, "删除皮肤图片业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "删除皮肤图片系统异常,ID:{Id}", id); return BaseResponse.Fail("删除皮肤图片失败,请稍后重试"); } } /// /// 获取指定皮肤的所有图片 /// [HttpGet("skin-images/{skinId}")] public async Task>> GetSkinImagesAsync(long skinId) { try { var result = await _petService.GetSkinImagesBySkinIdAsync(skinId); return Success(result); } catch (BusinessException ex) { _logger.LogWarning(ex, "获取皮肤图片列表业务异常: {Message}", ex.Message); return BaseResponse>.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "获取皮肤图片列表系统异常,SkinId:{SkinId}", skinId); return BaseResponse>.Fail("获取皮肤图片列表失败,请稍后重试"); } } }