105040 增加程序入口读取接口,用于自动配置权限项

This commit is contained in:
lihanbo 2024-11-02 10:39:14 +08:00
parent ff35047431
commit dc2f90e66b
3 changed files with 45 additions and 2 deletions

View File

@ -41,5 +41,11 @@ namespace LFlow.Permission.Controller
TotalCount = total
};
}
[HttpGet]
public async Task<ApiResult<List<PermissionDto>>> GetProgPermissions()
{
var result = await service.GetPermissions();
return Success(result);
}
}
}

View File

@ -17,5 +17,7 @@ namespace LFlow.Permission.Service
/// <returns></returns>
Task<List<PermissionDto>> GetProgPerminssionListAsync(string progID);
Task<List<PermissionDto>> GetPermissions();
}
}

View File

@ -1,9 +1,10 @@
using LFlow.Base.Interfaces;
using LFlow.Base;
using LFlow.Base.Interfaces;
using LFlow.Base.Utils;
using LFlow.Cache.Interface;
using LFlow.Permission.Model;
using Mapster;
using SqlSugar;
using Microsoft.AspNetCore.Mvc.Routing;
namespace LFlow.Permission.Service
{
@ -64,6 +65,40 @@ namespace LFlow.Permission.Service
{
return Task.FromResult(repo.GetAll(pageIndex, pageSize, ref total).Adapt<List<PermissionDto>>());
}
public Task<List<PermissionDto>> GetPermissions()
{
List<PermissionDto> permissions = [];
App.SubServiceAssembly.ForEach(service =>
{
var types = service.GetTypes();
foreach (var item in types.Where(type => type.IsSubclassOf(typeof(BaseController))))
{
var progName = item.Name.Replace("Controller", "");
foreach (var method in item.GetMethods())
{
var attrs = method.CustomAttributes.Where(attr =>
{
return attr.AttributeType.IsSubclassOf(typeof(HttpMethodAttribute));
});
if (attrs != null && attrs.Count() > 0)
{
var permission = new PermissionDto
{
//ProgID = progName,
PermissionAction = method.Name,
PermissionProgID = progName
};
permissions.Add(permission);
}
}
}
});
return Task.FromResult(permissions);
}
/// <summary>
/// 获取程序权限列表
/// </summary>