// Admin.NET 项目的版æƒã€å•†æ ‡ã€ä¸“利和其他相关æƒåˆ©å‡å—ç›¸åº”æ³•å¾‹æ³•è§„çš„ä¿æŠ¤ã€‚ä½¿ç”¨æœ¬é¡¹ç›®åº”éµå®ˆç›¸å…³æ³•律法规和许å¯è¯çš„è¦æ±‚。 // // 本项目主è¦éµå¾ª MIT 许å¯è¯å’Œ Apache 许å¯è¯ï¼ˆç‰ˆæœ¬ 2.0)进行分å‘和使用。许å¯è¯ä½äºŽæºä»£ç æ ‘æ ¹ç›®å½•ä¸çš„ LICENSE-MIT å’Œ LICENSE-APACHE 文件。 // // ä¸å¾—利用本项目从事å±å®³å›½å®¶å®‰å…¨ã€æ‰°ä¹±ç¤¾ä¼šç§©åºã€ä¾µçŠ¯ä»–äººåˆæ³•æƒç›Šç‰æ³•å¾‹æ³•è§„ç¦æ¢çš„æ´»åЍï¼ä»»ä½•基于本项目二次开å‘è€Œäº§ç”Ÿçš„ä¸€åˆ‡æ³•å¾‹çº çº·å’Œè´£ä»»ï¼Œæˆ‘ä»¬ä¸æ‰¿æ‹…ä»»ä½•è´£ä»»ï¼ namespace Admin.NET.Core.Service; /// <summary> /// 系统枚举æœåŠ¡ 🧩 /// </summary> [ApiDescriptionSettings(Order = 275)] [AllowAnonymous] public class SysEnumService : IDynamicApiController, ITransient { private readonly EnumOptions _enumOptions; public SysEnumService(IOptions<EnumOptions> enumOptions) { _enumOptions = enumOptions.Value; } /// <summary> /// èŽ·å–æ‰€æœ‰æžšä¸¾ç±»åž‹ 🔖 /// </summary> /// <returns></returns> [DisplayName("èŽ·å–æ‰€æœ‰æžšä¸¾ç±»åž‹")] public List<EnumTypeOutput> GetEnumTypeList() { var enumTypeList = App.EffectiveTypes.Where(t => t.IsEnum) .Where(t => _enumOptions.EntityAssemblyNames.Contains(t.Assembly.GetName().Name) || _enumOptions.EntityAssemblyNames.Any(name => t.Assembly.GetName().Name.Contains(name))) .OrderBy(u => u.Name).OrderBy(u => u.FullName) .ToList(); var result = new List<EnumTypeOutput>(); foreach (var item in enumTypeList) { result.Add(GetEnumDescription(item)); } return result; } /// <summary> /// 获å–å—å…¸æè¿° /// </summary> /// <param name="type"></param> /// <returns></returns> private static EnumTypeOutput GetEnumDescription(Type type) { string description = type.Name; var attrs = type.GetCustomAttributes(typeof(DescriptionAttribute), false); if (attrs.Length != 0) { var att = ((DescriptionAttribute[])attrs)[0]; description = att.Description; } var enumType = App.EffectiveTypes.FirstOrDefault(t => t.IsEnum && t.Name == type.Name); return new EnumTypeOutput { TypeDescribe = description, TypeName = type.Name, TypeRemark = description, EnumEntities = (enumType ?? type).EnumToList() }; } /// <summary> /// é€šè¿‡æžšä¸¾ç±»åž‹èŽ·å–æžšä¸¾å€¼é›†åˆ 🔖 /// </summary> /// <param name="input"></param> /// <returns></returns> [DisplayName("é€šè¿‡æžšä¸¾ç±»åž‹èŽ·å–æžšä¸¾å€¼é›†åˆ")] public List<EnumEntity> GetEnumDataList([FromQuery] EnumInput input) { var enumType = App.EffectiveTypes.FirstOrDefault(u => u.IsEnum && u.Name == input.EnumName); if (enumType is not { IsEnum: true }) throw Oops.Oh(ErrorCodeEnum.D1503); return enumType.EnumToList(); } /// <summary> /// é€šè¿‡å®žä½“çš„å—æ®µå获å–相关枚举值集åˆï¼ˆç›®å‰ä»…æ”¯æŒæžšä¸¾ç±»åž‹ï¼‰ 🔖 /// </summary> /// <param name="input"></param> /// <returns></returns> [DisplayName("é€šè¿‡å®žä½“çš„å—æ®µå获å–相关枚举值集åˆ")] public static List<EnumEntity> GetEnumDataListByField([FromQuery] QueryEnumDataInput input) { // 获å–实体类型属性 Type entityType = App.EffectiveTypes.FirstOrDefault(u => u.Name == input.EntityName) ?? throw Oops.Oh(ErrorCodeEnum.D1504); // 获å–å—æ®µç±»åž‹ var fieldType = entityType.GetProperties().FirstOrDefault(u => u.Name == input.FieldName)?.PropertyType; if (fieldType is not { IsEnum: true }) throw Oops.Oh(ErrorCodeEnum.D1503); return fieldType.EnumToList(); } }