Bläddra i källkod

提交修改数据

TANG JIANG 2 år sedan
förälder
incheckning
fbde7cdf02

+ 78 - 105
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -33,6 +33,8 @@ namespace Hotline.Api.Controllers
         private readonly IMediator _mediator;
         private readonly IWorkflowApplication _workflowApplication;
         private readonly IWorkflowDomainService _workflowDomainService;
+        private readonly IKnowledgeWorkFlowRepository _knowledgeWorkFlowRepository;
+
 
         /// <summary>
         /// 
@@ -46,9 +48,10 @@ namespace Hotline.Api.Controllers
         /// <param name="mediator"></param>
         /// <param name="workflowApplication"></param>
         /// <param name="workflowDomainService"></param>
+        /// <param name="knowledgeWorkFlowRepository"></param>
         public KnowledgeController(IKnowledgeRepository knowledgeRepository, IKnowledgeTempRepository knowledgeTempRepository,
            ISessionContext sessionContext, IKnowledgeDomainService knowledgeDomainService, IMapper mapper, IKnowApplication knowApplication,
-           IMediator mediator, IWorkflowApplication workflowApplication, IWorkflowDomainService workflowDomainService)
+           IMediator mediator, IWorkflowApplication workflowApplication, IWorkflowDomainService workflowDomainService, IKnowledgeWorkFlowRepository knowledgeWorkFlowRepository)
         {
             _knowledgeRepository = knowledgeRepository;
             _knowledgeTempRepository = knowledgeTempRepository;
@@ -59,6 +62,7 @@ namespace Hotline.Api.Controllers
             _mediator = mediator;
             _workflowApplication = workflowApplication;
             _workflowDomainService = workflowDomainService;
+            _knowledgeWorkFlowRepository = knowledgeWorkFlowRepository;
         }
         #region 草稿箱
         /// <summary>
@@ -185,15 +189,21 @@ namespace Hotline.Api.Controllers
             //处理流程
             if (!string.IsNullOrEmpty(knowId))
             {
+                KnowledgeWorkFlow workFlow = new()
+                {
+                    KnowledgeId = knowId,
+                    WorkflowModuleStatus = EKnowledgeApplyType.Add,
+                    WorkFlowApplyStatus = EKnowledgeWorkFlowStatus.Auditing
+                };
+                var workId = await _knowledgeWorkFlowRepository.AddAsync(workFlow);
+
                 //调用流程创建
-                var exists = await _workflowDomainService.ExsitsAsync(WorkflowModuleConsts.KnowledgeAdd, knowId, HttpContext.RequestAborted);
-                if (exists)
-                    throw UserFriendlyException.SameMessage($"该知识已发起过{WorkflowModule.Modules[WorkflowModuleConsts.KnowledgeAdd]}流程");
-                var workFlowId = await _workflowApplication.StartWorkflowAsync(dto.StartWorkflowDto, knowId, HttpContext.RequestAborted);
+                var workFlowId = await _workflowApplication.StartWorkflowAsync(dto.StartWorkflowDto, workId, HttpContext.RequestAborted);
                 if (string.IsNullOrEmpty(workFlowId))
                 {
                     //创建流程失败
                     await _knowledgeRepository.RemoveAsync(p => p.Id == knowId, false, HttpContext.RequestAborted);
+                    await _knowledgeWorkFlowRepository.RemoveAsync(p => p.Id == workFlow.Id, false, HttpContext.RequestAborted);
                 }
             }
             return knowId;
@@ -212,12 +222,20 @@ namespace Hotline.Api.Controllers
             var knowId = await _knowledgeDomainService.KnowledgeUpdate(dto, HttpContext.RequestAborted);
             if (!string.IsNullOrEmpty(knowId))
             {
+                KnowledgeWorkFlow workFlow = new()
+                {
+                    KnowledgeId = knowId,
+                    WorkflowModuleStatus = EKnowledgeApplyType.Update,
+                    WorkFlowApplyStatus = EKnowledgeWorkFlowStatus.Auditing
+                };
+                var workId = await _knowledgeWorkFlowRepository.AddAsync(workFlow);
                 //知识更新流程创建
-                var workFlowId = await _workflowApplication.StartWorkflowAsync(dto.StartWorkflowDto, knowId, HttpContext.RequestAborted);
+                var workFlowId = await _workflowApplication.StartWorkflowAsync(dto.StartWorkflowDto, workId, HttpContext.RequestAborted);
                 if (string.IsNullOrEmpty(workFlowId))
                 {
                     //创建流程失败
                     await _knowledgeRepository.RemoveAsync(p => p.Id == knowId, false, HttpContext.RequestAborted);
+                    await _knowledgeWorkFlowRepository.RemoveAsync(p => p.Id == workFlow.Id, false, HttpContext.RequestAborted);
                 }
             }
         }
