Sfoglia il codice sorgente

!1963 授权角色菜单支持同步权限给其他角色
Merge pull request !1963 from Lzh666/N/A

zuohuaijun 1 mese fa
parent
commit
c34393744d

+ 6 - 1
Admin.NET/Admin.NET.Core/Service/Role/Dto/RoleMenuInput.cs

@@ -1,4 +1,4 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
 //
 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
 //
@@ -12,6 +12,11 @@ namespace Admin.NET.Core.Service;
 public class RoleMenuInput : BaseIdInput
 {
     /// <summary>
+    /// 同步角色Id集合
+    /// </summary>
+    public List<long> RoleIdList { get; set; }
+
+    /// <summary>
     /// 菜单Id集合
     /// </summary>
     public List<long> MenuIdList { get; set; }

+ 19 - 2
Admin.NET/Admin.NET.Core/Service/Role/SysRoleMenuService.cs

@@ -1,4 +1,4 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
 //
 // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
 //
@@ -34,10 +34,12 @@ public class SysRoleMenuService : ITransient
     }
 
     /// <summary>
-    /// 授权角色菜单
+    /// 授权角色菜单 🔖
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
+    [UnitOfWork]
+    [DisplayName("授权角色菜单")]
     public async Task GrantRoleMenu(RoleMenuInput input)
     {
         await _sysRoleMenuRep.DeleteAsync(u => u.RoleId == input.Id);
@@ -53,6 +55,21 @@ public class SysRoleMenuService : ITransient
             RoleId = input.Id,
             MenuId = u
         }).ToList();
+
+        // 同步授权数据
+        if (input.RoleIdList?.Count() > 0)
+        {
+            await _sysRoleMenuRep.DeleteAsync(u => input.RoleIdList.Contains(u.RoleId));
+            input.RoleIdList.ForEach(u =>
+            {
+                menus.AddRange(input.MenuIdList.Select(v => new SysRoleMenu
+                {
+                    RoleId = u,
+                    MenuId = v
+                }));
+            });
+        }
+
         await _sysRoleMenuRep.InsertRangeAsync(menus);
 
         // 清除缓存