Files
QYZH.InteractiveMagazine/QYZH.InteractiveMagazine.Service/SystemManagementService.cs
glz 0126c6b097 refactor: 完善枚举系统与状态类型转换,新增枚举管理接口
1. 为所有枚举添加Description特性用于中文描述
2. 移除实体类中冗余的状态字段注释与定义
3. 将所有枚举状态参数改为int类型转换,统一数据交互格式
4. 新增系统管理枚举查询接口与实现,支持获取所有枚举元数据
5. 调整宠物服务模板状态更新接口参数类型
2026-06-08 17:54:36 +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.AdminUserStatusEnum).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);
}
}