@@ -235,20 +253,19 @@ namespace Hotline.Api.Controllers
             var know = await _knowledgeRepository.GetAsync(Id, HttpContext.RequestAborted);
             if (know != null && know.IsDeleted == false)
             {
-                //如果审批不通过可以直接删除此条信息
-                if (know.Status == EKnowledgeStatus.Failed)
-                {
-                    await _knowledgeRepository.RemoveAsync(know, false, HttpContext.RequestAborted);
-                }
-                else//审批通过需要走删除流程
+                KnowledgeWorkFlow workFlow = new()
                 {
-                    //调用流程创建
-                    var exists = await _workflowDomainService.ExsitsAsync(WorkflowModuleConsts.KnowledgeDelete, Id, HttpContext.RequestAborted);
-                    if (exists)
-                        throw UserFriendlyException.SameMessage($"该知识已发起过{WorkflowModule.Modules[WorkflowModuleConsts.KnowledgeDelete]}流程");
-
-                    await _workflowApplication.StartWorkflowAsync(workDto, know.Id, HttpContext.RequestAborted);
-                }
+                    KnowledgeId = know.Id,
+                    WorkflowModuleStatus = EKnowledgeApplyType.Delete,
+                    WorkFlowApplyStatus = EKnowledgeWorkFlowStatus.Auditing
+                };
+                var workId = await _knowledgeWorkFlowRepository.AddAsync(workFlow);
+                //验证是否已经发起过知识删除流程
+                var exists = _knowledgeWorkFlowRepository.GetAsync(p => p.KnowledgeId == know.Id && p.WorkflowModuleStatus == EKnowledgeApplyType.Delete);//await _workflowDomainService.ExsitsAsync(WorkflowModuleConsts.KnowledgeDelete, Id, HttpContext.RequestAborted);
+                if (exists != null)
+                    throw UserFriendlyException.SameMessage($"该知识已发起过{WorkflowModule.Modules[WorkflowModuleConsts.KnowledgeDelete]}流程");
+                //调用流程创建
+                await _workflowApplication.StartWorkflowAsync(workDto, workId, HttpContext.RequestAborted);
             }
             else
                 throw UserFriendlyException.SameMessage("知识删除失败");
@@ -330,7 +347,7 @@ namespace Hotline.Api.Controllers
             RefAsync<int> total = 0;
             var temp = await _knowledgeRepository
               .Queryable(true)
-              .Where(p => p.Status == EKnowledgeStatus.OnShelf)
+              .Where(p => p.Status == EKnowledgeStatus.OnShelf && p.IsDeleted == false)
               .WhereIF(pagedDto.RetrievalType == null || pagedDto.RetrievalType == EKnowledgeRetrievalType.All, d => d.Title.Contains(pagedDto.Keyword) || d.Content.Contains(pagedDto.Keyword) || d.Additions.Contains(pagedDto.Keyword))
               .WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Title, d => d.Title.Contains(pagedDto.Keyword))
               .WhereIF(pagedDto.RetrievalType == EKnowledgeRetrievalType.Content, d => d.Content.Contains(pagedDto.Keyword))
@@ -354,108 +371,64 @@ namespace Hotline.Api.Controllers
         }
         #endregion
 
-        #region 审核管理----查询业务需要等工作流统一提供查询方式
+        #region 我的知识删除列表
         /// <summary>
-        /// 审核管理-全部
+        /// 我的知识删除列表
         /// </summary>
         /// <param name="pagedDto"></param>
         /// <returns></returns>
