Files
QYZH.InteractiveMagazine/QYZH.InteractiveMagazine.WebApi/Controllers/CommunityMessageController.cs
glz 8291b82362 feat: 完成宠物模块重构与社区功能开发
本次提交包含多项核心更新:
1.  重构宠物模块数据结构:拆分皮肤图片为独立表,优化Pet、PetEvolution实体,调整字段类型与冗余字段
2.  新增宠物皮肤图片管理表,支持多进化阶段多图片展示
3.  完善宠物DTO,新增当前形态名称、皮肤信息与图片序列返回
4.  新增社区功能模块:
    - 微信端社区Feed流、点赞/取消点赞接口
    - 后台社区消息管理接口与服务实现
5.  优化商城与背包模块,替换皮肤图片获取逻辑为从新表读取预览图
6.  重构勋章服务,新增规则校验逻辑
7.  调整命名规范,修复原有控制器命名问题
2026-06-05 17:15:30 +08:00

164 lines
5.8 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.Enum;
namespace QYZH.InteractiveMagazine.WebApi.Controllers;
/// <summary>
/// 社区消息管理控制器
/// </summary>
[Route("api/[controller]")]
[ApiController]
[ApiExplorerSettings(GroupName = nameof(ApiVersionEnum.Platform))]
public class CommunityMessageController : BaseController
{
private readonly ICommunityMessageService _communityMessageService;
private readonly ILogger<CommunityMessageController> _logger;
public CommunityMessageController(ICommunityMessageService communityMessageService, ILogger<CommunityMessageController> logger)
{
_communityMessageService = communityMessageService;
_logger = logger;
}
/// <summary>
/// 分页查询社区消息列表
/// </summary>
[HttpPost("list")]
public async Task<BaseResponse<PageListModel<AdminMessageDetailOutput>>> GetListAsync([FromBody] AdminMessageQueryInput input)
{
try
{
var result = await _communityMessageService.GetListAsync(input);
return Success(result);
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "查询社区消息列表业务异常: {Message}", ex.Message);
return BaseResponse<PageListModel<AdminMessageDetailOutput>>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "查询社区消息列表系统异常,参数:{Input}", input);
return BaseResponse<PageListModel<AdminMessageDetailOutput>>.Fail("查询社区消息列表失败,请稍后重试");
}
}
/// <summary>
/// 查看消息详情
/// </summary>
[HttpGet("{id}")]
public async Task<BaseResponse<AdminMessageDetailOutput>> GetDetailAsync(long id)
{
try
{
var result = await _communityMessageService.GetDetailAsync(id);
return Success(result);
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "获取社区消息详情业务异常: {Message}", ex.Message);
return BaseResponse<AdminMessageDetailOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "获取社区消息详情系统异常ID{Id}", id);
return BaseResponse<AdminMessageDetailOutput>.Fail("获取消息详情失败,请稍后重试");
}
}
/// <summary>
/// 删除消息
/// </summary>
[HttpDelete("{id}")]
public async Task<BaseResponse<object>> DeleteAsync(long id)
{
try
{
await _communityMessageService.DeleteAsync(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>
[HttpPut("{id}/freeze")]
public async Task<BaseResponse<object>> FreezeAsync(long id, [FromBody] AdminFreezeInput input)
{
try
{
await _communityMessageService.FreezeAsync(id, input.Status);
return Success(new object(), input.Status == 2 ? "冻结消息成功" : "解冻消息成功");
}
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>
[HttpPut("{id}/featured")]
public async Task<BaseResponse<object>> SetFeaturedAsync(long id, [FromBody] AdminSetFeaturedInput input)
{
try
{
await _communityMessageService.SetFeaturedAsync(id, input.IsFeatured);
return Success(new object(), input.IsFeatured == 1 ? "设置精选成功" : "取消精选成功");
}
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>
[HttpPut("{id}/sort")]
public async Task<BaseResponse<object>> SetSortOrderAsync(long id, [FromBody] AdminSetSortOrderInput input)
{
try
{
await _communityMessageService.SetSortOrderAsync(id, input.SortOrder);
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("操作失败,请稍后重试");
}
}
}