Pārlūkot izejas kodu

fix: 知识分类总数不对

xf 3 mēneši atpakaļ
vecāks
revīzija
265075cca7

+ 14 - 8
src/Hotline.Api/Controllers/KnowledgeCommonController.cs

@@ -137,25 +137,31 @@ namespace Hotline.Api.Controllers
         /// <summary>
         /// 知识分类- 获取层级分类
         /// </summary>
-        /// <param name="IsEnable">不传查询所有</param>
+        /// <param name="isEnable">不传查询所有</param>
         /// <returns></returns>
         [HttpGet("treelist")]
-        public async Task<List<KnowledgeTypeDto>> GetTreeList(bool? IsEnable, string? Attribution)
+        public async Task<List<KnowledgeTypeDto>> GetTreeList(bool? isEnable, string? attribution)
         {
             var isCenter = _sessionContext.OrgIsCenter;
             var query = _knowledgeTypeRepository.Queryable()
-                .WhereIF(IsEnable.HasValue, x => x.IsEnable == IsEnable);
+                .WhereIF(isEnable.HasValue, x => x.IsEnable == isEnable);
             if (!isCenter)
                 query.Where(x => x.Orgs.Any(s => s.Id == _sessionContext.RequiredOrgId));
             return await query
                  .Select(x => new KnowledgeTypeDto()
                  {
                      Id = x.Id.SelectAll(),
-                     KnowledgeNum = SqlFunc.Subqueryable<KnowledgeRelationType>()
-                         .LeftJoin<Knowledge>((kr, k) => kr.KnowledgeId == k.Id)
-                         .Where((kr, k) => kr.KnowledgeTypeSpliceName.StartsWith(x.SpliceName))
-                         .WhereIF(!string.IsNullOrEmpty(Attribution) && !isCenter, (kr, k) => k.Attribution == Attribution)
-                         .DistinctCount(kr => kr.KnowledgeId),
+                     //KnowledgeNum = SqlFunc.Subqueryable<KnowledgeRelationType>()
+                     //    .LeftJoin<Knowledge>((kr, k) => kr.KnowledgeId == k.Id)
+                     //    .Where((kr, k) => kr.KnowledgeTypeSpliceName.StartsWith(x.SpliceName))
+                     //    .WhereIF(!string.IsNullOrEmpty(attribution) && !isCenter, (kr, k) => k.Attribution == attribution)
+                     //    .DistinctCount(kr => kr.KnowledgeId),
+                     KnowledgeNum = SqlFunc.Subqueryable<Knowledge>()
+                         .InnerJoin<KnowledgeRelationType>((k, krt) => k.Id == krt.KnowledgeId)
+                         .InnerJoin<KnowledgeType>((k,krt,t)=>krt.KnowledgeTypeId == t.Id)
+                         .Where((k,krt,t)=>t.SpliceName.StartsWith(x.SpliceName))
+                         .WhereIF(!string.IsNullOrEmpty(attribution) && !isCenter, (k, krt,t) => k.Attribution == attribution)
+                         .DistinctCount(k=>k.Id)
                  })
                  .OrderBy(x => x.Sort)
                  .ToTreeAsync(it => it.children, it => it.ParentId, null, it => it.Id);