瀏覽代碼

新增角色设置数据权限功能

zhontai 2 年之前
父節點
當前提交
0d3c8ec2cd

+ 28 - 0
src/platform/ZhonTai.Admin/Services/Role/Dto/RoleSetDataScopeInput.cs

@@ -0,0 +1,28 @@
+using System.ComponentModel.DataAnnotations;
+using ZhonTai.Admin.Core.Validators;
+using ZhonTai.Admin.Domain.Role;
+
+namespace ZhonTai.Admin.Services.Role.Dto;
+
+/// <summary>
+/// 设置数据范围
+/// </summary>
+public class RoleSetDataScopeInput
+{
+    /// <summary>
+    /// 角色Id
+    /// </summary>
+    [Required]
+    [ValidateRequired("请选择角色")]
+    public long RoleId { get; set; }
+
+    /// <summary>
+    /// 数据范围
+    /// </summary>
+    public DataScope DataScope { get; set; }
+
+    /// <summary>
+    /// 指定部门
+    /// </summary>
+    public long[] OrgIds { get; set; }
+}

+ 1 - 1
src/platform/ZhonTai.Admin/Services/Role/Dto/RoleUpdateInput.cs

@@ -9,7 +9,7 @@ namespace ZhonTai.Admin.Services.Role.Dto;
 public partial class RoleUpdateInput : RoleAddInput
 {
     /// <summary>
-    /// 接口Id
+    /// 角色Id
     /// </summary>
     [Required]
     [ValidateRequired("请选择角色")]

+ 2 - 0
src/platform/ZhonTai.Admin/Services/Role/IRoleService.cs

@@ -32,4 +32,6 @@ public interface IRoleService
     Task SoftDeleteAsync(long id);
 
     Task BatchSoftDeleteAsync(long[] ids);
+
+    Task SetDataScopeAsync(RoleSetDataScopeInput input);
 }

+ 29 - 1
src/platform/ZhonTai.Admin/Services/Role/RoleService.cs

@@ -240,7 +240,7 @@ public class RoleService : BaseService, IRoleService, IDynamicApi
         {
             await Cache.DelAsync(CacheKeys.DataPermission + userId);
         }
-    }
+    }    
 
     /// <summary>
     /// 彻底删除
@@ -327,4 +327,32 @@ public class RoleService : BaseService, IRoleService, IDynamicApi
             await Cache.DelAsync(CacheKeys.DataPermission + userId);
         }
     }
+
+    /// <summary>
+    /// 设置数据权限
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    public async Task SetDataScopeAsync(RoleSetDataScopeInput input)
+    {
+        var entity = await _roleRepository.GetAsync(input.RoleId);
+        if (!(entity?.Id > 0))
+        {
+            throw ResultOutput.Exception("角色不存在");
+        }
+
+        Mapper.Map(input, entity);
+        await _roleRepository.UpdateAsync(entity);
+        await _roleOrgRepository.DeleteAsync(a => a.RoleId == entity.Id);
+        if (input.DataScope == DataScope.Custom)
+        {
+            await AddRoleOrgAsync(entity.Id, input.OrgIds);
+        }
+
+        var userIds = await _userRoleRepository.Select.Where(a => a.RoleId == entity.Id).ToListAsync(a => a.UserId);
+        foreach (var userId in userIds)
+        {
+            await Cache.DelAsync(CacheKeys.DataPermission + userId);
+        }
+    }
 }

+ 28 - 1
src/platform/ZhonTai.Admin/ZhonTai.Admin.xml

@@ -5151,6 +5151,26 @@
             创建时间
             </summary>
         </member>
+        <member name="T:ZhonTai.Admin.Services.Role.Dto.RoleSetDataScopeInput">
+            <summary>
+            设置数据范围
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Services.Role.Dto.RoleSetDataScopeInput.RoleId">
+            <summary>
+            角色Id
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Services.Role.Dto.RoleSetDataScopeInput.DataScope">
+            <summary>
+            数据范围
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Services.Role.Dto.RoleSetDataScopeInput.OrgIds">
+            <summary>
+            指定部门
+            </summary>
+        </member>
         <member name="T:ZhonTai.Admin.Services.Role.Dto.RoleUpdateInput">
             <summary>
             修改
@@ -5158,7 +5178,7 @@
         </member>
         <member name="P:ZhonTai.Admin.Services.Role.Dto.RoleUpdateInput.Id">
             <summary>
-            接口Id
+            角色Id
             </summary>
         </member>
         <member name="P:ZhonTai.Admin.Services.Role.Dto.UserGetRoleUserListOutput.Id">
@@ -5265,6 +5285,13 @@
             <param name="ids"></param>
             <returns></returns>
         </member>
+        <member name="M:ZhonTai.Admin.Services.Role.RoleService.SetDataScopeAsync(ZhonTai.Admin.Services.Role.Dto.RoleSetDataScopeInput)">
+            <summary>
+            设置数据权限
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
         <member name="T:ZhonTai.Admin.Services.Role.MapConfig">
             <summary>
             映射配置