TANG JIANG před 2 roky
rodič
revize
4ac33ccfe1

+ 16 - 0
src/Hotline.Api/Controllers/KnowledgeCommonController.cs

@@ -2,6 +2,7 @@
 using Hotline.Permissions;
 using Hotline.Share.Dtos.Knowledge;
 using MapsterMapper;
+using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using XF.Domain.Exceptions;
 
@@ -133,6 +134,21 @@ namespace Hotline.Api.Controllers
             return await _knowledgeTypeRepository.GetTree(Guid.Empty.ToString());
         }
 
+        /// <summary>
+        /// 知识分类- 只获取一级
+        /// </summary>
+        /// <param name="ParentId">不传默认查询第一级</param>
+        /// <returns></returns>
+        [HttpGet("typelist")]
+        [AllowAnonymous]
+        public async Task<List<KnowledgeType>> GetTypeList(string ParentId)
+        {
+            if (string.IsNullOrEmpty(ParentId))
+                ParentId = Guid.Empty.ToString();
+            // return await _knowledgeTypeRepository.QueryAsync(p=>p.ParentId== ParentId);
+            return await _knowledgeTypeRepository.Queryable().Where(p => p.ParentId == ParentId).OrderByDescending(p => p.Sort).ToListAsync();
+        }
+
         #endregion
 
         #region 编写规范

+ 18 - 19
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -192,31 +192,30 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="Id"></param>
         /// <returns></returns>
-       // [Permission(EPermission.KnowledgeDelete)]
+        [Permission(EPermission.KnowledgeDelete)]
         [HttpDelete("knowdelete")]
-        [AllowAnonymous]
         public async Task KnowledgeDelete(string Id)
         {
             await _knowledgeDomainService.KnowledgeDelete(Id, HttpContext.RequestAborted);
         }
 
-        /// <summary>
-        /// 审批操作
-        /// </summary>
-        /// <param name="Ids">需要审批的数据ID</param>
-        /// <param name="ApprovalStatus">审核状态:0:通过;1:不通过</param>
-        /// <param name="HandleOpinions">办理意见</param>
-        /// <returns></returns>
-        [HttpPut("approvalhandle")]
-        public async Task ApprovalHandle(List<string> Ids, string ApprovalStatus, string? HandleOpinions)
-        {
-            if (Ids is null || Ids.Count == 0)
-                throw UserFriendlyException.SameMessage("数据不能为空");
-            if (ApprovalStatus == "1" && string.IsNullOrEmpty(HandleOpinions))
-                throw UserFriendlyException.SameMessage("办理意见不能为空");
-            //审批操作
-            await _knowledgeDomainService.ApprovalHandle(Ids, ApprovalStatus, HandleOpinions, HttpContext.RequestAborted);
-        }
+        ///// <summary>
+        ///// 审批操作
+        ///// </summary>
+        ///// <param name="Ids">需要审批的数据ID</param>
+        ///// <param name="ApprovalStatus">审核状态:0:通过;1:不通过</param>
+        ///// <param name="HandleOpinions">办理意见</param>
+        ///// <returns></returns>
+        //[HttpPut("approvalhandle")]
+        //public async Task ApprovalHandle(List<string> Ids, string ApprovalStatus, string? HandleOpinions)
+        //{
+        //    if (Ids is null || Ids.Count == 0)
+        //        throw UserFriendlyException.SameMessage("数据不能为空");
+        //    if (ApprovalStatus == "1" && string.IsNullOrEmpty(HandleOpinions))
+        //        throw UserFriendlyException.SameMessage("办理意见不能为空");
+        //    //审批操作
+        //   await _knowledgeDomainService.ApprovalHandle(Ids, ApprovalStatus, HandleOpinions, HttpContext.RequestAborted);
+        //}
 
         /// <summary>
         /// 知识库-知识下架

+ 24 - 1
src/Hotline.Application/Knowledge/KnowApplication.cs

@@ -52,12 +52,35 @@ namespace Hotline.Application.Knowledge
             switch (workflow.ModuleCode)
             {
                 case WorkflowModuleConsts.KnowledgeAdd://新增
-                case WorkflowModuleConsts.KnowledgeUpdate://修改
                     //修改知识状态为已上架
                     knowledge.Status = EKnowledgeStatus.OnShelf;
                     knowledge.OnShelfTime = System.DateTime.Now;
                     await _knowledgeRepository.UpdateAsync(knowledge);
                     break;
+                case WorkflowModuleConsts.KnowledgeUpdate://修改
+                    //查询上个版本的数据
+                    var oldknowledge = await _knowledgeRepository.GetAsync(p => p.Code == knowledge.Code && p.Id != knowledge.Id && p.Status != EKnowledgeStatus.Auditing, true, p => p.Version);
+                    if (oldknowledge != null)
+                    {
+                        //交换数据、为了保持浏览记录等数据的存在
+                        var tempId = knowledge.Id;
+                        var tempOldId = oldknowledge.Id;
+                        var temp = knowledge;
+                        _mapper.Map(oldknowledge, knowledge);
+                        oldknowledge.Id = tempId;
+                        _mapper.Map(temp, oldknowledge);
+                        knowledge.Id = tempOldId;
+                        await _knowledgeRepository.UpdateAsync(knowledge);
+                        await _knowledgeRepository.UpdateAsync(oldknowledge);
+                    }
+                    else
+                    {
+                        //修改知识状态为已上架
+                        knowledge.Status = EKnowledgeStatus.OnShelf;
+                        knowledge.OnShelfTime = System.DateTime.Now;
+                        await _knowledgeRepository.UpdateAsync(knowledge);
+                    }
+                    break;
 
                 case WorkflowModuleConsts.KnowledgeDelete://删除
                     //知识先下架,在删除