浏览代码

Merge branch 'test' of http://110.188.24.182:10023/Fengwo/hotline into test

xf 1 周之前
父节点
当前提交
474fdb0247

+ 3 - 3
src/Hotline.Api/Controllers/CallController.cs

@@ -95,7 +95,7 @@ namespace Hotline.Api.Controllers
         /// 签入
         /// </summary>
         [HttpPost("signin")]
-        [LogFilter("分机签入")]
+        [LogFilterAlpha("分机签入")]
         public Task<TrOnDutyResponseDto> SignIn([FromBody] SignInDto dto)
             => _callApplication.SignInAsync(dto, HttpContext.RequestAborted);
 
@@ -103,7 +103,7 @@ namespace Hotline.Api.Controllers
         /// 签出
         /// </summary>
         [HttpPost("signout")]
-        [LogFilter("分机签出")]
+        [LogFilterAlpha("分机签出")]
         public Task SignOut()
             => _callApplication.SingOutAsync(HttpContext.RequestAborted);
 
@@ -111,7 +111,7 @@ namespace Hotline.Api.Controllers
         /// 签出
         /// </summary>
         [HttpPost("signout/{telNo}")]
-        [LogFilter("分机签出")]
+        [LogFilterAlpha("分机签出")]
         public Task SignOut(string telNo)
             => _callApplication.SingOutAsync(telNo, HttpContext.RequestAborted);
 

+ 4 - 4
src/Hotline.Api/Controllers/CallNativeContrroller.cs

@@ -92,7 +92,7 @@ namespace Hotline.Api.Controllers
         /// <param name="phone"></param>
         /// <returns></returns>
         [HttpDelete("delete-black-phone/{phone}")]
