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

View File

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