Jelajahi Sumber

引入配置依赖并优化代码逻辑

引入 `IOptionsSnapshot<AppConfiguration>` 依赖,通过新增的 `_appOptions` 字段读取配置值,并在 `GetTreeList` 和 `GetTreeList/org` 方法中根据 `IsLuZhou` 配置动态调整行为。
移除无用代码,优化方法逻辑顺序,提升代码可读性和可维护性。
田爽 1 Minggu lalu
induk
melakukan
42fd28d416
1 mengubah file dengan 34 tambahan dan 21 penghapusan
  1. 34 21
      src/Hotline.Api/Controllers/KnowledgeCommonController.cs

+ 34 - 21
src/Hotline.Api/Controllers/KnowledgeCommonController.cs

@@ -1,4 +1,5 @@
 using Hotline.Application.Knowledge;
+using Hotline.Configurations;
 using Hotline.KnowledgeBase;
 using Hotline.Repository.SqlSugar.Extensions;
 using Hotline.Settings;
@@ -11,6 +12,7 @@ using Hotline.Share.Requests;
 using Hotline.Tools;
 using MapsterMapper;
 using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
 using SqlSugar;
 using XF.Domain.Authentications;
 using XF.Domain.Exceptions;
@@ -33,26 +35,28 @@ namespace Hotline.Api.Controllers
         private readonly ISystemOrganizeRepository _systemOrganizeRepository;
         private readonly IRepository<Hotspot> _hotspotTypeRepository;
         private readonly IKnowApplication _knowApplication;
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="knowledgeTypeRepository"></param>
-        /// <param name="knowledgeTypeDomainService"></param>
-        /// <param name="knowledgeStandardRepository"></param>
-        /// <param name="sessionContext"></param>
-        /// <param name="mapper"></param>
-        /// <param name="systemOrganizeRepository"></param>
-        /// <param name="hotspotTypeRepository"></param>
-        /// <param name="knowApplication"></param>
-        public KnowledgeCommonController(IRepository<KnowledgeType> knowledgeTypeRepository,
+		private readonly IOptionsSnapshot<AppConfiguration> _appOptions;
+
+		/// <summary>
+		/// 
+		/// </summary>
+		/// <param name="knowledgeTypeRepository"></param>
+		/// <param name="knowledgeTypeDomainService"></param>
+		/// <param name="knowledgeStandardRepository"></param>
+		/// <param name="sessionContext"></param>
+		/// <param name="mapper"></param>
+		/// <param name="systemOrganizeRepository"></param>
+		/// <param name="hotspotTypeRepository"></param>
+		/// <param name="knowApplication"></param>
+		public KnowledgeCommonController(IRepository<KnowledgeType> knowledgeTypeRepository,
             IKnowledgeTypeDomainService knowledgeTypeDomainService,
             IRepository<KnowledgeStandard> knowledgeStandardRepository,
             ISessionContext sessionContext,
             IMapper mapper,
             ISystemOrganizeRepository systemOrganizeRepository,
             IRepository<Hotspot> hotspotTypeRepository,
-             IKnowApplication knowApplication)
+             IKnowApplication knowApplication,
+			 IOptionsSnapshot<AppConfiguration> appOptions)
         {
             _knowledgeTypeRepository = knowledgeTypeRepository;
             _knowledgeTypeDomainService = knowledgeTypeDomainService;
@@ -62,7 +66,9 @@ namespace Hotline.Api.Controllers
             _systemOrganizeRepository = systemOrganizeRepository;
             _hotspotTypeRepository = hotspotTypeRepository;
             _knowApplication = knowApplication;
-        }
+			_appOptions = appOptions;
+
+		}
         #endregion
 
         #region 知识分类
@@ -157,6 +163,10 @@ namespace Hotline.Api.Controllers
         [HttpGet("treelist")]
         public async Task<List<KnowledgeTypeDto>> GetTreeList(bool? isEnable, string? attribution, EKnowledgeStatus? status)
         {
+            if (_appOptions.Value.IsLuZhou)
+            {
+                attribution = string.Empty;
+			}
             var isCenter = _sessionContext.OrgIsCenter;
             var query = _knowledgeTypeRepository.Queryable()
                 .WhereIF(isEnable.HasValue, x => x.IsEnable == isEnable);
@@ -209,12 +219,15 @@ namespace Hotline.Api.Controllers
         [HttpGet("treelist/org")]
         public async Task<List<KnowledgeOrgDto>> GetTreeList(string? Attribution)
         {
-
-            //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);
-            var orgCode = _sessionContext.RequiredOrgId;
+			if (_appOptions.Value.IsLuZhou)
+			{
+				Attribution = string.Empty;
+			}
+			//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);
+			var orgCode = _sessionContext.RequiredOrgId;
             var query = _systemOrganizeRepository.Queryable().WhereIF(!_sessionContext.OrgIsCenter, it => it.Id.StartsWith(_sessionContext.RequiredOrgId))
                     .Select(it => new KnowledgeOrgDto()
                     {