Explorar o código

Merge branch 'master' of http://git.12345lm.cn/Fengwo/hotline

Dun.Jason hai 1 ano
pai
achega
44a9df4d30

+ 20 - 1
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -222,7 +222,7 @@ namespace Hotline.Api.Controllers
 			var knowledge = await _knowledgeRepository.GetAsync(update.Id);
 			if (knowledge == null)
 				throw UserFriendlyException.SameMessage("知识库数据错误");
-			if (knowledge.Status == EKnowledgeStatus.OnShelf || knowledge.Status == EKnowledgeStatus.Auditing)
+			if ((knowledge.Status == EKnowledgeStatus.OnShelf || knowledge.Status == EKnowledgeStatus.Auditing) && (knowledge.ExpiredTime.HasValue && knowledge.ExpiredTime.Value > DateTime.Now))
 				throw UserFriendlyException.SameMessage("知识库数据不可修改");
 
 			var any = await _knowledgeRepository.Queryable().Where(x => x.Status == EKnowledgeStatus.OnShelf && x.Title == update.Title &&  x.Id != update.Id).AnyAsync();
@@ -557,6 +557,25 @@ namespace Hotline.Api.Controllers
 			var (total, temp) = await sugar.ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize);
 			return new PagedDto<KnowledgeRetrievalDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeRetrievalDataDto>>(temp));
 		}
+
+		/// <summary>
+		/// 获取知识审批信息
+		/// </summary>
+		/// <param name="id"></param>
+		/// <returns></returns>
+		[HttpGet("audit_log/{Id}")]
+		public async Task<PagedDto<KnowledgeWorkFlowDto>> KnowRetrieval(string id)
+		{
+			var (total, temp) =await _knowledgeWorkFlowRepository
+				.Queryable()
+				.Includes(x => x.User)
+				.Includes(x => x.SystemOrganize)
+				.Includes(x => x.Workflow)
+				.Where(x=>x.KnowledgeId == id)
+				.Where(x => x.IsDeleted == false)
+				.ToPagedListAsync(0, 99999);
+			return new PagedDto<KnowledgeWorkFlowDto>(total, _mapper.Map<IReadOnlyList<KnowledgeWorkFlowDto>>(temp));
+		}
 		#endregion
 
 		#region 我的知识删除列表

+ 5 - 1
src/Hotline.Api/Controllers/OrderController.cs

@@ -2240,7 +2240,11 @@ public class OrderController : BaseController
         }
 
         var call = await _trCallRecordRepository.Queryable().Where(x => x.CallAccept == order.CallId).FirstAsync();
-        if (call != null) dto.RecordingFileUrl = call.RecordingFileUrl;
+        if (call != null)
+        {
+            dto.RecordingBaseAddress = call.RecordingBaseAddress;
+            dto.RecordingAbsolutePath = call.RecordingAbsolutePath;
+        }
 
         var repeatablesMap = await _repeatableEventDetailRepository.Queryable()
             .Includes(x => x.Order)

+ 11 - 3
src/Hotline.Api/Controllers/QualityController.cs

@@ -151,13 +151,21 @@ namespace Hotline.Api.Controllers
 			var qualityDto = _mapper.Map<QualityDto>(quality);
 			if (qualityDto.Order != null) {
 				var call = await _trCallRecordRepository.Queryable().Where(x => x.CallAccept == qualityDto.Order.CallId).FirstAsync();
-				if (call != null) qualityDto.Order.RecordingFileUrl = call.RecordingFileUrl;
+                if (call != null)
+                {
+					qualityDto.Order.RecordingBaseAddress = call.RecordingBaseAddress;
+					qualityDto.Order.RecordingAbsolutePath = call.RecordingAbsolutePath;
+                }
 			}
 			if (qualityDto.Visit != null)
 			{
 				var call = await _trCallRecordRepository.Queryable().Where(x => x.CallAccept == qualityDto.Visit.CallId).FirstAsync();
-				if (call != null) qualityDto.Visit.RecordingFileUrl = call.RecordingFileUrl;
-			}
+				if (call != null)
+                {
+                    qualityDto.Visit.RecordingBaseAddress = call.RecordingBaseAddress;
+                    qualityDto.Visit.RecordingAbsolutePath = call.RecordingAbsolutePath;
+                }
+            }
 			return qualityDto;
 		}
 		#endregion

+ 0 - 10
src/Hotline.Api/Controllers/TestController.cs

@@ -336,14 +336,4 @@ public class TestController : BaseController
         var publicKey = keyList[1];
         return $"{publicKey} \r\n {privateKey}";
     }
-
-    [HttpGet("dl")]
-    public async Task<IActionResult> F([FromServices]IHttpClientFactory clientFactory)
-    {
-        var p = "https://pic1.zhimg.com/v2-cb480c9bd8c2d5565229dd3b2ecbf878_r.jpg";
-        using var client = clientFactory.CreateClient();
-        var s1 = await client.GetAsync(p, HttpContext.RequestAborted);
-        //var s = await client.GetStreamAsync(p, HttpContext.RequestAborted);
-        return File(s1.Content.ReadAsStream(), s1?.Content?.Headers?.ContentType?.MediaType??"image/jpeg");
-    }
 }

+ 95 - 0
src/Hotline.Share/Dtos/Knowledge/KnowledgeWorkFlowDto.cs