-        [Permission(EPermission.KnowledgeApprovedAllList)]
-        [HttpGet("approvedalllist")]
-        public async Task<PagedDto<KnowledgeApprovalDataDto>> ApprovedAllList([FromBody] KnowledgeApprovalPagedListDto pagedDto)
+        [HttpGet("deletelist")]
+        public async Task<PagedDto<KnowledgeDataDto>> GetDeleteApplyList([FromBody] KnowledgeDeletelPagedListDto pagedDto)
         {
-            var (total, items) = await _knowledgeRepository
-              .Queryable(true)
-              .Includes(it => it.User)
-              .Includes(it => it.SystemOrganize)
-              .Includes(it => it.KnowledgeType)
-              .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
-              .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateOrgName!))
-              .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
-
-              .OrderByDescending(p => p.CreationTime)
-              .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
+            var (total, items) = await _knowledgeWorkFlowRepository
+               .Queryable(true)
+               .Includes(it => it.Knowledge)
+               .Includes(it => it.Knowledge.User)
+               .Includes(it => it.Knowledge.SystemOrganize)
+               .Includes(it => it.Knowledge.KnowledgeType)
+               .Includes(it => it.Workflow)
+               .WhereIF(pagedDto.EKnowledgeWorkFlowStatus.HasValue, d => d.WorkFlowApplyStatus == pagedDto.EKnowledgeWorkFlowStatus)
+               .WhereIF(pagedDto.StartApplyTime.HasValue, d => d.CreationTime >= pagedDto.StartApplyTime)
+               .WhereIF(pagedDto.EndApplyTime.HasValue, d => d.CreationTime <= pagedDto.EndApplyTime)
+               .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), d => d.Knowledge.User.Name.Contains(pagedDto.Keyword!)
+               || d.Knowledge.SystemOrganize.OrgName.Contains(pagedDto.Keyword!)
+               || d.Knowledge.Title.Contains(pagedDto.Keyword!))
+
+               .OrderByDescending(p => p.CreationTime)
+               .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
 
-            return new PagedDto<KnowledgeApprovalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeApprovalDataDto>>(items));
+            return new PagedDto<KnowledgeDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(items));
         }
 
-        /// <summary>
-        /// 待审核
-        /// </summary>
-        /// <param name="pagedDto"></param>
-        /// <returns></returns>
-        [Permission(EPermission.KnowledgeToBeReviewed)]
-        [HttpGet("tobereviewed")]
-        public async Task<PagedDto<KnowledgeApprovalDataDto>> ToBeReviewed([FromBody] KnowledgeApprovalPagedListDto pagedDto)
-        {
-            //审核类型字段加在哪里
-            //我审核通过的和我审核不通过的怎么查询
-            //
-            //还需要增加审核类型查询条件
-            var (total, items) = await _knowledgeRepository
-              .Queryable(true)
-              .Includes(it => it.User)
-              .Includes(it => it.SystemOrganize)
-              .Includes(it => it.KnowledgeType)
-              .Where(p => p.Status == EKnowledgeStatus.Auditing && p.AssignUserIds.Contains(_sessionContext.UserId!))
-              .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
-              .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateOrgName!))
-              .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
-
-              .OrderByDescending(p => p.CreationTime)
-              .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
-
-            return new PagedDto<KnowledgeApprovalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeApprovalDataDto>>(items));
-        }
+        #endregion
 
+        #region 审核管理
         /// <summary>
-        /// 审核通过
+        /// 审核管理
         /// </summary>
         /// <param name="pagedDto"></param>
         /// <returns></returns>
-        [Permission(EPermission.KnowledgeApprovedList)]
+        [Permission(EPermission.KnowledgeApprovedAllList)]
         [HttpGet("approvedlist")]
         public async Task<PagedDto<KnowledgeApprovalDataDto>> ApprovedList([FromBody] KnowledgeApprovalPagedListDto pagedDto)
         {
-            //自己审批了哪些数据,通过什么方式去查询这个数据是属于自己的
-
-            var (total, items) = await _knowledgeRepository
-              .Queryable(true)
-              .Includes(it => it.User)
-              .Includes(it => it.SystemOrganize)
-              .Includes(it => it.KnowledgeType)
-              .Where(p => p.Status == EKnowledgeStatus.OnShelf || p.Status == EKnowledgeStatus.OffShelf)
-              .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
-              .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateOrgName!))
-              .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
-
-              .OrderByDescending(p => p.CreationTime)
-              .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
+            var (total, items) = await _knowledgeWorkFlowRepository
+                .Queryable(true)
+                .Includes(it => it.Knowledge)
+                .Includes(it => it.Knowledge.User)
+                .Includes(it => it.Knowledge.SystemOrganize)
+                .Includes(it => it.Knowledge.KnowledgeType)
+                .Includes(it=>it.Workflow)
+
+                .WhereIF(pagedDto.EKnowledgeApplyType.HasValue, d => d.WorkflowModuleStatus== pagedDto.EKnowledgeApplyType)
+                .WhereIF(pagedDto.EKnowledgeWorkFlowStatus.HasValue, d=>d.WorkFlowApplyStatus == pagedDto.EKnowledgeWorkFlowStatus)
+                .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), d => d.Knowledge.User.Name.Contains(pagedDto.Keyword!)
+                || d.Knowledge.SystemOrganize.OrgName.Contains(pagedDto.Keyword!)
+                || d.Knowledge.Title.Contains(pagedDto.Keyword!))
+
+                .OrderByDescending(p => p.CreationTime)
+                .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
 
