using Microsoft.AspNetCore.Mvc;
using QYZH.InteractiveMagazine.Infrastructure.Middleware;
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;
}
// ==================== 宠物模板管理 ====================
///
/// 创建宠物模板
///
[OperationLog(OperationLogActionType.Create, OperationLogTargetType.Pet)]
[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("创建宠物模板失败,请稍后重试");
}
}
///
/// 更新宠物模板
///
[OperationLog(OperationLogActionType.Update, OperationLogTargetType.Pet)]
[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("更新宠物模板失败,请稍后重试");
}
}
///
/// 删除宠物模板
///
[OperationLog(OperationLogActionType.Delete, OperationLogTargetType.Pet)]
[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