|
@@ -345,17 +345,63 @@ namespace Hotline.Api.Controllers
|
|
|
[HttpPost("callout/closecallouttask")]
|
|
|
public async Task CloseCalloutTask([FromBody] CloseCalloutTaskReq request)
|
|
|
{
|
|
|
- var callOut = await _callOutTaskRepository.Queryable()
|
|
|
- .Includes(x => x.CallOutTaskDetails)
|
|
|
- .FirstAsync(x => x.BatchUid == request.Id);
|
|
|
-
|
|
|
- if (callOut!=null)
|
|
|
+ switch (request.TypeId)
|
|
|
{
|
|
|
- if (callOut.AiCallOutTaskState != EAiCallOutTaskState.NoStarted)
|
|
|
- throw UserFriendlyException.SameMessage("当前状态不能终止");
|
|
|
-
|
|
|
+ case 1:
|
|
|
+ var aiVisit = await _aiOrderVisitRepository.Queryable()
|
|
|
+ .Includes(x => x.AiOrderVisitDetails)
|
|
|
+ .FirstAsync(x => x.Id == request.Id);
|
|
|
+ if (aiVisit!=null && !string.IsNullOrEmpty(aiVisit.BatchUid))
|
|
|
+ {
|
|
|
+ if (aiVisit.TaskState != EAiOrderVisitTaskState.NoStarted || aiVisit.TaskState != EAiOrderVisitTaskState.InProgress)
|
|
|
+ throw UserFriendlyException.SameMessage("当前状态不能终止");
|
|
|
+
|
|
|
+ bool isOk = await _aiVisitService.ChangeStatusAsync(aiVisit.BatchUid, "cancel", HttpContext.RequestAborted);
|
|
|
|
|
|
+ if (!isOk)
|
|
|
+ throw UserFriendlyException.SameMessage("终止失败");
|
|
|
+
|
|
|
+ aiVisit.TaskState = EAiOrderVisitTaskState.Close;
|
|
|
+ aiVisit.AiOrderVisitDetails.ForEach(x =>
|
|
|
+ {
|
|
|
+ if (x.AiOrderVisitState == EAiOrderVisitState.NoStarted)
|
|
|
+ x.AiOrderVisitState = EAiOrderVisitState.LoseEfficacy;
|
|
|
+ });
|
|
|
+ await _aiOrderVisitRepository.UpdateAsync(aiVisit, HttpContext.RequestAborted);
|
|
|
+ await _aiOrderVisitDetailRepository.UpdateRangeAsync(aiVisit.AiOrderVisitDetails, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ var callOut = await _callOutTaskRepository.Queryable()
|
|
|
+ .Includes(x => x.CallOutTaskDetails)
|
|
|
+ .FirstAsync(x => x.Id == request.Id);
|
|
|
+ if (callOut != null && !string.IsNullOrEmpty(callOut.BatchUid))
|
|
|
+ {
|
|
|
+ if (callOut.AiCallOutTaskState != EAiCallOutTaskState.NoStarted || callOut.AiCallOutTaskState != EAiCallOutTaskState.InProgress)
|
|
|
+ throw UserFriendlyException.SameMessage("当前状态不能终止");
|
|
|
+
|
|
|
+ bool isOk = await _aiVisitService.ChangeStatusAsync(callOut.BatchUid, "cancel", HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ if (!isOk)
|
|
|
+ throw UserFriendlyException.SameMessage("终止失败");
|
|
|
+ //处理业务数据
|
|
|
+ callOut.AiCallOutTaskState = EAiCallOutTaskState.Close;
|
|
|
+ callOut.CallOutTaskDetails.ForEach(x =>
|
|
|
+ {
|
|
|
+ if (x.AiCallOutState == EAiCallOutState.NoStarted)
|
|
|
+ x.AiCallOutState = EAiCallOutState.LoseEfficacy;
|
|
|
+ });
|
|
|
+ await _callOutTaskRepository.UpdateAsync(callOut, HttpContext.RequestAborted);
|
|
|
+ await _callOutTaskDetailRepository.UpdateRangeAsync(callOut.CallOutTaskDetails, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw UserFriendlyException.SameMessage("未知业务");
|
|
|
+ break;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|