using Microsoft.AspNetCore.Mvc; using QYZH.InteractiveMagazine.IService; using QYZH.InteractiveMagazine.Models.Common; using QYZH.InteractiveMagazine.Models.Dto; using QYZH.InteractiveMagazine.Models.Dto.Pet; namespace QYZH.InteractiveMagazine.WeChatApi.Controllers; /// /// 小程序宠物管理控制器 /// public class PetController : WeChatBaseController { private readonly IPetService _petService; private readonly ILogger _logger; public PetController(IPetService petService, ILogger logger) { _petService = petService; _logger = logger; } /// /// 获取当前用户的宠物信息 /// [HttpGet("mine")] public async Task> GetMyPetAsync() { try { var userId = GetCurrentUserId(); if (userId == 0) { return BaseResponse.Fail(ResultCode.DENY, "未获取到用户信息"); } var pet = await _petService.GetPetByUserIdAsync(userId); if (pet == null) { return BaseResponse.Fail("未找到宠物信息"); } return Success(pet); } catch (BusinessException ex) { _logger.LogWarning(ex, "获取宠物信息业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "获取宠物信息系统异常"); return BaseResponse.Fail("获取宠物信息失败,请稍后重试"); } } /// /// 喂养宠物(增加成长值,触发进化检查) /// [HttpPost("feed")] public async Task> FeedPetAsync([FromBody] FeedPetInput input) { try { var userId = GetCurrentUserId(); if (userId == 0) { return BaseResponse.Fail(ResultCode.DENY, "未获取到用户信息"); } var result = await _petService.FeedPetAsync(userId, input); return Success(result, "喂养成功"); } catch (BusinessException ex) { _logger.LogWarning(ex, "喂养宠物业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "喂养宠物系统异常,参数:{@Input}", input); return BaseResponse.Fail("喂养宠物失败,请稍后重试"); } } /// /// 获取宠物喂养记录列表 /// [HttpGet("records/{petId}")] public async Task>> GetFeedingRecordsAsync(long petId, [FromQuery] PageQueryModel pageQuery) { try { var userId = GetCurrentUserId(); if (userId == 0) { return BaseResponse>.Fail(ResultCode.DENY, "未获取到用户信息"); } var result = await _petService.GetFeedingRecordsAsync(userId, petId, pageQuery); 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("查询喂养记录失败,请稍后重试"); } } }