-        [LogFilter("删除黑名单")]
+        [LogFilterAlpha("删除黑名单")]
         public async Task DeleteBlackPhone(string phone)
         {
             var row = await _db.Deleteable<XingtangBlackPhone>().Where(p => p.StartPhone == phone).ExecuteCommandAsync();
@@ -114,7 +114,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPost("add-black-phone")]
-        [LogFilter("新增黑名单")]
+        [LogFilterAlpha("新增黑名单")]
         public async Task AddBlackPhone([FromBody] AddBlackPhoneDto dto)
         {
             if (string.IsNullOrEmpty(dto.PhoneNum))
@@ -182,7 +182,7 @@ namespace Hotline.Api.Controllers
         /// <param name="phone"></param>
         /// <returns></returns>
         [HttpDelete("delete-white-phone/{phone}")]
-        [LogFilter("删除白名单")]
+        [LogFilterAlpha("删除白名单")]
         public async Task DeleteWhitePhone(string phone)
         {
             var row = await _db.Deleteable<XingtangWhitePhone>().Where(p => p.Phone == phone).ExecuteCommandAsync();
@@ -204,7 +204,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPost("add-white-phone")]
-        [LogFilter("新增白名单")]
+        [LogFilterAlpha("新增白名单")]
         public async Task AddWhitePhone([FromBody] AddBlackPhoneDto dto)
         {
             if (string.IsNullOrEmpty(dto.PhoneNum))

+ 1 - 1
src/Hotline.Api/Controllers/EnterprisesController.cs

@@ -35,7 +35,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpGet("enterprise/list")]
-        [LogFilter("查询企业列表")]
+        [LogFilterAlpha("查询企业列表")]
         public async Task<YbEnterprisePaged> QueryYbEnterprises([FromQuery] PagedKeywordRequest dto)
         {
             return await _enterpriseService.QueryYbEnterprisesAsync(dto.Keyword!, dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);

+ 4 - 4
src/Hotline.Api/Controllers/IPPbxController.cs

@@ -259,7 +259,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        [LogFilter("新增黑白名单")]
+        [LogFilterAlpha("新增黑白名单")]
         [HttpPost("add-blacklist")]
         public async Task AddBlacklist([FromBody] TrAddBlacklistDto dto)
         {
@@ -271,7 +271,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        [LogFilter("删除黑白名单")]
+        [LogFilterAlpha("删除黑白名单")]
         [HttpPost("remove-blacklist")]
         public async Task DelBlacklist([FromBody] TrDelBlacklistDto dto)
         {
@@ -381,7 +381,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <returns></returns>
         [HttpPost("rest")]
-        [LogFilter("分机小休")]
+        [LogFilterAlpha("分机小休")]
         public async Task Rest([FromBody] TrRestDto dto)
         {
             var work = _userCacheManager.GetWorkByUser(_sessionContext.RequiredUserId);
@@ -404,7 +404,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <returns></returns>
         [HttpPost("unrest")]
-        [LogFilter("分机取消小休")]
+        [LogFilterAlpha("分机取消小休")]
         public async Task UnRest()
         {
             var work = _userCacheManager.GetWorkByUser(_sessionContext.RequiredUserId);

+ 3 - 3
src/Hotline.Api/Controllers/IndustrialManagementController.cs

@@ -79,7 +79,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPost("industryadd")]
-        [LogFilter("新增行业")]
+        [LogFilterAlpha("新增行业")]
         public async Task Add([FromBody] IndustryAddDto dto)
         {
             if (dto == null)
@@ -115,7 +115,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPost("industryupdate")]
-        [LogFilter("修改行业")]
+        [LogFilterAlpha("修改行业")]
         public async Task Update([FromBody] IndustryUpdateDto dto)
         {
             if (dto == null)
@@ -164,7 +164,7 @@ namespace Hotline.Api.Controllers
         /// <param name="id"></param>
         /// <returns></returns>
         [HttpDelete("{id}")]
-        [LogFilter("删除行业")]
+        [LogFilterAlpha("删除行业")]
         public async Task Remove(string id)
         {
             await _industrialManagementRepository.DelIndustrialManagementAsync(id, cancellationToken: HttpContext.RequestAborted);

+ 5 - 5
src/Hotline.Api/Controllers/JudicialManagementOrdersController.cs

@@ -94,7 +94,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPost]
-        [LogFilter("新增司法工单")]
+        [LogFilterAlpha("新增司法工单")]
         public async Task<string> Add([FromBody] JudicialManagementAddOrderDto dto)
         {
             dto.InitAddress();
@@ -131,7 +131,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPut]
-        [LogFilter("更新司法工单")]
+        [LogFilterAlpha("更新司法工单")]
         public async Task Update([FromBody] JudicialManagementUpdateOrderDto dto)
         {
             dto.InitAddress();
@@ -176,7 +176,7 @@ namespace Hotline.Api.Controllers
         /// <param name="id"></param>
         /// <returns></returns>
         [HttpGet]
-        [LogFilter("启用/禁用司法工单")]
+        [LogFilterAlpha("启用/禁用司法工单")]
         public async Task Update(string id)
         {
             var order = await _judicialManagementOrdersRepository.GetAsync(id, HttpContext.RequestAborted);
@@ -195,7 +195,7 @@ namespace Hotline.Api.Controllers
         ///// <param name="dto"></param>
         ///// <returns></returns>
         //[HttpPut("associated_law_enforcement_gencies")]
-        //[LogFilter("关联执法部门")]
+        //[LogFilterAlpha("关联执法部门")]
         //public async Task AssociatedLawEnforcementAgencies([FromBody] AssociatedLawEnforcementAgenciesDto dto)
         //{
         //    if (dto.LawEnforcementAgencies == null || dto.LawEnforcementAgencies.Count == 0)
@@ -277,7 +277,7 @@ namespace Hotline.Api.Controllers
         /// <param name="id"></param>
         /// <returns></returns>
         [HttpDelete("{id}")]
-        [LogFilter("删除工单")]
+        [LogFilterAlpha("删除工单")]
         public async Task Remove(string id)
         {
             var order = await _judicialManagementOrdersRepository.GetAsync(id, HttpContext.RequestAborted);

+ 1 - 1
src/Hotline.Api/Controllers/KnowledgeCommonController.cs

@@ -233,7 +233,7 @@ namespace Hotline.Api.Controllers
                     {
                         Id = it.Id.SelectAll(),
                         KnowledgeNum = SqlFunc.Subqueryable<Knowledge>()
-                            .Where(k => k.CreatorOrgId.StartsWith(it.Id))
+                            .Where(k => k.CreatorOrgId.StartsWith(it.Id) && k.IsDeleted == false)
                             .WhereIF(!string.IsNullOrEmpty(Attribution), k => k.Attribution == Attribution).DistinctCount(k => k.Id)
 
                     }).OrderBy(d => d.Id);

+ 159 - 24
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -39,6 +39,7 @@ using MiniExcelLibs;
 using NPOI.SS.Formula.Functions;
 using SqlSugar;
 using System.Text;
+using System.Threading;
 using XF.Domain.Authentications;
 using XF.Domain.Exceptions;
 using XF.Domain.Repository;
@@ -75,6 +76,7 @@ namespace Hotline.Api.Controllers
         private readonly IRepository<KnowledgeQuestions> _knowledgeQuestionsRepository;
         private readonly IRepository<KnowledgeCorrection> _knowledgeCorrectionRepository;
         private readonly IRepository<KnowledgeCollect> _knowledgeCollectRepository;
+        private readonly IRepository<KnowledgeRecord> _knowledgeRecordRepository;
         private readonly ISystemDomainService _systemDomainService;
         private readonly IRepository<KnowledgeComment> _knowledgeCommentRepository;
         private readonly ISystemOrganizeRepository _systemOrganizeRepository;
@@ -104,6 +106,7 @@ namespace Hotline.Api.Controllers
             IRepository<KnowledgeQuestions> knowledgeQuestionsRepository,
             IRepository<KnowledgeCorrection> knowledgeCorrectionRepository,
             IRepository<KnowledgeCollect> knowledgeCollectRepository,
+            IRepository<KnowledgeRecord> knowledgeRecordRepository,
             ISystemDomainService systemDomainService,
             IRepository<KnowledgeComment> knowledgeCommentRepository,
             ISystemOrganizeRepository systemOrganizeRepository,
@@ -140,6 +143,7 @@ namespace Hotline.Api.Controllers
             _knowledgeQuestionsRepository = knowledgeQuestionsRepository;
             _knowledgeCorrectionRepository = knowledgeCorrectionRepository;
             _knowledgeCollectRepository = knowledgeCollectRepository;
+            _knowledgeRecordRepository = knowledgeRecordRepository;
             _systemDomainService = systemDomainService;
             _knowledgeCommentRepository = knowledgeCommentRepository;
             _systemOrganizeRepository = systemOrganizeRepository;
@@ -169,7 +173,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPost("add")]
-        [LogFilter("知识新增")]
+        [LogFilterAlpha("知识新增")]
         public async Task<string> AddKnowledge([FromBody] AddStartFlowDto dto)
         {
             //var addDto = _mapper.Map<AddKnowledgeDto>(dto.Data);
@@ -239,7 +243,7 @@ namespace Hotline.Api.Controllers
         /// <param name="Id"></param>
         /// <returns></returns>
         [HttpPut("offshelf")]
-        [LogFilter("知识下架")]
+        [LogFilterAlpha("知识下架")]
         public async Task KnowledgeOffShelf([FromBody] OffShelfStartFlowDto dto)
         {
             var know = await _knowledgeRepository.GetAsync(dto.Data.Id, HttpContext.RequestAborted);
@@ -278,7 +282,7 @@ namespace Hotline.Api.Controllers
         /// 知识库-知识下架(new)
         /// </summary>
         [HttpPost("offshelf")]
-        [LogFilter("知识下架")]
+        [LogFilterAlpha("知识下架")]
         public Task OffShelf([FromBody] OffShelfKnowledgeDto dto) =>
             _knowledgeDomainService.OffShelfAsync(dto, HttpContext.RequestAborted);
 
@@ -286,7 +290,7 @@ namespace Hotline.Api.Controllers
         /// 知识库-知识下架并发起审批(new)
         /// </summary>
         [HttpPost("offshelf-and-approve")]
-        [LogFilter("知识下架并发起审批")]
+        [LogFilterAlpha("知识下架并发起审批")]
         public async Task OffShelfAndApprove([FromBody] OffShelfKnowledgeDto dto)
         {
             var kn = await _knowledgeDomainService.OffShelfAsync(dto, HttpContext.RequestAborted);
@@ -301,7 +305,7 @@ namespace Hotline.Api.Controllers
         /// <param name="Id"></param>
         /// <returns></returns>
         [HttpPut("ontheshelf")]
-        [LogFilter("知识上架")]
+        [LogFilterAlpha("知识上架")]
         public async Task KnowledgeOnTheShelf(string Id)
         {
             var know = await _knowledgeRepository.GetAsync(Id, HttpContext.RequestAborted);
@@ -325,7 +329,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <returns></returns>
         [HttpPost("ontheshelfbatch")]
-        [LogFilter("批量上架")]
+        [LogFilterAlpha("批量上架")]
         public async Task KnowledgeOnTheShelfBatch([FromBody] UnshelveBatchRequest request)
         {
             var kns = request.KnowledgeIds.Select(d => new Knowledge
@@ -337,7 +341,7 @@ namespace Hotline.Api.Controllers
             }).ToList();
             await _knowledgeRepository.Updateable(kns)
                 .UpdateColumns(d => d.Status)
-                .Where(d => d.Status == EKnowledgeStatus.OffShelf)
+                //.WhereColumns(d => d.Status == EKnowledgeStatus.OffShelf)
                 .ExecuteCommandAsync(HttpContext.RequestAborted);
         }
 
@@ -362,7 +366,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPut("update")]
-        [LogFilter("知识修改")]
+        [LogFilterAlpha("知识修改")]
         public async Task UpdateKnowledge([FromBody] UpdateStartFlowDto dto)
         {
             var knowledge = await _knowledgeRepository.GetAsync(dto.Data.Id);
@@ -434,7 +438,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPut]
-        [LogFilter("知识修改")]
+        [LogFilterAlpha("知识修改")]
         public Task Update([FromBody] UpdateKnowledgeDto dto) =>
             _knowledgeDomainService.UpdateKnowledgeAsync(dto, HttpContext.RequestAborted);
 
@@ -444,7 +448,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPut("update-and-approve")]
-        [LogFilter("知识修改")]
+        [LogFilterAlpha("知识修改")]
         public async Task UpdateAndApprove([FromBody] UpdateKnowledgeAndApproveDto dto)
         {
             var kn = await _knowledgeDomainService.UpdateKnowledgeAsync(dto, HttpContext.RequestAborted);
@@ -473,7 +477,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPut("update-and-approve-batch")]
-        [LogFilter("知识修改批量")]
+        [LogFilterAlpha("知识修改批量")]
         public async Task UpdateAndApproveBatch([FromBody] UpdateKnowledgeAndApproveBatchDto dto)
         {
             foreach (var item in dto.KnowledgeIds)
@@ -503,6 +507,127 @@ namespace Hotline.Api.Controllers
             }
         }
 
+        /// <summary>
+        /// 知识库-记录
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPut("update-and-record")]
+        [LogFilter("知识修改并且保存修改之前的信息")]
+        public async Task UpdateAndRecord([FromBody] UpdateKnowledgeAndApproveDto dto)
+        {
+            // 知识库记录
+            var knowledge = await _knowledgeRepository.GetAsync(d => d.Id == dto.Id);
+            if (knowledge != null)
+            {
+                var data = _mapper.Map<KnowledgeRecord>(knowledge);
+                data.KnowledgeId = knowledge.Id;
+                await _knowledgeRecordRepository.AddNav(data)
+                      .Include(d => d.KnowledgeTypes)
+                      .Include(d => d.KnowledgeOrganizes)
+                      .ExecuteCommandAsync();
+
+                // 知识库修改
+                await _knowledgeDomainService.UpdateKnowledgeAsync(dto, HttpContext.RequestAborted);
+            }
+        }
+
+        /// <summary>
+        /// 知识库-记录
+        /// </summary>
+        /// <param name="Id"></param>
+        /// <returns></returns>
+        [HttpGet("queryRecord/{Id}")]
+        [LogFilter("查询知识库修改记录")]
+        public async Task<object> QueryRecord(string Id)
+        {
+            var queryDto = new KnowledgeDto();
+            var knowledgeDto = new KnowledgeDto();
+
+            var query = await _knowledgeRecordRepository.Queryable()
+                .Includes(x => x.SourceOrganize)
+                .Includes(x => x.KnowledgeTypes)
+                .Includes(x => x.KnowledgeOrganizes)
+                .Includes(x => x.HotspotType)
+                .OrderByDescending(d => d.CreationTime)
+                .FirstAsync(d => d.KnowledgeId == Id, HttpContext.RequestAborted);
+
+            if (query != null)
+            {
+                #region 最新修改记录
+
+                //转化
+                var knowledgeInfoDto1 = _mapper.Map<KnowledgeDto>(query);
+
+                if (knowledgeInfoDto1 != null && !string.IsNullOrEmpty(knowledgeInfoDto1.Content))
+                    knowledgeInfoDto1.Content = _bulletinApplication.GetSiteUrls(knowledgeInfoDto1.Content);
+
+                //收藏
+                var collect1 = await _knowledgeCollectRepository.GetAsync(x => x.KnowledgeId == Id && x.CreatorId == _sessionContext.UserId);
+                if (knowledgeInfoDto1 != null && collect1 != null)
+                    knowledgeInfoDto1.Collect = _mapper.Map<KnowledgeCollectDto>(collect1);
+                //关联知识
+                var knowledges1 = await _knowledgeRepository.Queryable().In(x => x.Id, query.Knowledges).Where(x => x.Status == EKnowledgeStatus.OnShelf && ((x.ExpiredTime != null && x.ExpiredTime >= DateTime.Now) || x.ExpiredTime == null)).ToListAsync();
+                if (knowledgeInfoDto1 != null && knowledges1.Any())
+                    knowledgeInfoDto1.KnowledgeDtos = _mapper.Map<List<KnowledgeDto>>(knowledges1);
+                //关键词
+                var knowledgeWords1 = await _knowledgeWrodRepository.Queryable().In(x => x.Id, query.Keywords).ToListAsync();
+                if (knowledgeInfoDto1 != null && knowledgeWords1.Any())
+                    knowledgeInfoDto1.KeywordsDto = _mapper.Map<List<KnowledgeWordDto>>(knowledgeWords1);
+
+                if (knowledgeInfoDto1 != null && knowledgeInfoDto1.FileJson != null && knowledgeInfoDto1.FileJson.Any())
+                {
+                    var ids = knowledgeInfoDto1.FileJson.Select(x => x.Id).ToList();
+                    knowledgeInfoDto1.Files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
+                }
+
+                queryDto = _mapper.Map<KnowledgeDto>(query);
+
+                #endregion
+            }
+
+            var knowledge = await _knowledgeRepository.Queryable()
+                .Includes(x => x.SourceOrganize)
+                .Includes(x => x.KnowledgeTypes)
+                .Includes(x => x.KnowledgeOrganizes)
+                .Includes(x => x.HotspotType)
+                .FirstAsync(p => p.Id == Id, HttpContext.RequestAborted);
+            if (knowledge != null)
+            {
+                #region 当前知识库
+
+                //转化
+                var knowledgeShowInfoDto = _mapper.Map<KnowledgeDto>(knowledge);
+
+                if (knowledgeShowInfoDto != null && !string.IsNullOrEmpty(knowledgeShowInfoDto.Content))
+                    knowledgeShowInfoDto.Content = _bulletinApplication.GetSiteUrls(knowledgeShowInfoDto.Content);
+
+                //收藏
+                var collect = await _knowledgeCollectRepository.GetAsync(x => x.KnowledgeId == Id && x.CreatorId == _sessionContext.UserId);
+                if (knowledgeShowInfoDto != null && collect != null)
+                    knowledgeShowInfoDto.Collect = _mapper.Map<KnowledgeCollectDto>(collect);
+                //关联知识
+                var knowledges = await _knowledgeRepository.Queryable().In(x => x.Id, knowledge.Knowledges).Where(x => x.Status == EKnowledgeStatus.OnShelf && ((x.ExpiredTime != null && x.ExpiredTime >= DateTime.Now) || x.ExpiredTime == null)).ToListAsync();
+                if (knowledgeShowInfoDto != null && knowledges.Any())
+                    knowledgeShowInfoDto.KnowledgeDtos = _mapper.Map<List<KnowledgeDto>>(knowledges);
+                //关键词
+                var knowledgeWords = await _knowledgeWrodRepository.Queryable().In(x => x.Id, knowledge.Keywords).ToListAsync();
+                if (knowledgeShowInfoDto != null && knowledgeWords.Any())
+                    knowledgeShowInfoDto.KeywordsDto = _mapper.Map<List<KnowledgeWordDto>>(knowledgeWords);
+
+                if (knowledgeShowInfoDto != null && knowledgeShowInfoDto.FileJson != null && knowledgeShowInfoDto.FileJson.Any())
+                {
+                    var ids = knowledgeShowInfoDto.FileJson.Select(x => x.Id).ToList();
+                    knowledgeShowInfoDto.Files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
+                }
+
+                knowledgeDto = _mapper.Map<KnowledgeDto>(knowledge);
+
+                #endregion
+            }
+            return new { OldInfo = queryDto, NewInfo = knowledgeDto };
+        }
+
         /// <summary>
         /// 批量更新公开状态(new)
         /// </summary>
@@ -618,7 +743,7 @@ namespace Hotline.Api.Controllers
         /// <param name="id"></param>
         /// <returns></returns>
         [HttpDelete]
-        [LogFilter("删除知识")]
+        [LogFilterAlpha("删除知识")]
         public async Task Remove([FromBody] DeleteStartFlowDto dto)
         {
             //var delete = _mapper.Map<KnowledgeDto>(dto.Data);
@@ -645,7 +770,7 @@ namespace Hotline.Api.Controllers
         /// 删除知识(new)
         /// </summary>
         [HttpDelete("remove")]
-        [LogFilter("删除知识")]
+        [LogFilterAlpha("删除知识")]
         public async Task Remove([FromBody] DeleteKnowledgeDto dto)
         {
             var knowledge = await _knowledgeRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
@@ -677,7 +802,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPost("search_num")]
-        [LogFilter("知识搜索")]
+        [LogFilterAlpha("知识搜索")]
         public async Task SearchNum([FromBody] KnowledgeSearchNumDto dto)
         {
 
@@ -1384,7 +1509,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dtos"></param>
         /// <returns></returns>
         [HttpPost("knowledge_word")]
-        [LogFilter("新增知识库词库")]
+        [LogFilterAlpha("新增知识库词库")]
         public async Task Add([FromBody] KnowledgeWordAddDto dto)
         {
             var word = _mapper.Map<KnowledgeWord>(dto);
@@ -1397,7 +1522,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpDelete("knowledge_word")]
-        [LogFilter("删除知识库词库")]
+        [LogFilterAlpha("删除知识库词库")]
         public async Task Delete([FromBody] KnowledgeWordDeleteDto dto)
         {
             await _knowledgeRepository.RemoveKnowledgeWrodBatchAsync(dto.Ids, HttpContext.RequestAborted);
@@ -1409,7 +1534,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPut("knowledge_word")]
-        [LogFilter("更新知识库词库")]
+        [LogFilterAlpha("更新知识库词库")]
         public async Task Update([FromBody] KnowledgeWordUpdateDto dto)
         {
             var word = await _knowledgeWrodRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
@@ -1472,7 +1597,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dtos"></param>
         /// <returns></returns>
         [HttpPost("knowledge_correction")]
-        [LogFilter("新增知识纠错")]
+        [LogFilterAlpha("新增知识纠错")]
         public async Task Add([FromBody] KnowledgeCorrectionAddDto dto)
         {
             var correction = _mapper.Map<KnowledgeCorrection>(dto);
@@ -1511,7 +1636,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPut("knowledge_correction/Reply")]
-        [LogFilter("答复知识纠错")]
+        [LogFilterAlpha("答复知识纠错")]
         public async Task Reply([FromBody] KnowledgeCorrectionUpdateDto dto)
         {
             var correction = await _knowledgeCorrectionRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
@@ -1572,7 +1697,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dtos"></param>
         /// <returns></returns>
         [HttpPost("knowledge_questions")]
-        [LogFilter("新增知识提问")]
+        [LogFilterAlpha("新增知识提问")]
         public async Task Add([FromBody] KnowledgeQuestionsAddDto dto)
         {
             var questions = _mapper.Map<KnowledgeQuestions>(dto);
@@ -1611,7 +1736,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPut("knowledge_questions/Reply")]
-        [LogFilter("答复知识提问")]
+        [LogFilterAlpha("答复知识提问")]
         public async Task Reply([FromBody] KnowledgeQuestionsUpdateDto dto)
         {
             var questions = await _knowledgeQuestionsRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
@@ -1692,7 +1817,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dtos"></param>
         /// <returns></returns>
         [HttpPost("knowledge_collect")]
-        [LogFilter("知识收藏")]
+        [LogFilterAlpha("知识收藏")]
         public async Task Add([FromBody] KnowledgeCollectAddDto dto)
         {
             var collect = await _knowledgeCollectRepository.GetAsync(x => x.KnowledgeId == dto.KnowledgeId && x.CreatorId == _sessionContext.UserId);
@@ -1721,7 +1846,7 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpDelete("knowledge_score")]
-        [LogFilter("知识评分")]
+        [LogFilterAlpha("知识评分")]
         public async Task Delete([FromBody] KnowledgeCollectAddDto dto)
         {
             var collect = await _knowledgeCollectRepository.GetAsync(x => x.KnowledgeId == dto.KnowledgeId && x.CreatorId == _sessionContext.UserId);
@@ -2008,7 +2133,17 @@ namespace Hotline.Api.Controllers
 
             var (total, items) = await query.ToPagedListAsync(request, HttpContext.RequestAborted);
 
-            return new PagedDto<KnowledgeApproveDto>(total, _mapper.Map<IReadOnlyList<KnowledgeApproveDto>>(items));
+            var data = _mapper.Map<List<KnowledgeApproveDto>>(items);
+
+            data.ForEach(d =>
+            {
+                if (_knowledgeRecordRepository.Queryable().Where(x => x.KnowledgeId == d.KnowledgeId).Count() > 0)
+                {
+                    d.IsRecord = true;
+                }
+            });
+
+            return new PagedDto<KnowledgeApproveDto>(total, data);
         }
 
         /// <summary>

+ 62 - 62
src/Hotline.Api/Controllers/OrderController.cs

@@ -512,7 +512,7 @@ public class OrderController : BaseController
     /// </summary>
     /// <returns></returns>
     [HttpPost("publish")]
-    [LogFilter("发布工单")]
+    [LogFilterAlpha("发布工单")]
     public async Task PublishOrder([FromBody] PublishOrderDto dto)
     {
         //验证订单
@@ -895,7 +895,7 @@ public class OrderController : BaseController
     /// </summary>
     /// <returns></returns>
     [HttpPost("publish/temp")]
-    [LogFilter("临时发布")]
+    [LogFilterAlpha("临时发布")]
     public async Task PublishTempOrder([FromBody] PublishOrderDto dto)
     {
         //验证订单
@@ -1072,7 +1072,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("published-order-modify")]
-    [LogFilter("修改发布内容")]
+    [LogFilterAlpha("修改发布内容")]
     public async Task PublishedModify([FromBody] PublishOrderModifyDto dto)
     {
         var publishOrder = await _orderPublishRepository.Queryable()
@@ -1192,7 +1192,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPut("publish/cancel")]
-    [LogFilter("取消发布")]
+    [LogFilterAlpha("取消发布")]
     public async Task<string> PublishCancelAsync([FromBody] PublishCancelInDto dto)
     {
         var enabled = _systemSettingCacheManager.CancelPublishOrderEnabled;
@@ -1592,7 +1592,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("visit/batch")]
-    [LogFilter("批量工单回访")]
+    [LogFilterAlpha("批量工单回访")]
     public async Task<VisitBatchOutDto> VisitBatch([FromBody] VisitBatchInDto dto)
     {
         var errorMessage = new StringBuilder();
@@ -1938,7 +1938,7 @@ public class OrderController : BaseController
     /// <returns></returns>
     /// <exception cref="UserFriendlyException"></exception>
     [HttpPost("visitapply/add")]
-    [LogFilter("新增工单二次回访申请")]
+    [LogFilterAlpha("新增工单二次回访申请")]
     public async Task ApplyOrderVisit([FromBody] AddVisitApplyDto dto)
     {
         var orderVisitApply = _mapper.Map<OrderVisitApply>(dto);
@@ -1975,7 +1975,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("visitapply/examin")]
-    [LogFilter("新增工单二次回访审核")]
+    [LogFilterAlpha("新增工单二次回访审核")]
     public async Task ExaminOrderVisit([FromBody] ExaminOrderVisitDto dto)
     {
         //获取二次回访申请
@@ -2144,7 +2144,7 @@ public class OrderController : BaseController
     ///// 发起重办
     ///// </summary>
     //[HttpPost("redo")]
-    //[LogFilter("新增工单重办")]
+    //[LogFilterAlpha("新增工单重办")]
     //public async Task<string> AddRedo([FromBody] OrderRedoStartFlowDto dto)
     //{
     //    var redo = _mapper.Map<OrderRedo>(dto.Data);
@@ -2224,7 +2224,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("alter_delay_day")]
-    [LogFilter("工单延期修改延期时限")]
+    [LogFilterAlpha("工单延期修改延期时限")]
     public async Task AlterDelayDay([FromBody] AlterDelayDayDto dto)
     {
         if (dto.DelayNum < 1) throw UserFriendlyException.SameMessage("延期申请天数需大于等于1天!");
@@ -2240,7 +2240,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("delay")]
-    [LogFilter("新增工单延期申请")]
+    [LogFilterAlpha("新增工单延期申请")]
     public async Task<string> ApplyDelay([FromBody] StartWorkflowDto<ApplyDelayDto> dto)
     {
         var delaydto = dto.Data;
@@ -2356,7 +2356,7 @@ public class OrderController : BaseController
     /// 工单延期修改后下一步流程
     /// </summary>
     [HttpPost("delay/initial_nextFlow")]
-    [LogFilter("开始工单延期流程")]
+    [LogFilterAlpha("开始工单延期流程")]
     public async Task InitialNextFlow([FromBody] DelayNextFlowDto dto)
     {
         var delay = await _orderDelayRepository.GetAsync(dto.Data.Id);
@@ -2381,7 +2381,7 @@ public class OrderController : BaseController
     /// 批量审批延期
     /// </summary>
     [HttpPost("delay/batch_audit")]
-    [LogFilter("批量审批延期")]
+    [LogFilterAlpha("批量审批延期")]
     //[LogFilterAlpha("延期审核")]
     public async Task<string> BatchAuditDelay([FromBody] BatchDelayNextFlowDto dto)
     {
@@ -2487,7 +2487,7 @@ public class OrderController : BaseController
     }
 
     //[HttpPost("delay/batch_audit")]
-    //[LogFilter("批量审批延期")]
+    //[LogFilterAlpha("批量审批延期")]
     //public async Task<string> BatchAuditDelay([FromBody] BatchDelayNextFlowDto dto)
     //{
     //    var result = new StringBuilder();
@@ -2696,7 +2696,7 @@ public class OrderController : BaseController
     /// <param name="id"></param>
     /// <returns></returns>
     [HttpPost("delay/cancel")]
-    [LogFilter("取消工单延期")]
+    [LogFilterAlpha("取消工单延期")]
     public async Task CancelDelay([FromBody] CancelDelayDto dto)
     {
         var orderDelay =
@@ -3095,7 +3095,7 @@ public class OrderController : BaseController
     /// 开始工单甄别流程
     /// </summary>
     [HttpPost("screen/startflow")]
-    [LogFilter("开始工单甄别流程")]
+    [LogFilterAlpha("开始工单甄别流程")]
     public async Task StartFlow([FromBody] StartWorkflowDto<OrderScreenDto> dto)
     {
         var screenAny = await _orderScreenRepository.AnyAsync(x =>
@@ -3182,7 +3182,7 @@ public class OrderController : BaseController
     /// 工单甄别修改后下一步流程
     /// </summary>
     [HttpPost("screen/initial_nextFlow")]
-    [LogFilter("办理工单甄别流程")]
+    [LogFilterAlpha("办理工单甄别流程")]
     public async Task InitialNextFlow([FromBody] ScreenNextFlowDto dto)
     {
         var screen = await _orderScreenRepository.GetAsync(dto.Data.Id);
@@ -3416,7 +3416,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPut("order_screen_endtime")]
-    [LogFilter("更新甄别提起截至时限")]
+    [LogFilterAlpha("更新甄别提起截至时限")]
     public async Task Update([FromBody] OrderScreenEndTimeDto dto)
     {
         await _orderVisitedDetailRepository.Updateable().SetColumns(x => new OrderVisitDetail { ScreenByEndTime = dto.ScreenByEndTime })
@@ -3429,7 +3429,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPut("order_screen_alter")]
-    [LogFilter("更新甄别信息")]
+    [LogFilterAlpha("更新甄别信息")]
     public async Task Update([FromBody] OrderScreenAlterDto dto)
     {
         var screen = await _orderScreenRepository.GetAsync(dto.ScreenId);
@@ -3731,7 +3731,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("supervise/apply")]
-    [LogFilter("新增工单督办")]
+    [LogFilterAlpha("新增工单督办")]
     public async Task ApplySupervise([FromBody] ApplyOrderSuperviseDto dto)
     {
         if (!dto.SuperviseOrgDtos.Any())
@@ -3865,7 +3865,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("supervise/reply")]
-    [LogFilter("回复工单督办")]
+    [LogFilterAlpha("回复工单督办")]
     public async Task ReplySupervise([FromBody] ReplyOrderSuperviseDto dto)
     {
         //验证是否存在督办
@@ -3917,7 +3917,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("supervise/sign")]
-    [LogFilter("签收工单督办")]
+    [LogFilterAlpha("签收工单督办")]
     public async Task SignSupervise([FromBody] SignOrderSuperviseDto dto)
     {
         //验证是否存在督办
@@ -4086,7 +4086,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("urge/add")]
-    [LogFilter("批量催办工单")]
+    [LogFilterAlpha("批量催办工单")]
     public async Task UrgeAdd([FromBody] OrderUrgeAddDto dto)
     {
         if (dto is null)
@@ -4211,7 +4211,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("urge/apply")]
-    [LogFilter("新增工单催办")]
+    [LogFilterAlpha("新增工单催办")]
     public async Task ApplyUrge([FromBody] ApplyOrderUrgeDto dto)
     {
         if (!dto.UrgeOrgDtos.Any())
@@ -4338,7 +4338,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("urge/reply")]
-    [LogFilter("回复工单催办")]
+    [LogFilterAlpha("回复工单催办")]
     public async Task ReplyUrge([FromBody] ReplyOrderUrgeDto dto)
     {
         //验证是否存在催办
@@ -4367,7 +4367,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("urge/sign")]
-    [LogFilter("签收工单催办")]
+    [LogFilterAlpha("签收工单催办")]
     public async Task SignUrge([FromBody] SignOrderUrgeDto dto)
     {
         //验证是否存在催办
@@ -5269,7 +5269,7 @@ public class OrderController : BaseController
     /// </summary>
     [HttpPost("add-anonymous")]
     [AllowAnonymous]
-    [LogFilter("省平台调用记录")]
+    [LogFilterAlpha("省平台调用记录")]
     public async Task<AddOrderResponse> AddAnonymous([FromBody] AddOrderDto dto)
     {
         return await _orderApplication.ReceiveOrderFromExternalAsync(dto, HttpContext.RequestAborted);
@@ -5308,7 +5308,7 @@ public class OrderController : BaseController
     /// <param name="id"></param>
     /// <returns></returns>
     [HttpDelete("{id}")]
-    [LogFilter("删除工单")]
+    [LogFilterAlpha("删除工单")]
     public async Task Remove(string id)
     {
         var order = await _orderRepository.GetAsync(id, HttpContext.RequestAborted);
@@ -5324,7 +5324,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPut]
-    [LogFilter("更新工单")]
+    [LogFilterAlpha("更新工单")]
     public async Task<object> Update([FromBody] UpdateOrderDto dto)
     {
         dto.InitAddress();
@@ -6642,7 +6642,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPost("list/file_upload")]
-    [LogFilter("附件列表补充附件")]
+    [LogFilterAlpha("附件列表补充附件")]
     public async Task Add([FromBody] OrderStepUploadFilesDto dto)
     {
         var order = await _orderRepository.GetAsync(dto.OrderId);
@@ -7391,7 +7391,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("send_back/apply")]
-    [LogFilter("新增工单退回申请")]
+    [LogFilterAlpha("新增工单退回申请")]
     public async Task ApplyUrge([FromBody] OrderSendBackAddDto dto)
     {
         //验证工单是否可以申请
@@ -7430,7 +7430,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("send_back/audit")]
-    [LogFilter("审核工单退回申请")]
+    [LogFilterAlpha("审核工单退回申请")]
     public async Task ReplyUrge([FromBody] AuditOrderSendBackDto dto)
     {
         //验证是否存在退回
@@ -7488,7 +7488,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPost("special")]
-    [LogFilter("新增工单特提")]
+    [LogFilterAlpha("新增工单特提")]
     [LogFilterAlpha("特提审核")]
     public async Task Add([FromBody] OrderSpecialAddDto dto)
     {
@@ -7681,7 +7681,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("re_transact")]
-    [LogFilter("工单重办")]
+    [LogFilterAlpha("工单重办")]
     public async Task Add([FromBody] OrderReTransactDto dto)
     {
         var order = await _orderRepository
@@ -7930,7 +7930,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPut("special")]
-    [LogFilter("审批工单特提")]
+    [LogFilterAlpha("审批工单特提")]
     public async Task Update([FromBody] AuditOrderSpecialDto dto)
     {
         var special = await _orderSpecialRepository
@@ -8014,7 +8014,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPut("special_batch")]
-    [LogFilter("批量审批工单特提")]
+    [LogFilterAlpha("批量审批工单特提")]
     [LogFilterAlpha("特提审核批量")]
     public async Task UpdateBatch([FromBody] BatchAuditOrderSpecialDto dto)
     {
@@ -8627,7 +8627,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPost("citizen")]
-    [LogFilter("新增市民信息")]
+    [LogFilterAlpha("新增市民信息")]
     public async Task Add([FromBody] CitizenAddDto dto)
     {
         var citizen =
@@ -8643,7 +8643,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpDelete("citizen")]
-    [LogFilter("删除市民信息")]
+    [LogFilterAlpha("删除市民信息")]
     public async Task Delete([FromBody] CitizenDeleteDto dto)
     {
         await _citizenRepository.RemoveAsync(x => x.Id == dto.Id);
@@ -8655,7 +8655,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPut("citizen")]
-    [LogFilter("更新市民信息")]
+    [LogFilterAlpha("更新市民信息")]
     public async Task Update([FromBody] CitizenUpdateDto dto)
     {
         var citizen = await _citizenRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
@@ -8857,7 +8857,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPost("repeatable_event")]
-    [LogFilter("新增重复性事件")]
+    [LogFilterAlpha("新增重复性事件")]
     public async Task Add([FromBody] RepeatableEventAddDto dto)
     {
         var repeatable = _mapper.Map<RepeatableEvent>(dto);
@@ -8876,7 +8876,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpDelete("repeatable_event")]
-    [LogFilter("删除重复性事件")]
+    [LogFilterAlpha("删除重复性事件")]
     public async Task Delete([FromBody] RepeatableEventDeleteDto dto)
     {
         await _repeatableEventRepository.RemoveAsync(x => x.Id == dto.Id);
@@ -8889,7 +8889,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpDelete("repeatable_event_detail/{id}")]
-    [LogFilter("删除重复性事件")]
+    [LogFilterAlpha("删除重复性事件")]
     public async Task Delete([FromBody] string id)
     {
         await _repeatableEventDetailRepository.RemoveAsync(x => x.Id == id);
@@ -8901,7 +8901,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPut("repeatable_event")]
-    [LogFilter("更新重复性事件")]
+    [LogFilterAlpha("更新重复性事件")]
     public async Task Update([FromBody] RepeatableEventUpdateDto dto)
     {
         var repeatable = await _repeatableEventRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
@@ -8969,7 +8969,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPost("order_word")]
-    [LogFilter("新增工单词库")]
+    [LogFilterAlpha("新增工单词库")]
     public async Task Add([FromBody] OrderWordAddDto dto)
     {
         var word = _mapper.Map<OrderWord>(dto);
@@ -8985,7 +8985,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpDelete("order_word")]
-    [LogFilter("删除工单词库")]
+    [LogFilterAlpha("删除工单词库")]
     public async Task Delete([FromBody] OrderWordDeleteDto dto)
     {
         await _orderRepository.RemoveOrderWrodBatchAsync(dto.Ids, HttpContext.RequestAborted);
@@ -8997,7 +8997,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPut("order_word")]
-    [LogFilter("更新工单词库")]
+    [LogFilterAlpha("更新工单词库")]
     public async Task Update([FromBody] OrderWordUpdateDto dto)
     {
         var word = await _orderWrodRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
@@ -9100,7 +9100,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPost("order_observe")]
-    [LogFilter("新增工单观察")]
+    [LogFilterAlpha("新增工单观察")]
     public async Task Add([FromBody] OrderObserveAddDto dto)
     {
         var ids = dto.OrderIds.Select(x => x.OrderId).ToList();
@@ -9120,7 +9120,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpDelete("order_observe")]
-    [LogFilter("删除工单观察")]
+    [LogFilterAlpha("删除工单观察")]
     public async Task Delete([FromBody] OrderObserveDeleteDto dto)
     {
         await _orderRepository.RemoveOrderObserveBatchAsync(dto.Ids, HttpContext.RequestAborted);
@@ -9132,7 +9132,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPut("order_observe")]
-    [LogFilter("更新工单观察")]
+    [LogFilterAlpha("更新工单观察")]
     public async Task Update([FromBody] OrderObserveUpdateDto dto)
     {
         var word = await _orderObserveRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
@@ -9227,7 +9227,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPost("order_finality")]
-    [LogFilter("新增工单终结")]
+    [LogFilterAlpha("新增工单终结")]
     public async Task Add([FromBody] OrderFinalityAddDto dto)
     {
         var ids = dto.OrderIds.Select(x => x.OrderId).ToList();
@@ -9247,7 +9247,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpDelete("order_finality")]
-    [LogFilter("删除工单终结")]
+    [LogFilterAlpha("删除工单终结")]
     public async Task Delete([FromBody] OrderFinalityDeleteDto dto)
     {
         await _orderRepository.RemoveOrderFinalityBatchAsync(dto.Ids, HttpContext.RequestAborted);
@@ -9259,7 +9259,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPut("order_finality")]
-    [LogFilter("更新工单终结")]
+    [LogFilterAlpha("更新工单终结")]
     public async Task Update([FromBody] OrderFinalityUpdateDto dto)
     {
         var word = await _orderFinalityRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
@@ -9474,7 +9474,7 @@ public class OrderController : BaseController
     /// 工单签收
     /// </summary>
     [HttpPost("sign/{orderId}")]
-    [LogFilter("工单签收")]
+    [LogFilterAlpha("工单签收")]
     public async Task Sign(string orderId)
     {
         var order = await _orderRepository.GetAsync(orderId, HttpContext.RequestAborted);
@@ -9741,7 +9741,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPost("secondary_handling")]
-    [LogFilter("新增二次办理")]
+    [LogFilterAlpha("新增二次办理")]
     public async Task OrderSecondaryHandlingAdd([FromBody] AddOrderSecondaryHandlingDto dto)
     {
         await _orderSecondaryHandlingApplication.AddAsync(dto, HttpContext.RequestAborted);
@@ -9754,7 +9754,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPost("secondary_handling/send_back")]
-    [LogFilter("二次办理退回")]
+    [LogFilterAlpha("二次办理退回")]
     public async Task OrderSecondaryHandlingSendBackAsync([FromBody] SendBackOrderSecondaryHandlingDto dto)
     {
         await _orderSecondaryHandlingApplication.SendBackAsync(dto, HttpContext.RequestAborted);
@@ -9766,7 +9766,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPut("secondary_handling/audit")]
-    [LogFilter("二次办理审批")]
+    //[LogFilterAlpha("二次办理审批")]
     [LogFilterAlpha("二次办理审核")]
     public async Task OrderSecondaryHandlingAudit([FromBody] AuditOrderSecondaryHandlingDto dto)
     {
@@ -9782,7 +9782,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPut("secondary_handling/batch_audit")]
-    [LogFilter("二次办理批量审批")]
+    //[LogFilterAlpha("二次办理批量审批")]
     [LogFilterAlpha("二次办理审核批量")]
     public async Task OrderSecondaryHandlingBatchAudit([FromBody] AuditOrderSecondaryHandlingDto dto)
     {
@@ -10369,7 +10369,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPost("analysis")]
-    [LogFilter("新增分析报告")]
+    [LogFilterAlpha("新增分析报告")]
     public async Task OrderAnalysisAdd([FromBody] AddOrderAnalysisDto dto)
     {
         await _orderAnalysisApplication.AddAsync(dto, HttpContext.RequestAborted);
@@ -10381,7 +10381,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPut("analysis")]
-    [LogFilter("修改分析报告")]
+    [LogFilterAlpha("修改分析报告")]
     public async Task OrderAnalysisUpdate([FromBody] UpdateOrderAnalysisDto dto)
     {
         await _orderAnalysisApplication.UpdateAsync(dto, HttpContext.RequestAborted);
@@ -10393,7 +10393,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpDelete("analysis")]
-    [LogFilter("删除分析报告")]
+    [LogFilterAlpha("删除分析报告")]
     public async Task OrderAnalysisDelete([FromBody] DeleteOrderAnalysisDto dto)
     {
         await _orderAnalysisApplication.DeleteAsync(dto, HttpContext.RequestAborted);
@@ -10405,7 +10405,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpGet("analysis_list")]
-    [LogFilter("分析报告列表")]
+    [LogFilterAlpha("分析报告列表")]
     public async Task<PagedDto<OrderAnalysisDto>> OrderAnalysisListQuery([FromQuery] OrderAnalysisListDto dto)
     {
         var (total, items) = await _orderAnalysisApplication.ListQuery(dto, HttpContext.RequestAborted)
@@ -10419,7 +10419,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpGet("analysis_detail")]
-    [LogFilter("分析报告明细")]
+    [LogFilterAlpha("分析报告明细")]
     public async Task<PagedDto<OrderDto>> OrderAnalysisDetailQuery([FromQuery] OrderAnalysisDetailDto dto)
     {
         var (total, items) = await _orderAnalysisApplication.DetailQuery(dto, HttpContext.RequestAborted)
@@ -10433,7 +10433,7 @@ public class OrderController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpGet("analysis_report")]
-    [LogFilter("生成分析报告")]
+    [LogFilterAlpha("生成分析报告")]
     public async Task<object> OrderAnalysisReportQuery([FromQuery] OrderAnalysisDetailDto dto)
     {
         return await _orderAnalysisApplication.ReportQuery(dto, HttpContext.RequestAborted);

+ 11 - 2
src/Hotline.Api/Controllers/OrderRevocationController.cs

@@ -187,6 +187,13 @@ namespace Hotline.Api.Controllers
                                 order.ActualHandleTime = DateTime.Now;
                                 order.ActualHandlerId = _sessionContext.UserId;
 
+                                //自贡任务 579 设置撤销件后该工单需处理成中心归档非会签件
+                                if (_appOptions.Value.IsZiGong)
+                                {
+                                    order.CounterSignType = null;
+                                    order.FileOrgIsCenter = true;
+                                }
+
                                 await _orderRepository.Updateable(order).UpdateColumns(it => new
                                 {
                                     it.ActualHandleOrgName,
@@ -197,8 +204,10 @@ namespace Hotline.Api.Controllers
                                     it.ActualHandleOrgAreaName,
                                     it.ActualHandlerName,
                                     it.ActualHandleTime,
-                                    it.ActualHandlerId
-                                }).ExecuteCommandAsync();
+                                    it.ActualHandlerId,
+                                    it.CounterSignType,
+                                    it.FileOrgIsCenter
+                                }).ExecuteCommandAsync(HttpContext.RequestAborted);
 
                                 #endregion
 

+ 3 - 1
src/Hotline.Application/OrderApp/OrderApplication.cs

@@ -1418,7 +1418,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             if (order.DuplicateIds != null)
             {
                 order.DuplicateIds.Add(dto.Data.DuplicateId);
-            }else
+            }
+            else
             {
                 order.DuplicateIds = new List<string>() { dto.Data.DuplicateId };
             }
@@ -4706,6 +4707,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .OrderByIF(dto is { SortField: "visitTime", SortRule: 0 }, d => d.VisitTime, OrderByType.Asc) // 回访时间升序
             .OrderByIF(dto is { SortField: "visitTime", SortRule: 1 }, d => d.VisitTime, OrderByType.Desc) // 回访时间升序
             .OrderByIF(_appOptions.Value.IsZiGong && string.IsNullOrEmpty(dto.SortField), d => d.PublishTime, OrderByType.Desc)
+            .WhereIF(!string.IsNullOrEmpty(dto.ContentRetrieval), d => d.Order.Content.Contains(dto.ContentRetrieval!))
             ;
         return query;
     }

+ 5 - 0
src/Hotline.Share/Dtos/Knowledge/KnowledgeApproveDto.cs

@@ -70,5 +70,10 @@ namespace Hotline.Share.Dtos.Knowledge
         /// 审批人
         /// </summary>
         public UserDto Approver { get; set; }
+
+        /// <summary>
+        /// 是否存在知识修改记录
+        /// </summary>
+        public bool? IsRecord { get; set; } = false;
     }
 }

+ 4 - 0
src/Hotline.Share/Dtos/Order/OrderVisitDto.cs

@@ -158,6 +158,10 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public bool? IsEmployeeNameNull { get; set; }
 
+        /// <summary>
+        /// 受理内容
+        /// </summary>
+        public string? ContentRetrieval { get; set; }
     }
 
     public record QueryOrderVisitListDto : QueryOrderVisitDto

+ 18 - 0
src/Hotline/KnowledgeBase/KnowledgeRecord.cs

@@ -0,0 +1,18 @@
+using SqlSugar;
+using System.ComponentModel;
+
+namespace Hotline.KnowledgeBase
+{
+    /// <summary>
+    /// 知识库记录
+    /// </summary>
+    [Description("知识库记录")]
+    public class KnowledgeRecord : Knowledge
+    {
+        /// <summary>
+        /// 记录ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "记录ID")]
+        public string KnowledgeId { get; set; }
+    }
+}