refactor: 重构用户与勋章体系,统一状态管理与数据结构

1.  新增通用默认状态枚举 DefaultStatusEnum,替换原有分散的状态枚举
2.  重构用户体系:拆分 WxUser 独立表存储微信身份,Users 表改为角色子用户表并关联 WxUser
3.  重构勋章模块:新增系统/期刊勋章类型,调整 JournalId 为可空,新增勋章状态字段
4.  重构微信认证流程:基于 WxUser 生成 Token,支持多子用户管理
5.  清理冗余枚举文件,重构多处业务逻辑适配新的数据结构
6.  修复用户手机号关联逻辑,迁移手机号字段至 WxUser 表
This commit is contained in:
glz
2026-06-10 13:47:13 +08:00
parent 296d87b245
commit 028e3dfb34
29 changed files with 477 additions and 515 deletions

View File

@ -17,7 +17,7 @@ public class MallController(IWxMallService mallService, ILogger<MallController>
[HttpGet("products")]
public async Task<BaseResponse<List<WxProductOutput>>> GetProducts([FromQuery] string? type = null)
{
var userId = GetCurrentUserId();
var userId = GetCurrentWxUserId();
if (userId == null) return Fail("未获取到用户信息") as dynamic;
var products = await mallService.GetProductsAsync(userId.Value, type);
@ -31,7 +31,7 @@ public class MallController(IWxMallService mallService, ILogger<MallController>
[HttpGet("product/{id}")]
public async Task<BaseResponse<WxProductOutput>> GetProductDetail(long id)
{
var userId = GetCurrentUserId();
var userId = GetCurrentWxUserId();
if (userId == null) return Fail("未获取到用户信息") as dynamic;
var product = await mallService.GetProductDetailAsync(userId.Value, id);
@ -47,7 +47,7 @@ public class MallController(IWxMallService mallService, ILogger<MallController>
[HttpPost("exchange")]
public async Task<BaseResponse<ExchangeOutput>> Exchange([FromBody] ExchangeInput input)
{
var userId = GetCurrentUserId();
var userId = GetCurrentWxUserId();
if (userId == null) return Fail("未获取到用户信息") as dynamic;
var result = await mallService.ExchangeAsync(userId.Value, input);
@ -61,7 +61,7 @@ public class MallController(IWxMallService mallService, ILogger<MallController>
[HttpGet("exchangeRecords")]
public async Task<BaseResponse<List<ExchangeRecordOutput>>> GetExchangeRecords([FromQuery] int limit = 20)
{
var userId = GetCurrentUserId();
var userId = GetCurrentWxUserId();
if (userId == null) return Fail("未获取到用户信息") as dynamic;
var records = await mallService.GetExchangeRecordsAsync(userId.Value, limit);