134 lines
4.6 KiB
C#
134 lines
4.6 KiB
C#
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<IActionResult> 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<IActionResult> 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<SysFieldDto>();
|
|
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<IActionResult> 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<SysField>();
|
|
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<IActionResult> AddOrUpdateSysRoleField([FromBody] List<SysFieldDto> sysFieldDtos){}
|
|
} |