diff --git a/ZR.Admin.WebApi/Controllers/System/SysRoleController.cs b/ZR.Admin.WebApi/Controllers/System/SysRoleController.cs
index a79b551..7e3f7b8 100644
--- a/ZR.Admin.WebApi/Controllers/System/SysRoleController.cs
+++ b/ZR.Admin.WebApi/Controllers/System/SysRoleController.cs
@@ -9,6 +9,8 @@ using ZR.Model;
using ZR.Model.System;
using ZR.Service.System.IService;
using ZR.Admin.WebApi.Extensions;
+using ZR.Model.System.Dto;
+using Mapster;
namespace ZR.Admin.WebApi.Controllers.System
{
@@ -78,7 +80,7 @@ namespace ZR.Admin.WebApi.Controllers.System
}
///
- /// 修改角色 √
+ /// 修改角色
///
///
///
@@ -118,12 +120,12 @@ namespace ZR.Admin.WebApi.Controllers.System
[HttpPut("dataScope")]
[ActionPermissionFilter(Permission = "system:role:authorize")]
[Log(Title = "角色管理", BusinessType = BusinessType.UPDATE)]
- public IActionResult DataScope([FromBody] SysRole sysRoleDto)
+ public IActionResult DataScope([FromBody] SysRoleDto sysRoleDto)
{
if (sysRoleDto == null || sysRoleDto.RoleId <= 0) return ToResponse(ApiResult.Error(101, "请求参数错误"));
-
+ SysRole sysRole = sysRoleDto.Adapt();
sysRoleDto.Create_by = HttpContext.GetName();
- sysRoleService.CheckRoleAllowed(sysRoleDto);
+ sysRoleService.CheckRoleAllowed(sysRole);
bool result = sysRoleService.AuthDataScope(sysRoleDto);
diff --git a/ZR.Model/System/Dto/SysRoleDto.cs b/ZR.Model/System/Dto/SysRoleDto.cs
index 241756d..1ff297f 100644
--- a/ZR.Model/System/Dto/SysRoleDto.cs
+++ b/ZR.Model/System/Dto/SysRoleDto.cs
@@ -6,12 +6,16 @@ namespace ZR.Model.System.Dto
{
public long RoleId { get; set; }
///
- /// 角色分配菜单
+ /// 要添加的菜单集合
///
public List MenuIds { get; set; } = new List();
public string RoleName { get; set; }
public string RoleKey { get; set; }
public int RoleSort { get; set; }
public string Status { get; set; }
+ ///
+ /// 减少菜单集合
+ ///
+ public List DelMenuIds { get; set; } = new List();
}
}
diff --git a/ZR.Model/System/Dto/SysRoleMenuDto.cs b/ZR.Model/System/Dto/SysRoleMenuDto.cs
new file mode 100644
index 0000000..fd801f1
--- /dev/null
+++ b/ZR.Model/System/Dto/SysRoleMenuDto.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace ZR.Model.System.Dto
+{
+ public class SysRoleMenuDto
+ {
+ public long RoleId { get; set; }
+ ///
+ /// 角色分配菜单
+ ///
+ public List MenuIds { get; set; } = new List();
+ public string RoleName { get; set; }
+ public string RoleKey { get; set; }
+ public string Create_by { get; set; }
+ public DateTime Create_time{ get; set; }
+ }
+}
diff --git a/ZR.Service/System/IService/ISysMenuService.cs b/ZR.Service/System/IService/ISysMenuService.cs
index 9f31a12..2eb3abc 100644
--- a/ZR.Service/System/IService/ISysMenuService.cs
+++ b/ZR.Service/System/IService/ISysMenuService.cs
@@ -72,5 +72,13 @@ namespace ZR.Service.System.IService
///
///
int DeleteRoleMenuByRoleId(long roleId);
+
+ ///
+ /// 删除角色指定菜单
+ ///
+ ///
+ ///
+ ///
+ bool DeleteRoleMenuByRoleIdMenuIds(long roleId, long[] menuIds);
}
}
diff --git a/ZR.Service/System/IService/ISysRoleService.cs b/ZR.Service/System/IService/ISysRoleService.cs
index cff824d..300ba37 100644
--- a/ZR.Service/System/IService/ISysRoleService.cs
+++ b/ZR.Service/System/IService/ISysRoleService.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using ZR.Model;
using ZR.Model.System;
+using ZR.Model.System.Dto;
namespace ZR.Service.System.IService
{
@@ -81,7 +82,7 @@ namespace ZR.Service.System.IService
///
///
///
- bool AuthDataScope(SysRole role);
+ bool AuthDataScope(SysRoleDto role);
#region Service
@@ -90,7 +91,7 @@ namespace ZR.Service.System.IService
///
///
///
- public int InsertRoleMenu(SysRole sysRoleDto);
+ public int InsertRoleMenu(SysRoleDto sysRoleDto);
///
/// 判断是否是管理员
diff --git a/ZR.Service/System/SysRoleMenuService.cs b/ZR.Service/System/SysRoleMenuService.cs
index 7327937..bebdee2 100644
--- a/ZR.Service/System/SysRoleMenuService.cs
+++ b/ZR.Service/System/SysRoleMenuService.cs
@@ -26,7 +26,10 @@ namespace ZR.Service.System
{
return Delete(roleId);
}
-
+ public bool DeleteRoleMenuByRoleIdMenuIds(long roleId, long[] menuIds)
+ {
+ return Delete(f => f.Role_id == roleId && menuIds.Contains(f.Menu_id));
+ }
///
/// 根据角色获取菜单id
///
diff --git a/ZR.Service/System/SysRoleService.cs b/ZR.Service/System/SysRoleService.cs
index 86050c9..57d4d0e 100644
--- a/ZR.Service/System/SysRoleService.cs
+++ b/ZR.Service/System/SysRoleService.cs
@@ -7,6 +7,7 @@ using System.Collections.Generic;
using System.Linq;
using ZR.Model;
using ZR.Model.System;
+using ZR.Model.System.Dto;
using ZR.Repository;
using ZR.Service.System.IService;
@@ -179,15 +180,31 @@ namespace ZR.Service
///
///
///
- public bool AuthDataScope(SysRole sysRoleDto)
+ public bool AuthDataScope(SysRoleDto sysRoleDto)
{
return UseTran2(() =>
{
//删除角色菜单
- DeleteRoleMenuByRoleId(sysRoleDto.RoleId);
+ //DeleteRoleMenuByRoleId(sysRoleDto.RoleId);
+ //InsertRoleMenu(sysRoleDto);
+ var oldMenus = SelectUserRoleMenus(sysRoleDto.RoleId);
+ var newMenus = sysRoleDto.MenuIds;
+
+ //并集菜单
+ var arr_c = oldMenus.Intersect(newMenus).ToArray();
+ //获取减量菜单
+ var delMenuIds = oldMenus.Where(c => !arr_c.Contains(c)).ToArray();
+ //获取增量
+ var addMenuIds = newMenus.Where(c => !arr_c.Contains(c)).ToArray();
+
+ RoleMenuService.DeleteRoleMenuByRoleIdMenuIds(sysRoleDto.RoleId, delMenuIds);
+ sysRoleDto.MenuIds = addMenuIds.ToList();
+ sysRoleDto.DelMenuIds= delMenuIds.ToList();
InsertRoleMenu(sysRoleDto);
+ Console.WriteLine($"减少了{delMenuIds.Length},增加了{addMenuIds.Length}菜单");
});
}
+
#region Service
@@ -196,14 +213,14 @@ namespace ZR.Service
///
///
///
- public int InsertRoleMenu(SysRole sysRoleDto)
+ public int InsertRoleMenu(SysRoleDto sysRoleDto)
{
int rows = 1;
// 新增用户与角色管理
- List sysRoleMenus = new List();
+ List sysRoleMenus = new();
foreach (var item in sysRoleDto.MenuIds)
{
- SysRoleMenu rm = new SysRoleMenu
+ SysRoleMenu rm = new()
{
Menu_id = item,
Role_id = sysRoleDto.RoleId,
diff --git a/ZR.Service/System/SysUserRoleService.cs b/ZR.Service/System/SysUserRoleService.cs
index 35f7ba1..37139f5 100644
--- a/ZR.Service/System/SysUserRoleService.cs
+++ b/ZR.Service/System/SysUserRoleService.cs
@@ -16,13 +16,6 @@ namespace ZR.Service.System
[AppService(ServiceType = typeof(ISysUserRoleService), ServiceLifetime = LifeTime.Transient)]
public class SysUserRoleService : BaseService, ISysUserRoleService
{
- //public SysUserRoleRepository SysUserRoleRepository;
-
- //public SysUserRoleService(SysUserRoleRepository sysUserRoleRepository)
- //{
- // SysUserRoleRepository = sysUserRoleRepository;
- //}
-
///
/// 通过角色ID查询角色使用数量
///
@@ -85,7 +78,6 @@ namespace ZR.Service.System
///
public PagedInfo GetSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto)
{
- //return SysUserRoleRepository.GetSysUsersByRoleId(roleUserQueryDto);
var query = Context.Queryable((t1, u) => new JoinQueryInfos(
JoinType.Left, t1.UserId == u.UserId))
.Where((t1, u) => t1.RoleId == roleUserQueryDto.RoleId && u.DelFlag == "0");