-            return new PagedDto<KnowledgeApprovalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeApprovalDataDto>>(items));
-        }
-
-        /// <summary>
-        /// 审核不通过
-        /// </summary>
-        /// <param name="pagedDto"></param>
-        /// <returns></returns>
-        [Permission(EPermission.KnowledgeApprovedFailedList)]
-        [HttpGet("approvedfailedlist")]
-        public async Task<PagedDto<KnowledgeApprovalDataDto>> ApprovedFailedList([FromBody] KnowledgeApprovalPagedListDto pagedDto)
-        {
-            var (total, items) = await _knowledgeRepository
-              .Queryable(true)
-              .Includes(it => it.User)
-              .Includes(it => it.SystemOrganize)
-              .Includes(it => it.KnowledgeType)
-              .Where(p => p.Status == EKnowledgeStatus.Failed)
-              .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateUserName), d => d.User.Name.Contains(pagedDto.CreateUserName!))
-              .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgName), d => d.SystemOrganize.OrgName.Contains(pagedDto.CreateOrgName!))
-              .WhereIF(!string.IsNullOrEmpty(pagedDto.Title), d => d.Title.Contains(pagedDto.Title!))
-
-              .OrderByDescending(p => p.CreationTime)
-              .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
 
             return new PagedDto<KnowledgeApprovalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeApprovalDataDto>>(items));
         }

+ 16 - 15
src/Hotline.Application/Knowledge/KnowApplication.cs

@@ -50,6 +50,7 @@ namespace Hotline.Application.Knowledge
                .LeftJoin<User>((o, cus) => o.CreatorId == cus.Id)
                .LeftJoin<SystemOrganize>((o, cus, sys) => o.CreatorOrgId == sys.Id)
                .LeftJoin<KnowledgeType>((o, cus, sys, kn) => o.KnowledgeTypeId == kn.Id)
+               .Where((o, cus, sys, kn) => o.IsDeleted == false)
                //关键词查询标题、创建人、创建部门
                .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), (o, cus, sys, kn) => o.Title.Contains(pagedDto.Keyword!) || cus.Name.Contains(pagedDto.Keyword!) || sys.OrgName.Contains(pagedDto.Keyword!))
                //分类
@@ -59,16 +60,16 @@ namespace Hotline.Application.Knowledge
                //部门
                .WhereIF(!string.IsNullOrEmpty(pagedDto.CreateOrgId), (o, cus, sys, kn) => o.CreatorOrgId == pagedDto.CreateOrgId)
               //状态
-              .WhereIF(pagedDto.Status != null, (o, cus, sys, kn) => o.Status == pagedDto.Status)
+              .WhereIF(pagedDto.Status.HasValue, (o, cus, sys, kn) => o.Status == pagedDto.Status)
               //创建时间
-              .WhereIF(pagedDto.CreationStartTime != null, (o, cus, sys, kn) => o.CreationTime >= pagedDto.CreationStartTime)
-              .WhereIF(pagedDto.CreationEndTime != null, (o, cus, sys, kn) => o.CreationTime <= pagedDto.CreationEndTime)
+              .WhereIF(pagedDto.CreationStartTime.HasValue, (o, cus, sys, kn) => o.CreationTime >= pagedDto.CreationStartTime)
+              .WhereIF(pagedDto.CreationEndTime.HasValue, (o, cus, sys, kn) => o.CreationTime <= pagedDto.CreationEndTime)
                //上架时间
-               .WhereIF(pagedDto.StartOnShelfTime != null, (o, cus, sys, kn) => o.OnShelfTime >= pagedDto.StartOnShelfTime)
-              .WhereIF(pagedDto.EndOnShelfTime != null, (o, cus, sys, kn) => o.OnShelfTime <= pagedDto.EndOnShelfTime)
+               .WhereIF(pagedDto.StartOnShelfTime.HasValue, (o, cus, sys, kn) => o.OnShelfTime >= pagedDto.StartOnShelfTime)
+              .WhereIF(pagedDto.EndOnShelfTime.HasValue, (o, cus, sys, kn) => o.OnShelfTime <= pagedDto.EndOnShelfTime)
                //下架时间
