using ZR.Admin.WebApi.Filters; using ZR.ServiceCore.Model; using ZR.ServiceCore.Model.Dto; using ZR.ServiceCore.Services.IService; namespace ZR.Admin.WebApi.Controllers.System; [Verify] [Route("system/field")] public class SysFieldController : BaseController { private readonly ISysFieldService _sysFieldService; private readonly ISysRoleFieldService _sysRoleFieldService; public SysFieldController(ISysFieldService sysFieldService, ISysRoleFieldService sysRoleFieldService) { _sysFieldService = sysFieldService; _sysRoleFieldService = sysRoleFieldService; } [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, long roleId) { var fields = await _sysFieldService.Queryable() .Where(it => it.FullName == fullName) .ToListAsync(); var roleFields = await _sysRoleFieldService .Queryable() .Where(it => it.RoleId == roleId) .Select(it => it.FieldId) .ToListAsync(); var list = new List(); list = fields.Select(it => new SysFieldDto { FieldName = it.FieldName, FieldType = it.FieldType, FullName = it.FullName, Id = it.Id, IsClass = it.IsClass, IsPermission = roleFields.Contains(it.Id) }).ToList(); // fields.ForEach(it => // { // if (it.Id != 0 && roleFields.Contains(it.Id)) // { // list.Add(new SysFieldDto // { // FieldName = it.FieldName, // FieldType = it.FieldType, // FullName = it.FullName, // Id = it.Id, // IsClass = it.IsClass, // IsPermission = true // }); // } // else // { // list.Add(new SysFieldDto // { // FieldName = it.FieldName, // FieldType = it.FieldType, // FullName = it.FullName, // Id = it.Id, // IsClass = it.IsClass, // IsPermission = false // }); // } // }); 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); } public async Task AddOrUpdateSysRoleField([FromBody] List sysFieldDtos){} }