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);