diff --git a/Src/Dlhis.Sys/Menu/Controllers/MenusController.cs b/Src/Dlhis.Sys/Menu/Controllers/MenusController.cs
index 0f32e9ea..1d2dca16 100644
--- a/Src/Dlhis.Sys/Menu/Controllers/MenusController.cs
+++ b/Src/Dlhis.Sys/Menu/Controllers/MenusController.cs
@@ -30,9 +30,9 @@ public class MenusController : ControllerBase
/// 菜单平台类型 PlatformEnumType
///
[HttpGet("list")]
- public async Task> GetListAsync([EnumDataType(typeof(PlatformEnumType))] PlatformEnumType? platform = PlatformEnumType.PCAdmin)
+ public async Task> GetListAsync([EnumDataType(typeof(PlatformEnumType))] PlatformEnumType platform = PlatformEnumType.PCAdmin)
{
- return await _menuService.GetListAsync(platform.Value);
+ return await _menuService.GetListAsync(platform);
}
///
@@ -53,7 +53,6 @@ public class MenusController : ControllerBase
///
///
///
- [Authorize(Roles = "admin,tenant-admin")]
[HttpPost("assign")]
public async Task AssignmentAsync(MenuPermissionAssignmentRequest request)
{
@@ -66,7 +65,6 @@ public class MenusController : ControllerBase
/// 权限分配类型 AssignTypeEnumType
/// 类型对应的唯一值
///
- [Authorize(Roles = "admin,tenant-admin")]
[HttpGet("assignments")]
public async Task> GetAssignmentsAsync(
[EnumDataType(typeof(AssignTypeEnumType))] AssignTypeEnumType uniqueType,
diff --git a/Src/Dlhis.Sys/Menu/Services/Implements/MenuService.cs b/Src/Dlhis.Sys/Menu/Services/Implements/MenuService.cs
index 877faa4f..011e3844 100644
--- a/Src/Dlhis.Sys/Menu/Services/Implements/MenuService.cs
+++ b/Src/Dlhis.Sys/Menu/Services/Implements/MenuService.cs
@@ -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 menus)
{
@@ -229,30 +230,30 @@ public class MenuService : IMenuService
private async Task CheckAsync(SaveMenuRequest request)
{
//检查重复code
- var exists = await _dbContext.Queryable()
- .Where(x => x.Code == request.Code)
- .WhereIF(request.Id.HasValue, x => x.Id != request.Id).AnyAsync();
- exists.ThrowIfTrue($"{request.Title}存在重复code");
+ (await _dbContext.Queryable()
+ .Where(x => x.Code == request.Code)
+ .WhereIF(request.Id.HasValue, x => x.Id != request.Id).AnyAsync())
+ .ThrowIfTrue($"{request.Title}存在重复code");
//检查name
- exists = await _dbContext.Queryable()
- .Where(x => x.Name == request.Name)
- .WhereIF(request.Id.HasValue, x => x.Id != request.Id).AnyAsync();
- exists.ThrowIfTrue($"{request.Title}存在重复name");
+ (await _dbContext.Queryable()
+ .Where(x => x.Name == request.Name)
+ .WhereIF(request.Id.HasValue, x => x.Id != request.Id).AnyAsync())
+ .ThrowIfTrue($"{request.Title}存在重复name");
+
//判断权限重复
if (request.Permission.IsPresent())
{
- exists = await _dbContext.Queryable()
- .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}存在重复权限标识");
+ (await _dbContext.Queryable()
+ .Where(x => x.Permission == request.Permission && (request.MenuType == MenuEnumType.Menu || request.MenuType == MenuEnumType.Button))
+ .WhereIF(request.Id.HasValue, x => x.Id != request.Id)
+ .AnyAsync())
+ .ThrowIfTrue($"{request.Title}存在重复权限标识");
}
//request.PCode
- var menu = await _dbContext.Queryable().Where(x => x.Code == request.PCode).FirstAsync();
- (menu == null && request.MenuType != MenuEnumType.Folder).ThrowIfTrue($"{request.Title}上级不存在");
-
+ var pMenu = await _dbContext.Queryable().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().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().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);