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

74 lines
2.2 KiB
C#

using System.ComponentModel;
using System.Reflection;
using Microsoft.Extensions.Logging;
using QYZH.InteractiveMagazine.IService;
using QYZH.InteractiveMagazine.Models.Dto.SystemManagement;
namespace QYZH.InteractiveMagazine.Service;
/// <summary>
/// 系统管理服务实现
/// </summary>
public class SystemManagementService : ISystemManagementService
{
private readonly ILogger<SystemManagementService> _logger;
public SystemManagementService(ILogger<SystemManagementService> logger)
{
_logger = logger;
}
public Task<List<EnumInfoOutput>> GetAllEnumsAsync()
{
_logger.LogInformation("开始获取所有枚举信息");
var enumAssembly = typeof(QYZH.InteractiveMagazine.Models.Enum.DefaultStatusEnum).Assembly;
var enumNamespace = "QYZH.InteractiveMagazine.Models.Enum";
var enumTypes = enumAssembly.GetTypes()
.Where(t => t.IsEnum && t.Namespace == enumNamespace)
.OrderBy(t => t.Name)
.ToList();
var result = new List<EnumInfoOutput>();
foreach (var enumType in enumTypes)
{
var enumInfo = new EnumInfoOutput
{
EnumName = enumType.Name
};
var fields = Enum.GetValues(enumType)
.Cast<object>()
.Select(value => new
{
Name = Enum.GetName(enumType, value),
Value = Convert.ToInt32(value),
Field = enumType.GetField(value.ToString()!)
})
.ToList();
foreach (var field in fields)
{
var description = field.Field?
.GetCustomAttribute<DescriptionAttribute>()?
.Description;
enumInfo.Items.Add(new EnumItemDto
{
Name = field.Name!,
Value = field.Value,
Description = description
});
}
result.Add(enumInfo);
}
_logger.LogInformation("获取枚举信息完成,共 {Count} 个枚举", result.Count);
return Task.FromResult(result);
}
}