// Admin.NET 项目的版æƒã€å•†æ ‡ã€ä¸“利和其他相关æƒåˆ©å‡å—ç›¸åº”æ³•å¾‹æ³•è§„çš„ä¿æŠ¤ã€‚ä½¿ç”¨æœ¬é¡¹ç›®åº”éµå®ˆç›¸å…³æ³•律法规和许å¯è¯çš„è¦æ±‚。 // // 本项目主è¦éµå¾ª MIT 许å¯è¯å’Œ Apache 许å¯è¯ï¼ˆç‰ˆæœ¬ 2.0)进行分å‘和使用。许å¯è¯ä½äºŽæºä»£ç æ ‘æ ¹ç›®å½•ä¸çš„ LICENSE-MIT å’Œ LICENSE-APACHE 文件。 // // ä¸å¾—利用本项目从事å±å®³å›½å®¶å®‰å…¨ã€æ‰°ä¹±ç¤¾ä¼šç§©åºã€ä¾µçŠ¯ä»–äººåˆæ³•æƒç›Šç‰æ³•å¾‹æ³•è§„ç¦æ¢çš„æ´»åЍï¼ä»»ä½•基于本项目二次开å‘è€Œäº§ç”Ÿçš„ä¸€åˆ‡æ³•å¾‹çº çº·å’Œè´£ä»»ï¼Œæˆ‘ä»¬ä¸æ‰¿æ‹…ä»»ä½•è´£ä»»ï¼ namespace Admin.NET.Core.Service; /// <summary> /// ç³»ç»Ÿå¸¸é‡æœåŠ¡ 🧩 /// </summary> [ApiDescriptionSettings(Order = 280)] [AllowAnonymous] public class SysConstService : IDynamicApiController, ITransient { private readonly SysCacheService _sysCacheService; public SysConstService(SysCacheService sysCacheService) { _sysCacheService = sysCacheService; } /// <summary> /// èŽ·å–æ‰€æœ‰å¸¸é‡åˆ—表 🔖 /// </summary> /// <returns></returns> [DisplayName("èŽ·å–æ‰€æœ‰å¸¸é‡åˆ—表")] public async Task<List<ConstOutput>> GetList() { var key = $"{CacheConst.KeyConst}list"; var constlist = _sysCacheService.Get<List<ConstOutput>>(key); if (constlist == null) { var typeList = GetConstAttributeList(); constlist = typeList.Select(u => new ConstOutput { Name = u.CustomAttributes.ToList().FirstOrDefault()?.ConstructorArguments.ToList().FirstOrDefault().Value?.ToString() ?? u.Name, Code = u.Name, Data = GetData(Convert.ToString(u.Name)) }).ToList(); _sysCacheService.Set(key, constlist); } return await Task.FromResult(constlist); } /// <summary> /// æ ¹æ®ç±»å获å–叏釿•°æ® 🔖 /// </summary> /// <param name="typeName"></param> /// <returns></returns> [DisplayName("æ ¹æ®ç±»å获å–叏釿•°æ®")] public async Task<List<ConstOutput>> GetData([Required] string typeName) { var key = $"{CacheConst.KeyConst}{typeName.ToUpper()}"; var constlist = _sysCacheService.Get<List<ConstOutput>>(key); if (constlist == null) { var typeList = GetConstAttributeList(); var type = typeList.FirstOrDefault(u => u.Name == typeName); var isEnum = type.BaseType.Name == "Enum"; constlist = type.GetFields()? .Where(isEnum, u => u.FieldType.Name == typeName) .Select(u => new ConstOutput { Name = u.Name, Code = isEnum ? (int)u.GetValue(BindingFlags.Instance) : u.GetValue(BindingFlags.Instance) }).ToList(); _sysCacheService.Set(key, constlist); } return await Task.FromResult(constlist); } /// <summary> /// 获å–常é‡ç‰¹æ€§ç±»åž‹åˆ—表 /// </summary> /// <returns></returns> private List<Type> GetConstAttributeList() { return App.EffectiveTypes.Where(u => u.CustomAttributes.Any(c => c.AttributeType == typeof(ConstAttribute))).ToList(); } }