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;
///
/// 补偿任务管理控制器
///
[Route("api/[controller]")]
[ApiController]
public class CompensationManageController : BaseController
{
private readonly ICompensationManageService _compensationManageService;
private readonly ILogger _logger;
public CompensationManageController(ICompensationManageService compensationManageService, ILogger logger)
{
_compensationManageService = compensationManageService;
_logger = logger;
}
///
/// 分页查询补偿任务列表
///
[HttpPost("list")]
public async Task>> 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>.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "查询补偿任务列表系统异常");
return BaseResponse>.Fail("查询补偿任务列表失败,请稍后重试");
}
}
///
/// 获取补偿任务详情
///
[HttpGet("{id}/detail")]
public async Task> GetDetail(long id)
{
try
{
var result = await _compensationManageService.GetDetailAsync(id);
return Success(result);
}
catch (BusinessException ex)
{
_logger.LogWarning(ex, "获取补偿任务详情业务异常: {Message}", ex.Message);
return BaseResponse.Fail(ex.Message);
}
catch (Exception ex)
{
_logger.LogError(ex, "获取补偿任务详情系统异常,TaskId: {TaskId}", id);
return BaseResponse.Fail("获取补偿任务详情失败,请稍后重试");
}
}
///
/// 手动重试补偿任务
///
[HttpPost("{id}/retry")]
public async Task> 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