@@ -0,0 +1,95 @@
+using Hotline.Share.Enums.KnowledgeBase;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Hotline.Share.Dtos.FlowEngine.Workflow;
+using Hotline.Share.Dtos.Users;
+using Hotline.Share.Dtos.Org;
+
+namespace Hotline.Share.Dtos.Knowledge
+{
+	public class KnowledgeWorkFlowDto: BaseDto
+	{
+		/// <summary>
+		/// 知识ID
+		/// </summary>
+		public string KnowledgeId { get; set; }
+
+		/// <summary>
+		/// 操作类型,新增、删除、编辑
+		/// </summary>
+		public EKnowledgeApplyType WorkflowModuleStatus { get; set; }
+
+		/// <summary>
+		/// 审批状态
+		/// </summary>
+		public EKnowledgeWorkFlowStatus WorkFlowApplyStatus { get; set; }
+
+		/// <summary>
+		/// 审核时间
+		/// </summary>
+		public DateTime? HandleTime { get; set; }
+
+		/// <summary>
+		/// 实际办理意见(办理中...or 最终办理意见)
+		/// </summary>
+		public string ActualOpinion { get; set; } 
+
+		/// <summary>
+		/// 知识信息
+		/// </summary>
+		public KnowledgeDto Knowledge { get; set; }
+
+		/// <summary>
+		/// 流程信息
+		/// </summary>
+		public WorkflowDto Workflow { get; set; }
+
+		/// <summary>
+		/// 部门
+		/// </summary>
+		public OrgDto SystemOrganize { get; set; }
+
+		/// <summary>
+		/// 用户
+		/// </summary>
+		public UserDto User { get; set; }
+	}
+
+	public class BaseDto
+	{
+		public DateTime? LastModificationTime { get; set; }
+
+		public bool IsDeleted { get; set; }
+
+		/// <summary>
+		/// 删除时间
+		/// </summary>
+		public DateTime? DeletionTime { get; set; }
+
+
+		/// <summary>
+		/// 创建时间
+		/// </summary>
+		public DateTime CreationTime { get; set; }
+
+		public string Id { get; set; }
+
+		/// <summary>
+		/// 组织Id
+		/// </summary>
+		public string? CreatorOrgId { get; set; }
+
+
+		public string? CreatorOrgName { get; set; }
+
+		/// <summary>
+		/// 创建人
+		/// </summary>
+		public string? CreatorId { get; set; }
+
+		public string? CreatorName { get; set; }
+	}
+}

+ 2 - 1
src/Hotline.Share/Dtos/Order/OrderDto.cs

@@ -422,7 +422,8 @@ namespace Hotline.Share.Dtos.Order
         /// <summary>
         /// 可直接访问的通话录音地址
         /// </summary>
-        public string? RecordingFileUrl { get; set; }
+        public string? RecordingBaseAddress { get; set; }
+        public string? RecordingAbsolutePath { get; set; }
 
     }
 

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

@@ -333,6 +333,9 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public string? RecordingFileUrl { get; set; }
 
+        public string? RecordingBaseAddress { get; set; }
+        public string? RecordingAbsolutePath { get; set; }
+
         /// <summary>
         /// 渠道为电话时,此字段存在
         /// </summary>

+ 1 - 6
src/Hotline.Share/Dtos/TrCallCenter/TrTelDao.cs

@@ -465,12 +465,7 @@ namespace Hotline.Share.Dtos.TrCallCenter
         public string? RecordingFileUrl { get; set; }
         public string? RecordingBaseAddress { get; set; }
         public string? RecordingAbsolutePath { get; set; }
-
-        /// <summary>
-        /// 下载字段
-        /// </summary>
-        public string? DownRecordingFileUrl { get; set; }
-
+        
         /// <summary>
         /// 呼叫方向
         /// </summary>

+ 3 - 1
src/Hotline/KnowledgeBase/KnowledgeDomainService.cs

@@ -212,6 +212,7 @@ namespace Hotline.KnowledgeBase
 
             //修改业务数据状态
             workFlow.WorkFlowApplyStatus = EKnowledgeWorkFlowStatus.Revoke;
+            workFlow.ActualOpinion = workflow.ActualOpinion;
             await _knowledgeWorkFlowRepository.UpdateAsync(workFlow);
 
             //现有知识状态更改为已撤回
@@ -264,7 +265,8 @@ namespace Hotline.KnowledgeBase
 
             workFlow.HandleTime = DateTime.Now;
             workFlow.WorkFlowApplyStatus = EKnowledgeWorkFlowStatus.Success;
-            await _knowledgeWorkFlowRepository.UpdateAsync(workFlow, cancellationToken);
+            workFlow.ActualOpinion = workflow.ActualOpinion;
+			await _knowledgeWorkFlowRepository.UpdateAsync(workFlow, cancellationToken);
 
             string isSendType = "";//推送类别:新增0,修改1,删除2
 

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

@@ -35,9 +35,15 @@ namespace Hotline.KnowledgeBase
         public DateTime? HandleTime { get; set; }
 
         /// <summary>
-        /// 知识信息
+        /// 实际办理意见(办理中...or 最终办理意见)
         /// </summary>
-        [Navigate(NavigateType.OneToOne, nameof(KnowledgeId))]//一对一 
+        [SugarColumn(Length = 2000)]
+        public string? ActualOpinion { get; set; } 
+
+		/// <summary>
+		/// 知识信息
+		/// </summary>
+		[Navigate(NavigateType.OneToOne, nameof(KnowledgeId))]//一对一 
         public Knowledge Knowledge { get; set; }
 
         /// <summary>