-               .WhereIF(pagedDto.StartOffShelfTime != null, (o, cus, sys, kn) => o.OffShelfTime >= pagedDto.StartOffShelfTime)
-              .WhereIF(pagedDto.EndOffShelfTime != null, (o, cus, sys, kn) => o.OffShelfTime <= pagedDto.EndOffShelfTime)
+               .WhereIF(pagedDto.StartOffShelfTime.HasValue, (o, cus, sys, kn) => o.OffShelfTime >= pagedDto.StartOffShelfTime)
+              .WhereIF(pagedDto.EndOffShelfTime.HasValue, (o, cus, sys, kn) => o.OffShelfTime <= pagedDto.EndOffShelfTime)
                //重新构建数据
                .Select((o, cus, sys, kn) => new
                {
@@ -113,12 +114,12 @@ namespace Hotline.Application.Knowledge
                .Includes(it => it.User)
                .Includes(it => it.SystemOrganize)
                .Where(d => d.CreatorId == _sessionContext.RequiredUserId)
-               .WhereIF(pagedDto.Status != null, d => d.Status == pagedDto.Status)
-               .WhereIF(pagedDto.ApplyType != null, d => d.KnowledgeApplyType == pagedDto.ApplyType)
+               .WhereIF(pagedDto.Status.HasValue, d => d.Status == pagedDto.Status)
+               .WhereIF(pagedDto.ApplyType.HasValue, d => d.KnowledgeApplyType == pagedDto.ApplyType)
                .WhereIF(!string.IsNullOrEmpty(pagedDto.IsOvertime) && pagedDto.IsOvertime == "0", d => d.ExpiredTime <= DateTime.Now)
                .WhereIF(!string.IsNullOrEmpty(pagedDto.IsOvertime) && pagedDto.IsOvertime == "1", d => d.ExpiredTime > DateTime.Now)
-               .WhereIF(pagedDto.StartTime != null, d => d.CreationTime >= pagedDto.StartTime)
-               .WhereIF(pagedDto.EndTime != null, d => d.CreationTime <= pagedDto.EndTime)
+               .WhereIF(pagedDto.StartTime.HasValue, d => d.CreationTime >= pagedDto.StartTime)
+               .WhereIF(pagedDto.EndTime.HasValue, d => d.CreationTime <= pagedDto.EndTime)
                .OrderByDescending(p => p.CreationTime)
                .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, cancellationToken);
 
@@ -138,13 +139,13 @@ namespace Hotline.Application.Knowledge
                  .Includes(it => it.User)
                  .Includes(it => it.SystemOrganize)
                  .Where(p => p.DepartmentCode == _sessionContext.RequiredOrgCode)
-                 .WhereIF(pagedDto.Status != null, d => d.Status == pagedDto.Status)
+                 .WhereIF(pagedDto.Status.HasValue, d => d.Status == pagedDto.Status)
                  .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), d => d.User.Name.Contains(pagedDto.Keyword!) || d.SystemOrganize.OrgName.Contains(pagedDto.Keyword!))
-                 .WhereIF(pagedDto.ApplyType != null, d => d.KnowledgeApplyType == pagedDto.ApplyType)
+                 .WhereIF(pagedDto.ApplyType.HasValue, d => d.KnowledgeApplyType == pagedDto.ApplyType)
                  .WhereIF(!string.IsNullOrEmpty(pagedDto.IsOvertime) && pagedDto.IsOvertime == "0", d => d.ExpiredTime <= DateTime.Now)
                  .WhereIF(!string.IsNullOrEmpty(pagedDto.IsOvertime) && pagedDto.IsOvertime == "1", d => d.ExpiredTime > DateTime.Now)
-                 .WhereIF(pagedDto.StartTime != null, d => d.CreationTime >= pagedDto.StartTime)
-                 .WhereIF(pagedDto.EndTime != null, d => d.CreationTime <= pagedDto.EndTime)
+                 .WhereIF(pagedDto.StartTime.HasValue, d => d.CreationTime >= pagedDto.StartTime)
+                 .WhereIF(pagedDto.EndTime.HasValue, d => d.CreationTime <= pagedDto.EndTime)
                  .OrderByDescending(p => p.CreationTime)
                  .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, cancellationToken);
 

