1. 新增WeChatApi独立项目,将原WebApi中的微信相关控制器迁移至新项目 2. 新增后台权限管理相关实体、服务接口和基础控制器 3. 完善管理员用户服务,增加角色关联查询和赋值逻辑 4. 修复WebApi Swagger文档过滤微信API版本的问题 5. 更新解决方案文件,添加新的微信API项目引用 6. 新增微信API基础配置文件和项目属性配置
100 lines
3.3 KiB
C#
100 lines
3.3 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using QYZH.InteractiveMagazine.IService;
|
|
using QYZH.InteractiveMagazine.Models.Common;
|
|
using QYZH.InteractiveMagazine.Models.Dto;
|
|
|
|
namespace QYZH.InteractiveMagazine.WeChatApi.Controllers;
|
|
|
|
/// <summary>
|
|
/// 小程序勋章控制器
|
|
/// </summary>
|
|
public class MedalController(IMedalService medalService, ILogger<MedalController> logger) : WeChatBaseController
|
|
{
|
|
/// <summary>
|
|
/// 获取所有勋章列表(含当前用户拥有状态)
|
|
/// </summary>
|
|
[HttpGet("all")]
|
|
public async Task<BaseResponse<List<WxMedalListOutput>>> GetAllMedals()
|
|
{
|
|
try
|
|
{
|
|
var userId = GetCurrentUserId();
|
|
if (userId == 0)
|
|
{
|
|
return BaseResponse<List<WxMedalListOutput>>.Fail(ResultCode.DENY, "未获取到用户信息");
|
|
}
|
|
|
|
var result = await medalService.GetAllMedalsAsync(userId);
|
|
return Success(result);
|
|
}
|
|
catch (BusinessException ex)
|
|
{
|
|
logger.LogWarning(ex, "获取勋章列表业务异常: {Message}", ex.Message);
|
|
return BaseResponse<List<WxMedalListOutput>>.Fail(ex.Message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.LogError(ex, "获取勋章列表系统异常");
|
|
return BaseResponse<List<WxMedalListOutput>>.Fail("获取勋章列表失败,请稍后重试");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取用户已拥有的勋章列表
|
|
/// </summary>
|
|
[HttpGet("my")]
|
|
public async Task<BaseResponse<List<WxUserMedalOutput>>> GetUserMedals()
|
|
{
|
|
try
|
|
{
|
|
var userId = GetCurrentUserId();
|
|
if (userId == 0)
|
|
{
|
|
return BaseResponse<List<WxUserMedalOutput>>.Fail(ResultCode.DENY, "未获取到用户信息");
|
|
}
|
|
|
|
var result = await medalService.GetUserMedalsAsync(userId);
|
|
return Success(result);
|
|
}
|
|
catch (BusinessException ex)
|
|
{
|
|
logger.LogWarning(ex, "获取用户勋章列表业务异常: {Message}", ex.Message);
|
|
return BaseResponse<List<WxUserMedalOutput>>.Fail(ex.Message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.LogError(ex, "获取用户勋章列表系统异常");
|
|
return BaseResponse<List<WxUserMedalOutput>>.Fail("获取用户勋章列表失败,请稍后重试");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 激活/获得勋章
|
|
/// </summary>
|
|
[HttpPost("activate")]
|
|
public async Task<BaseResponse<object>> ActivateMedal([FromBody] WxMedalActivateInput input)
|
|
{
|
|
try
|
|
{
|
|
var userId = GetCurrentUserId();
|
|
if (userId == 0)
|
|
{
|
|
return BaseResponse<object>.Fail(ResultCode.DENY, "未获取到用户信息");
|
|
}
|
|
|
|
await medalService.ActivateMedalAsync(userId, input);
|
|
return Success<object>(null!, "勋章激活成功");
|
|
}
|
|
catch (BusinessException ex)
|
|
{
|
|
logger.LogWarning(ex, "激活勋章业务异常: {Message}", ex.Message);
|
|
return BaseResponse<object>.Fail(ex.Message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.LogError(ex, "激活勋章系统异常,参数:{Input}", input);
|
|
return BaseResponse<object>.Fail("激活勋章失败,请稍后重试");
|
|
}
|
|
}
|
|
}
|