using ZR.Admin.WebApi.Filters; using ZR.ServiceCore.Model; using ZR.ServiceCore.Services.IService; namespace ZR.Admin.WebApi.Controllers.System; [Verify] [Route("system/field")] public class SysFieldController : BaseController { private readonly ISysFieldService _sysFieldService; public SysFieldController(ISysFieldService sysFieldService) { _sysFieldService = sysFieldService; } [HttpGet("getModelList")] public async Task GetModelList() { var serviceCoreModels = AppDomain.CurrentDomain .GetAssemblies() .First(it => it.FullName.Contains("ZR.ServiceCore")) .ExportedTypes .Where(p => p.FullName.StartsWith("ZR.ServiceCore.Model")) .Select(it => new { it.FullName, // Properties = it.GetProperties() }) .ToList(); return SUCCESS(serviceCoreModels); } [HttpGet("getFields")] public async Task GetFields([FromQuery] string fullName) { var list = await _sysFieldService.Queryable() .Where(it => it.FullName == fullName) .ToListAsync(); return SUCCESS(list); } [HttpPost("initFields")] public async Task InitFields() { var serviceCoreModels = AppDomain.CurrentDomain .GetAssemblies() .First(it => it.FullName.Contains("ZR.ServiceCore")) .ExportedTypes .Where(p => p.FullName.StartsWith("ZR.ServiceCore.Model")) .Select(it => new { FullName = it.FullName, Properties = it.GetProperties().Select(pt => new { FieldName = pt.Name, FieldType = pt.PropertyType.FullName, IsClass = pt.PropertyType.IsClass, IsArray = pt.PropertyType.IsArray, // IsList = pt.PropertyType.IsClass ? pt.DeclaringType.FullName : string.Empty }).ToList() // Properties = it.GetProperties() }) .ToList(); foreach (var serviceCoreModel in serviceCoreModels) { var sysFields = new List(); foreach (var property in serviceCoreModel.Properties) { var sysField = new SysField { FieldName = property.FieldName, FullName = serviceCoreModel.FullName, FieldType = property.FieldType, IsClass = property.IsClass ? "1" : "0" }; sysFields.Add(sysField); } await _sysFieldService.Insertable(sysFields).ExecuteReturnSnowflakeIdListAsync(); } return SUCCESS(serviceCoreModels); } }