Dun.Jason преди 11 месеца
родител
ревизия
aed0a8e8b4

+ 15 - 0
src/Hotline.Api/Controllers/OrgController.cs

@@ -50,6 +50,21 @@ namespace Hotline.Api.Controllers
             return await _systemOrganizeRepository.GetOrgJson();
         }
 
+        [Permission(EPermission.GetOrgJson)]
+        [HttpGet("getorgjsonforuser")]
+        [AllowAnonymous]
+        public async Task<IReadOnlyList<SystemOrganize>> GetOrgJsonForUser()
+        {
+            if (_sessionContext.OrgIsCenter)
+            {
+                return await _systemOrganizeRepository.GetOrgJson();
+            }
+            else
+            {
+                return await _systemOrganizeRepository.GetOrgJsonForUser(_sessionContext.RequiredOrgId);
+            }
+        }
+
         ///// <summary>
         ///// 新增组织架构
         ///// </summary>

+ 12 - 0
src/Hotline.Repository.SqlSugar/System/SystemOrganizeRepository.cs

@@ -2,6 +2,7 @@
 using Hotline.SeedData;
 using Hotline.Settings;
 using SqlSugar;
+using XF.Domain.Authentications;
 using XF.Domain.Dependency;
 
 namespace Hotline.Repository.SqlSugar.System
@@ -21,6 +22,17 @@ namespace Hotline.Repository.SqlSugar.System
             return list;
         }
 
+        public async Task<IReadOnlyList<SystemOrganize>> GetOrgJsonForUser(string orgCode)
+        {
+            var list = await Db.Queryable<SystemOrganize>()
+                .Where(it => it.Id.StartsWith(orgCode))
+                .OrderBy(d => d.Id)
+                .ToTreeAsync(it => it.Children, it => it.ParentId, orgCode.Length > 6 ? orgCode.Substring(0, orgCode.Length - 3) : null);
+            return list;
+        }
+
+
+
         public async Task<IReadOnlyList<SystemOrganize>> GetCanUseOrg()
         {
             var list = await Db.Queryable<SystemOrganize>()

+ 5 - 1
src/Hotline/Settings/ISystemOrganizeRepository.cs

@@ -1,4 +1,5 @@
-using XF.Domain.Repository;
+using XF.Domain.Authentications;
+using XF.Domain.Repository;
 
 namespace Hotline.Settings
 {
@@ -7,6 +8,9 @@ namespace Hotline.Settings
     {
         Task<IReadOnlyList<SystemOrganize>> GetOrgJson();
 
+        Task<IReadOnlyList<SystemOrganize>> GetOrgJsonForUser(string orgCode);
+
+
         Task<IReadOnlyList<SystemOrganize>> GetCanUseOrg();
 
         Task<IReadOnlyList<SystemOrganize>> GetCanUseOrgByOrgCode(string orgCode);