+ 1 - 1
src/Hotline.Repository.SqlSugar/Knowledge/KnowledgeRepository.cs

@@ -6,7 +6,7 @@ using XF.Domain.Dependency;
 
 namespace Hotline.Repository.SqlSugar.Knowledge
 {
-    public class KnowledgeRepository : BaseRepositoryWorkflow<KnowledgeBase.Knowledge>, IKnowledgeRepository, IScopeDependency
+    public class KnowledgeRepository : BaseRepository<KnowledgeBase.Knowledge>, IKnowledgeRepository, IScopeDependency
     {
         public KnowledgeRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
         {

+ 11 - 5
src/Hotline.Share/Dtos/Knowledge/KnowledgePagedDto.cs

@@ -11,11 +11,9 @@ namespace Hotline.Share.Dtos.Knowledge
     /// <summary>
     /// 审核管理
     /// </summary>
-    /// <param name="AuditType">审核类型</param>
-    /// <param name="Title">标题</param>
-    /// <param name="CreateUserName">创建人</param>
-    /// <param name="CreateOrgName">创建部门</param>
-    public record KnowledgeApprovalPagedListDto(string? AuditType, string? Title, string? CreateUserName, string? CreateOrgName) : PagedRequest;
+    /// <param name="EKnowledgeApplyType">申请类型</param>
+    /// <param name="EKnowledgeWorkFlowStatus">审核状态</param>
+    public record KnowledgeApprovalPagedListDto(EKnowledgeApplyType? EKnowledgeApplyType, EKnowledgeWorkFlowStatus? EKnowledgeWorkFlowStatus) : PagedKeywordRequest;
 
     /// <summary>
     /// 知识检索
@@ -23,6 +21,14 @@ namespace Hotline.Share.Dtos.Knowledge
     /// <param name="RetrievalType">检索类型</param>
     public record KnowledgeRetrievalPagedListDto(EKnowledgeRetrievalType? RetrievalType) : PagedKeywordRequest;
 
+    /// <summary>
+    /// 我的知识删除
+    /// </summary>
+    /// <param name="EKnowledgeWorkFlowStatus"></param>
+    /// <param name="StartApplyTime"></param>
+    /// <param name="EndApplyTime"></param>
+    public record KnowledgeDeletelPagedListDto(EKnowledgeWorkFlowStatus? EKnowledgeWorkFlowStatus,DateTime? StartApplyTime, DateTime? EndApplyTime) : PagedKeywordRequest;
+
     /// <summary>
     /// 
     /// </summary>

+ 8 - 0
src/Hotline/KnowledgeBase/IKnowledgeWorkFlowRepository.cs

@@ -0,0 +1,8 @@
+using XF.Domain.Repository;
+
+namespace Hotline.KnowledgeBase
+{
+    public interface IKnowledgeWorkFlowRepository : IRepository<KnowledgeWorkFlow>
+    {
+    }
+}

+ 1 - 1
src/Hotline/KnowledgeBase/Knowledge.cs

@@ -9,7 +9,7 @@ namespace Hotline.KnowledgeBase;
 /// <summary>
 /// 知识库文档内容
 /// </summary>
-public class Knowledge : WorkflowEntity// FullStateEntity
+public class Knowledge : FullStateEntity//   WorkflowEntity  FullStateEntity
 {
     /// <summary>
     /// 知识分类

+ 16 - 2
src/Hotline/KnowledgeBase/KnowledgeWorkFlow.cs

@@ -1,9 +1,12 @@
-using Hotline.Share.Enums.KnowledgeBase;
+using Hotline.FlowEngine.Workflows;
+using Hotline.Share.Enums.KnowledgeBase;
+using Hotline.Users;
+using SqlSugar;
 using XF.Domain.Repository;
 
 namespace Hotline.KnowledgeBase
 {
-    public class KnowledgeWorkFlow :WorkflowEntity
+    public class KnowledgeWorkFlow : WorkflowEntity   //WorkflowEntity   CreationEntity
     {
         /// <summary>
         /// 知识ID
@@ -20,5 +23,16 @@ namespace Hotline.KnowledgeBase
         /// </summary>
         public EKnowledgeWorkFlowStatus WorkFlowApplyStatus { get; set; }
 
+        /// <summary>
+        /// 知识信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(KnowledgeId))]//一对一 
+        public Knowledge Knowledge { get; set; }
+
+        /// <summary>
+        /// 知识信息
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(KnowledgeId))]//一对一 
+        public Workflow Workflow  { get; set; }
     }
 }