瀏覽代碼

!659 删除机构时判断
Merge pull request !659 from 莫闻啼/next

zuohuaijun 3 年之前
父節點
當前提交
f0ac414c85
共有 2 個文件被更改,包括 31 次插入1 次删除
  1. 12 0
      Admin.NET/Admin.NET.Core/Enum/ErrorCodeEnum.cs
  2. 19 1
      Admin.NET/Admin.NET.Core/Service/Org/SysOrgService.cs

+ 12 - 0
Admin.NET/Admin.NET.Core/Enum/ErrorCodeEnum.cs

@@ -210,6 +210,18 @@ public enum ErrorCodeEnum
     /// </summary>
     [ErrorCodeItemMetadata("只能增加下级机构")]
     D2006,
+    
+    /// <summary>
+    /// 下级机构下有用户禁止删除
+    /// </summary>
+    [ErrorCodeItemMetadata("下级机构下有用户禁止删除")]
+    D2007,
+    
+    /// <summary>
+    /// 租户默认机构禁止删除
+    /// </summary>
+    [ErrorCodeItemMetadata("租户默认机构禁止删除")]
+    D2008,
 
     /// <summary>
     /// 字典类型不存在

+ 19 - 1
Admin.NET/Admin.NET.Core/Service/Org/SysOrgService.cs

@@ -149,7 +149,19 @@ public class SysOrgService : IDynamicApiController, ITransient
             if (dataScopes.Count < 1 || !dataScopes.Contains(sysOrg.Id))
                 throw Oops.Oh(ErrorCodeEnum.D2003);
         }
-
+        
+        // 若机构为租户默认机构,禁止删除
+        var isTenantOrg = await _sysOrgRep.ChangeRepository<SqlSugarRepository<SysTenant>>()
+            .IsAnyAsync(u => u.OrgId == input.Id);
+        if (isTenantOrg)
+            throw Oops.Oh(ErrorCodeEnum.D2008);
+        
+        // 若机构有用户则禁止删除
+        var orgHasEmp = await _sysOrgRep.ChangeRepository<SqlSugarRepository<SysUser>>()
+            .IsAnyAsync(u => u.OrgId == input.Id);
+        if (orgHasEmp)
+            throw Oops.Oh(ErrorCodeEnum.D2004);
+        
         // 若扩展机构有用户则禁止删除
         var hasExtOrgEmp = await _sysUserExtOrgService.HasUserOrg(sysOrg.Id);
         if (hasExtOrgEmp)
@@ -158,6 +170,12 @@ public class SysOrgService : IDynamicApiController, ITransient
         // 若子机构有用户则禁止删除
         var orgTreeList = await _sysOrgRep.AsQueryable().ToChildListAsync(u => u.Pid, input.Id, true);
         var orgIdList = orgTreeList.Select(u => u.Id).ToList();
+        
+        // 若子机构有用户则禁止删除
+        var cOrgHasEmp = await _sysOrgRep.ChangeRepository<SqlSugarRepository<SysUser>>()
+            .IsAnyAsync(u => orgIdList.Contains(u.OrgId));
+        if (cOrgHasEmp)
+            throw Oops.Oh(ErrorCodeEnum.D2007);
 
         // 级联删除机构子节点
         await _sysOrgRep.DeleteAsync(u => orgIdList.Contains(u.Id));