diff --git a/Api/Ewide.Core/Service/Dict/Dto/EnumDictOutput.cs b/Api/Ewide.Core/Service/Dict/Dto/EnumDictOutput.cs new file mode 100644 index 0000000..248647f --- /dev/null +++ b/Api/Ewide.Core/Service/Dict/Dto/EnumDictOutput.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Ewide.Core.Service.Dict.Dto +{ + public class EnumDictOutput + { + public string FullName { get; set; } + public string Desc { get; set; } + public string Code { get; set; } + public List Datas { get; set; } + } + + public class EnumDictData + { + public string Desc { get; set; } + public string Code { get; set; } + public string Value { get; set; } + } +} diff --git a/Api/Ewide.Core/Service/Dict/ISysDictTypeService.cs b/Api/Ewide.Core/Service/Dict/ISysDictTypeService.cs index e1bbf2c..d1589fa 100644 --- a/Api/Ewide.Core/Service/Dict/ISysDictTypeService.cs +++ b/Api/Ewide.Core/Service/Dict/ISysDictTypeService.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Mvc; +using Ewide.Core.Service.Dict.Dto; +using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.Threading.Tasks; @@ -16,5 +17,6 @@ namespace Ewide.Core.Service Task GetDictTypeList(); Task QueryDictTypePageList([FromQuery] DictTypeInput input); Task UpdateDictType(UpdateDictTypeInput input); + Task> GetEnumDictDataList([FromQuery] DictTypeInput input); } } \ No newline at end of file diff --git a/Api/Ewide.Core/Service/Dict/SysDictTypeService.cs b/Api/Ewide.Core/Service/Dict/SysDictTypeService.cs index 1caa7bc..c8edff0 100644 --- a/Api/Ewide.Core/Service/Dict/SysDictTypeService.cs +++ b/Api/Ewide.Core/Service/Dict/SysDictTypeService.cs @@ -1,4 +1,5 @@ using Ewide.Core.Extension; +using Ewide.Core.Service.Dict.Dto; using Furion.DatabaseAccessor; using Furion.DatabaseAccessor.Extensions; using Furion.DependencyInjection; @@ -10,7 +11,9 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; +using System.Reflection; using System.Threading.Tasks; namespace Ewide.Core.Service @@ -212,5 +215,36 @@ namespace Ewide.Core.Service return dtype.Pids + "[" + pid + "],"; } } + [HttpGet("/sysDictType/enumDictList")] + public Task> GetEnumDictDataList([FromQuery] DictTypeInput input) + { + var typeList = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsEnum); + typeList = typeList.Concat(Assembly.Load("Ewide.Application").GetTypes().Where(t => t.IsEnum)); + var list = new List(); + foreach (var type in typeList) + { + var dictType = new EnumDictOutput + { + Desc = type.GetCustomAttribute()?.Description, + FullName = type.FullName, + Code = type.Name, + Datas = new List(), + }; + var fields = type.GetFields(BindingFlags.Static | BindingFlags.Public); + foreach (var field in fields) + { + var value = field.GetValue(null); + var dictData = new EnumDictData + { + Desc = field.GetCustomAttribute()?.Description, + Code = field.Name, + Value = Convert.ChangeType(value, Enum.GetUnderlyingType(value.GetType())).ToString(), + }; + dictType.Datas.Add(dictData); + } + list.Add(dictType); + } + return Task.FromResult(list); + } } }