using System.ComponentModel; using System.Reflection; using Microsoft.Extensions.Logging; using QYZH.InteractiveMagazine.IService; using QYZH.InteractiveMagazine.Models.Dto.SystemManagement; namespace QYZH.InteractiveMagazine.Service; /// /// 系统管理服务实现 /// public class SystemManagementService : ISystemManagementService { private readonly ILogger _logger; public SystemManagementService(ILogger logger) { _logger = logger; } public Task> 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(); foreach (var enumType in enumTypes) { var enumInfo = new EnumInfoOutput { EnumName = enumType.Name }; var fields = Enum.GetValues(enumType) .Cast() .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()? .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); } }