package com.ruoyi.phone.controller;
|
|
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.phone.api.PhoneApi;
|
import com.ruoyi.phone.domain.PhoneCallBackVO;
|
import com.ruoyi.phone.domain.PhoneCallBackYQVO;
|
import com.ruoyi.phone.domain.PhoneCallRecordVO;
|
import com.ruoyi.phone.domain.PhoneCallReqYQVO;
|
import com.ruoyi.phone.domain.PullTaskVO;
|
import com.ruoyi.task.domain.ServiceSubTaskDetailReq;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.List;
|
|
/**
|
* 外呼回调 / 任务拉取 Controller(上海 + 雨绮两条通道)。
|
*
|
* <h3>⚠️ URL 与模块化前完全一致</h3>
|
* 这些端点是<b>外部电话平台</b>回调用地址,模块化时<b>刻意不改路径</b>
|
* ({@code /smartor/serviceSubtask/xxx}),否则线上需要同步改电话平台的配置,
|
* 且 {@code SecurityConfig} 的免登录白名单也要跟着改。
|
* 因此本 Controller 与 {@code ruoyi-task} 的 {@code ServiceSubtaskController}
|
* <b>共用一个 URL 前缀</b>——只要完整路径不重复,Spring 可以正常注册。
|
*
|
* <h3>为什么走门面(PhoneApi)而不是内部 IPhoneService</h3>
|
* 与出入院/满意度模块"模块只有门面一个入口"的约定一致:
|
* 门面统一承担"开关关闭 → 降级/明确报错"的处理,Controller 不再各写一遍判断。
|
*
|
* <h3>与模块开关的关系</h3>
|
* 这 8 个端点(含三汇那个 Controller)由 {@code PhoneWebConfig} 挂
|
* {@code PhoneAvailabilityInterceptor};同时在 {@code TaskWebConfig} 里把其中 6 条
|
* 从"任务模块开关"的拦截范围里排除,做到两个模块的开关各管各的。
|
*
|
* @author ruoyi
|
* @date 2024-08-08
|
*/
|
@Slf4j
|
@Api(description = "外呼回调(上海/雨绮)")
|
@RestController
|
@RequestMapping("/smartor/serviceSubtask")
|
public class PhoneCallbackController extends BaseController {
|
|
@Autowired
|
private PhoneApi phoneApi;
|
|
/**
|
* 电话回调任务(上海)
|
*/
|
@ApiOperation("电话回调任务")
|
@PostMapping("/phoneCallBack")
|
public AjaxResult phoneCallBack(@RequestBody PhoneCallBackVO phoneCallBackVO) {
|
phoneApi.phoneCallBack(phoneCallBackVO);
|
return success();
|
}
|
|
/**
|
* 电话ASR通话回调(雨绮)
|
*/
|
@ApiOperation("电话ASR通话回调(雨绮)")
|
@PostMapping("/phoneCallBackYQ")
|
public PhoneCallBackYQVO phoneCallBackYQ(@RequestBody PhoneCallReqYQVO phoneCallReqYQVO) {
|
log.info("电话ASR通话回调(雨绮) ?{}", phoneCallReqYQVO);
|
return phoneApi.phoneCallBackYQ(phoneCallReqYQVO);
|
}
|
|
/**
|
* 电话任务拉取(雨绮)
|
*/
|
@ApiOperation("电话任务拉取(雨绮)")
|
@PostMapping("/taskPull")
|
public List<PullTaskVO> taskPull() {
|
log.info("电话任务拉取(雨绮)");
|
List<PullTaskVO> pullTaskVOList = phoneApi.taskPull();
|
log.info("电话任务拉取数据(雨绮):{}", pullTaskVOList);
|
return pullTaskVOList;
|
}
|
|
/**
|
* 患者问题结果记录(电话)
|
*/
|
@ApiOperation("患者问题结果记录(电话)")
|
@PostMapping("/saveQuestionAnswerPhone")
|
public AjaxResult saveQuestionAnswerPhone(@RequestBody ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
|
log.info("患者问题结果记录(电话):{}", serviceSubTaskDetailReq);
|
return toAjax(phoneApi.saveQuestionAnswerPhone(serviceSubTaskDetailReq));
|
}
|
|
/**
|
* 通话记录回调(上海)
|
*/
|
@ApiOperation("通话记录回调(上海)")
|
@PostMapping("/recordAcceptshanghai")
|
public AjaxResult recordAccepshanghait(@RequestBody ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
|
log.info("通话记录回调(上海):{}", serviceSubTaskDetailReq);
|
return toAjax(phoneApi.saveQuestionAnswerPhone(serviceSubTaskDetailReq));
|
}
|
|
/**
|
* 通话记录回调(雨绮)
|
*/
|
@ApiOperation("通话记录回调(雨绮)")
|
@PostMapping("/recordAccept")
|
public AjaxResult recordAccept(@RequestBody PhoneCallRecordVO phoneCallRecordVO) {
|
log.info("通话记录回调(雨绮):{}", phoneCallRecordVO);
|
phoneApi.recordAccept(phoneCallRecordVO);
|
return success();
|
}
|
}
|