refactor 优化代码

This commit is contained in:
2024-08-16 14:45:50 +08:00
parent 9e46c26ddf
commit 9124408cdd
2 changed files with 29 additions and 35 deletions

View File

@@ -30,9 +30,9 @@ public class MenusController : ControllerBase
/// <param name="platform">菜单平台类型 PlatformEnumType</param>
/// <returns></returns>
[HttpGet("list")]
public async Task<List<MenuResponse>> GetListAsync([EnumDataType(typeof(PlatformEnumType))] PlatformEnumType? platform = PlatformEnumType.PCAdmin)
public async Task<List<MenuResponse>> GetListAsync([EnumDataType(typeof(PlatformEnumType))] PlatformEnumType platform = PlatformEnumType.PCAdmin)
{
return await _menuService.GetListAsync(platform.Value);
return await _menuService.GetListAsync(platform);
}
/// <summary>
@@ -53,7 +53,6 @@ public class MenusController : ControllerBase
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Authorize(Roles = "admin,tenant-admin")]
[HttpPost("assign")]
public async Task AssignmentAsync(MenuPermissionAssignmentRequest request)
{
@@ -66,7 +65,6 @@ public class MenusController : ControllerBase
/// <param name="uniqueType">权限分配类型 AssignTypeEnumType</param>
/// <param name="uniqueValue">类型对应的唯一值</param>
/// <returns></returns>
[Authorize(Roles = "admin,tenant-admin")]
[HttpGet("assignments")]
public async Task<List<string>> GetAssignmentsAsync(
[EnumDataType(typeof(AssignTypeEnumType))] AssignTypeEnumType uniqueType,

View File

@@ -143,8 +143,7 @@ public class MenuService : IMenuService
if (!allCodes.Any())
{
//todo 管理员
var userId = _currentUser.GetIntSubjectId();
if (userId == 1)
if (_currentUser.GetName() == "admin")
{
return await GetListAsync(PlatformEnumType.PCAdmin);
}
@@ -215,6 +214,8 @@ public class MenuService : IMenuService
}
}
//****************************************************************** help methods ******************************************************************************
private static void RecursionGetNext(MenuResponse current, List<MenuResponse> menus)
{
@@ -229,30 +230,30 @@ public class MenuService : IMenuService
private async Task CheckAsync(SaveMenuRequest request)
{
//检查重复code
var exists = await _dbContext.Queryable<MenuEntity>()
(await _dbContext.Queryable<MenuEntity>()
.Where(x => x.Code == request.Code)
.WhereIF(request.Id.HasValue, x => x.Id != request.Id).AnyAsync();
exists.ThrowIfTrue($"{request.Title}存在重复code");
.WhereIF(request.Id.HasValue, x => x.Id != request.Id).AnyAsync())
.ThrowIfTrue($"{request.Title}存在重复code");
//检查name
exists = await _dbContext.Queryable<MenuEntity>()
(await _dbContext.Queryable<MenuEntity>()
.Where(x => x.Name == request.Name)
.WhereIF(request.Id.HasValue, x => x.Id != request.Id).AnyAsync();
exists.ThrowIfTrue($"{request.Title}存在重复name");
.WhereIF(request.Id.HasValue, x => x.Id != request.Id).AnyAsync())
.ThrowIfTrue($"{request.Title}存在重复name");
//判断权限重复
if (request.Permission.IsPresent())
{
exists = await _dbContext.Queryable<MenuEntity>()
(await _dbContext.Queryable<MenuEntity>()
.Where(x => x.Permission == request.Permission && (request.MenuType == MenuEnumType.Menu || request.MenuType == MenuEnumType.Button))
.WhereIF(request.Id.HasValue, x => x.Id != request.Id).AnyAsync();
exists.ThrowIfTrue($"{request.Title}存在重复权限标识");
.WhereIF(request.Id.HasValue, x => x.Id != request.Id)
.AnyAsync())
.ThrowIfTrue($"{request.Title}存在重复权限标识");
}
//request.PCode
var menu = await _dbContext.Queryable<MenuEntity>().Where(x => x.Code == request.PCode).FirstAsync();
(menu == null && request.MenuType != MenuEnumType.Folder).ThrowIfTrue($"{request.Title}上级不存在");
var pMenu = await _dbContext.Queryable<MenuEntity>().Where(x => x.Code == request.PCode).SingleAsync();
if (request.MenuType == MenuEnumType.Folder)
{
//request.PCode = null;
@@ -263,18 +264,13 @@ public class MenuService : IMenuService
}
else if (request.MenuType == MenuEnumType.Menu)
{
if (menu.MenuType != MenuEnumType.Folder)
{
throw new Exception($"{request.Title}菜单上级需要为目录");
pMenu.ThrowIfNull($"{request.Title}的上级菜单不存在");
(pMenu.MenuType != MenuEnumType.Folder).ThrowIfTrue($"{request.Title}菜单上级需要为目录");
}
}
else
else if (request.MenuType == MenuEnumType.Button)
{
//button
if (menu.MenuType != MenuEnumType.Menu)
{
throw new Exception($"{request.Title}按钮上级需要为菜单");
}
pMenu.ThrowIfNull($"{request.Title}的上级菜单不存在");
(pMenu.MenuType != MenuEnumType.Menu).ThrowIfTrue($"{request.Title}按钮上级需要为菜单");
}
}
@@ -292,17 +288,17 @@ public class MenuService : IMenuService
}
private async Task ChangeIfCodeEditAsync(string beforeCode, string pcode)
private async Task ChangeIfCodeEditAsync(string beforeCode, string pCode)
{
if (beforeCode != pcode)
if (beforeCode != pCode)
{
//修改下级的PCode为当前的code
var menus = await _dbContext.Queryable<MenuEntity>().Where(x => x.PCode == beforeCode).ToListAsync();
menus.ForEach(x => { x.PCode = pcode; });
menus.ForEach(x => { x.PCode = pCode; });
//修改权限code为当前的code,避免权限丢失
var permissions = await _dbContext.Queryable<MenuPermissionEntity>().Where(x => x.Code == beforeCode).ToListAsync();
permissions.ForEach(x => { x.Code = pcode; });
permissions.ForEach(x => { x.Code = pCode; });
await _dbContext.UpdateAsync(menus);
await _dbContext.UpdateAsync(permissions);