Files
QYZH.InteractiveMagazine/QYZH.InteractiveMagazine.WebApi/Controllers/CommunityMessageController.cs
glz 78b686f9e5 refactor: 批量新增枚举类型并完成实体、DTO、服务层枚举替换
- 新增30+业务枚举类型覆盖用户、宠物、商城、社区、积分等模块
- 完成实体类、DTO、服务层的字符串枚举替换为强类型枚举
- 修复用户状态枚举名称变更,将Frozen改为Disabled
- 新增批量发布社区消息接口与控制器实现
- 新增操作日志、积分管理、补偿任务相关服务与DTO
2026-06-08 16:57:44 +08:00

187 lines
6.6 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 == (int)MessageStatusEnum.Frozen ? "冻结消息成功" : "解冻消息成功");
}
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("操作失败,请稍后重试");
}
}
/// <summary>
/// 批量发布消息
/// </summary>
[HttpPost("batch-publish")]
public async Task<BaseResponse<object>> BatchPublishAsync([FromBody] AdminBatchPublishInput input)
{
try
{
await _communityMessageService.BatchPublishAsync(input.Ids);
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, "批量发布社区消息系统异常IDs{Ids}", input.Ids);
return BaseResponse<object>.Fail("批量发布消息失败,请稍后重试");
}
}
}