Esempio n. 1
0
 /// <summary>
 /// 保存权限菜单
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public async Task <ApiResult <string> > SavePermissionMenuAsync(SavePermissionMenuRequest request)
 {
     return(await ExecuteResultAsync(async query =>
     {
         var rsp = new ApiResult <string>();
         // 先把已有的权限数据删除
         // 读取角色权限
         var rolePermissionsResult = await Query <RolePermission>()
                                     .Include(p => p.Permission)
                                     .Where(p => p.Permission.PermissionType == PermissionType.Menu)// 只读取菜单的
                                     .Where(p => p.RoleId == request.RoleId)
                                     .ToListAsync();
         // 如果找到
         if (rolePermissionsResult.Count > 0)
         {
             // 权限Id
             var permissionIds = rolePermissionsResult.Select(p => p.PermissionId).ToList();
             // 删除
             RegisterDeleteRange(rolePermissionsResult);
             // 读取权限菜单
             var permissionMenusResult = await Query <PermissionMenu>().Where(p => permissionIds.Contains(p.PermissionId)).ToListAsync();
             if (permissionMenusResult.Count > 0)
             {
                 // 删除
                 RegisterDeleteRange(permissionMenusResult);
             }
             // 读取权限
             var permissionsResult = await Query <Permission>().Where(p => permissionIds.Contains(p.Id)).ToListAsync();
             if (permissionsResult.Count > 0)
             {
                 // 删除
                 RegisterDeleteRange(permissionsResult);
             }
         }
         // 权限实体列表
         var permissions = new List <Permission>();
         // 权限菜单实体列表
         var permissionMenus = new List <PermissionMenu>();
         // 角色权限实体列表
         var rolePermissions = new List <RolePermission>();
         // 处理数据
         foreach (var menuId in request.MenuIds)
         {
             var permission = new Permission
             {
                 PermissionType = PermissionType.Menu
             };
             // 添加权限
             permissions.Add(permission);
             // 添加权限菜单
             permissionMenus.Add(new PermissionMenu
             {
                 PermissionId = permission.Id,
                 MenuId = menuId
             });
             // 添加角色权限
             rolePermissions.Add(new RolePermission
             {
                 PermissionId = permission.Id,
                 RoleId = request.RoleId
             });
         }
         await RegisterNewRangeAsync(permissions);
         await RegisterNewRangeAsync(permissionMenus);
         await RegisterNewRangeAsync(rolePermissions);
         // 提交
         var flag = await CommitAsync();
         rsp.Message = flag ? "保存成功" : "保存失败";
         rsp.Success = flag;
         return rsp;
     }));
 }
Esempio n. 2
0
 public async Task <ApiResult <string> > SavePermissionMenu([FromBody] SavePermissionMenuRequest request)
 {
     return(await _permissionService.SavePermissionMenuAsync(request));
 }