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

125 lines
4.6 KiB
C#
Raw Permalink 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.Dto.Compensation;
namespace QYZH.InteractiveMagazine.WebApi.Controllers;
/// <summary>
/// 补偿任务管理控制器
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class CompensationManageController : BaseController
{
private readonly ICompensationManageService _compensationManageService;
private readonly ILogger<CompensationManageController> _logger;
public CompensationManageController(ICompensationManageService compensationManageService, ILogger<CompensationManageController> logger)
{
_compensationManageService = compensationManageService;
_logger = logger;
}
/// <summary>
/// 分页查询补偿任务列表
/// </summary>
[HttpPost("list")]
public async Task<BaseResponse<PageListModel<CompensationManageOutput>>> GetList([FromBody] CompensationTaskQueryInput input)
{
try
{
var result = await _compensationManageService.GetListAsync(input);
return Success(result);
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "查询补偿任务列表业务异常: {Message}", ex.Message);
return BaseResponse<PageListModel<CompensationManageOutput>>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "查询补偿任务列表系统异常");
return BaseResponse<PageListModel<CompensationManageOutput>>.Fail("查询补偿任务列表失败,请稍后重试");
}
}
/// <summary>
/// 获取补偿任务详情
/// </summary>
[HttpGet("{id}/detail")]
public async Task<BaseResponse<CompensationManageDetailOutput>> GetDetail(long id)
{
try
{
var result = await _compensationManageService.GetDetailAsync(id);
return Success(result);
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "获取补偿任务详情业务异常: {Message}", ex.Message);
return BaseResponse<CompensationManageDetailOutput>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "获取补偿任务详情系统异常TaskId: {TaskId}", id);
return BaseResponse<CompensationManageDetailOutput>.Fail("获取补偿任务详情失败,请稍后重试");
}
}
/// <summary>
/// 手动重试补偿任务
/// </summary>
[HttpPost("{id}/retry")]
public async Task<BaseResponse<object>> Retry(long id, [FromBody] CompensationRetryInput input)
{
try
{
var operatorId = GetCurrentUserId() ?? 0;
var operatorName = GetCurrentUserName() ?? "Unknown";
var ipAddress = HttpContext.Connection.RemoteIpAddress?.ToString();
await _compensationManageService.RetryAsync(id, operatorId, operatorName, input, ipAddress);
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, "手动重试补偿任务系统异常TaskId: {TaskId}", id);
return BaseResponse<object>.Fail("手动重试失败,请稍后重试");
}
}
/// <summary>
/// 标记补偿任务为已解决
/// </summary>
[HttpPost("{id}/resolve")]
public async Task<BaseResponse<object>> Resolve(long id, [FromBody] CompensationResolveInput input)
{
try
{
var operatorId = GetCurrentUserId() ?? 0;
var operatorName = GetCurrentUserName() ?? "Unknown";
var ipAddress = HttpContext.Connection.RemoteIpAddress?.ToString();
await _compensationManageService.ResolveAsync(id, operatorId, operatorName, input, ipAddress);
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, "标记补偿任务已解决系统异常TaskId: {TaskId}", id);
return BaseResponse<object>.Fail("标记已解决失败,请稍后重试");
}
}
}