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; /// /// 勋章管理控制器 /// [Route("api/[controller]")] [ApiController] [ApiExplorerSettings(GroupName = nameof(ApiVersionEnum.Platform))] public class MedalController : BaseController { private readonly IMedalService _medalService; private readonly ILogger _logger; public MedalController(IMedalService medalService, ILogger logger) { _medalService = medalService; _logger = logger; } /// /// 创建勋章 /// /// 勋章信息 /// 创建的勋章信息 [HttpPost] public async Task> CreateAsync([FromBody] MedalInput input) { try { var result = await _medalService.CreateAsync(input); return Success(result, "创建勋章成功"); } catch (BusinessException ex) { _logger.LogWarning(ex, "创建勋章业务异常: {Message}", ex.Message); return BaseResponse.Fail(ex.Message); } catch (Exception ex) { _logger.LogError(ex, "创建勋章系统异常,参数:{Input}", input); return BaseResponse.Fail("创建勋章失败,请稍后重试"); } } /// /// 更新勋章 /// /// 勋章ID /// 勋章信息 /// 更新后的勋章信息 [HttpPut("{id}")] public async Task> UpdateAsync(long id, [FromBody] MedalInput input) { try { var result = await _medalService.UpdateAsync(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},参数:{Input}", id, input); return BaseResponse.Fail("更新勋章失败,请稍后重试"); } } /// /// 删除勋章 /// /// 勋章ID /// 操作结果 [HttpDelete("{id}")] public async Task> DeleteAsync(long id) { try { await _medalService.DeleteAsync(id); return Success(new object(), "删除勋章成功"); } 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("删除勋章失败,请稍后重试"); } } /// /// 根据ID获取勋章 /// /// 勋章ID /// 勋章信息 [HttpGet("{id}")] public async Task> GetByIdAsync(long id) { try { var result = await _medalService.GetByIdAsync(id); 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("获取勋章信息失败,请稍后重试"); } } /// /// 分页查询勋章列表 /// /// 查询条件 /// 分页结果 [HttpPost("list")] public async Task>> GetListAsync([FromBody] MedalQueryInput input) { try { var result = await _medalService.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, "查询勋章列表系统异常,参数:{Input}", input); return BaseResponse>.Fail("查询勋章列表失败,请稍后重试"); } } /// /// 更新勋章启用/禁用状态 /// /// 勋章ID /// 状态: 0=禁用, 1=启用 /// 操作结果 [HttpPut("{id}/status")] public async Task> UpdateStatusAsync(long id) { try { var res = await _medalService.UpdateStatusAsync(id); return Success(res, "更新勋章状态成功"); } 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("更新勋章状态失败,请稍后重试"); } } /// /// 获取规则配置中可用的目标表列表 /// [HttpGet("rule-config/tables")] public async Task>> GetAvailableTables() { try { var result = await _medalService.GetAvailableTablesAsync(); return Success(result); } catch (Exception ex) { _logger.LogError(ex, "获取可用目标表列表系统异常"); return BaseResponse>.Fail("获取可用目标表列表失败,请稍后重试"); } } /// /// 获取指定表的可用字段列表 /// /// 表名 [HttpGet("rule-config/tables/{tableName}/fields")] public async Task>> GetTableFields(string tableName) { try { var result = await _medalService.GetTableFieldsAsync(tableName); return Success(result); } catch (Exception ex) { _logger.LogError(ex, "获取可用字段列表系统异常,表名:{TableName}", tableName); return BaseResponse>.Fail("获取可用字段列表失败,请稍后重试"); } } }