合并点呼api

master
wujingtao 3 years ago
parent 7cb3378a7d
commit b4c02351f2

@ -1,61 +0,0 @@
package com.baiye.modules.telemarkting.api;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baiye.http.CommonResponse;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallReqDTO;
import com.baiye.modules.telemarkting.entity.dto.RollCallBackDTO;
import com.baiye.modules.telemarkting.service.RollCallService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
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 javax.annotation.Resource;
/**
* @author wujingtao
* @date 2022/02/10
*/
@Slf4j
@RestController
@RequestMapping("/api")
@Api(tags = "对接点呼")
@RequiredArgsConstructor
public class RollCallController {
@Resource
private RollCallService rollCallService;
@PostMapping("/roll/req")
@ApiOperation("请求接入点呼")
public CommonResponse<Object> rollCallReq(@Validated @RequestBody TelephoneCallReqDTO telephoneCallReqDTO) {
if (ObjectUtil.isEmpty(telephoneCallReqDTO)) {
return CommonResponse.createByError();
}
return rollCallService.rollCallReq(telephoneCallReqDTO);
}
@PostMapping("/roll/cdrUrl")
@ApiOperation("点呼系统回调话单")
public CommonResponse<String> doubleCallBack(@RequestBody String json) {
log.info("点呼回调:{}", json);
try {
RollCallBackDTO rollCallBackDTO = JSONUtil.toBean(json, RollCallBackDTO.class);
if (ObjectUtil.isEmpty(rollCallBackDTO) || StrUtil.isEmpty(rollCallBackDTO.getSessionid())) {
return CommonResponse.createByErrorMessage("参数为空");
}
rollCallService.rollCallBack(rollCallBackDTO);
} catch (Exception e) {
log.error("点呼回调话单错误 参数 {}", json);
log.error("点呼回调话单错误,数据解析错误 {}", e.getMessage());
return CommonResponse.createByError();
}
return CommonResponse.createBySuccess();
}
}

@ -9,10 +9,7 @@ import com.baiye.modules.system.domain.Company;
import com.baiye.modules.system.domain.Organize;
import com.baiye.modules.system.service.CompanyService;
import com.baiye.modules.system.service.OrganizeService;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallBackDTO;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallBackStatusDTO;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallReqDTO;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallStopDTO;
import com.baiye.modules.telemarkting.entity.dto.*;
import com.baiye.modules.telemarkting.service.TelephoneCallService;
import com.baiye.util.SecurityUtils;
import io.swagger.annotations.Api;
@ -54,10 +51,19 @@ public class TelephoneCallController {
if (organize != null && byId != null) {
telephoneCallReqDTO.setCompanyName(byId.getCompanyName());
telephoneCallReqDTO.setXGroup(byId.getXGroup());
return organize.getCallMode() != null
&& organize.getCallMode() > DefaultNumberConstants.ONE_NUMBER
? telephoneCallService.axbDialNumber(telephoneCallReqDTO)
: telephoneCallService.doubleCallReq(telephoneCallReqDTO);
if (organize.getCallMode() != null) {
switch (organize.getCallMode()) {
case DefaultNumberConstants.ZERO_NUMBER:
return telephoneCallService.doubleCallReq(telephoneCallReqDTO);
case DefaultNumberConstants.TWO_NUMBER:
return telephoneCallService.axbDialNumber(telephoneCallReqDTO);
case DefaultNumberConstants.ONE_NUMBER:
return telephoneCallService.rollCallReq(telephoneCallReqDTO);
default:
return CommonResponse.createByErrorMessage("未配置呼叫");
}
}
}
}
return CommonResponse.createByError();
@ -110,4 +116,22 @@ public class TelephoneCallController {
public CommonResponse<Object> getCallRecord(@RequestParam(value = "clueId") Long clueId, @RequestParam(value = "memberId") Long memberId) {
return telephoneCallService.getCallRecord(clueId, memberId);
}
@PostMapping("/roll/cdrUrl")
@ApiOperation("点呼系统回调话单")
public CommonResponse<String> rollCallBack(@RequestBody String json) {
log.info("点呼回调:{}", json);
try {
RollCallBackDTO rollCallBackDTO = JSONUtil.toBean(json, RollCallBackDTO.class);
if (ObjectUtil.isEmpty(rollCallBackDTO) || StrUtil.isEmpty(rollCallBackDTO.getSessionid())) {
return CommonResponse.createByErrorMessage("参数为空");
}
telephoneCallService.rollCallBack(rollCallBackDTO);
} catch (Exception e) {
log.error("点呼回调话单错误 参数 {}", json);
log.error("点呼回调话单错误,数据解析错误 {}", e.getMessage());
return CommonResponse.createByError();
}
return CommonResponse.createBySuccess();
}
}

@ -1,27 +0,0 @@
package com.baiye.modules.telemarkting.service;
import com.baiye.http.CommonResponse;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallReqDTO;
import com.baiye.modules.telemarkting.entity.dto.RollCallBackDTO;
/**
* @author wujingtao
* @date 2022/02/10
*
*/
public interface RollCallService {
/**
*
*
* @param telephoneCallReqDTO
* @return
*/
CommonResponse<Object> rollCallReq(TelephoneCallReqDTO telephoneCallReqDTO);
/**
*
*
* @param rollCallBackDTO
*/
void rollCallBack(RollCallBackDTO rollCallBackDTO);
}

@ -1,10 +1,7 @@
package com.baiye.modules.telemarkting.service;
import com.baiye.http.CommonResponse;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallBackDTO;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallBackStatusDTO;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallReqDTO;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallStopDTO;
import com.baiye.modules.telemarkting.entity.dto.*;
/**
* @author wjt
@ -57,4 +54,18 @@ public interface TelephoneCallService {
* @return
*/
CommonResponse<String> axbDialNumber(TelephoneCallReqDTO telephoneCallReqDTO);
/**
*
*
* @param telephoneCallReqDTO
* @return
*/
CommonResponse<String> rollCallReq(TelephoneCallReqDTO telephoneCallReqDTO);
/**
*
*
* @param rollCallBackDTO
*/
void rollCallBack(RollCallBackDTO rollCallBackDTO);
}

@ -1,109 +0,0 @@
package com.baiye.modules.telemarkting.service.impl;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.feign.SourceClueClient;
import com.baiye.http.CommonResponse;
import com.baiye.modules.system.domain.Clue;
import com.baiye.modules.telemarkting.dao.AllCallInfoRepository;
import com.baiye.modules.telemarkting.dao.CallClueRepository;
import com.baiye.modules.telemarkting.dao.ExtensionNumberRepository;
import com.baiye.modules.telemarkting.dao.ExtensionUserRepository;
import com.baiye.modules.telemarkting.entity.AllCallInfo;
import com.baiye.modules.telemarkting.entity.CallClueInfo;
import com.baiye.modules.telemarkting.entity.ExtensionNumber;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallReqDTO;
import com.baiye.modules.telemarkting.entity.dto.RollCallBackDTO;
import com.baiye.modules.telemarkting.httpRequest.RollCallReq;
import com.baiye.modules.telemarkting.service.RollCallService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* @author wujingtao
* @date 2022/02/10
*/
@Service
@Slf4j
public class RollCallServiceImpl implements RollCallService {
@Resource
private AllCallInfoRepository allCallInfoRepository;
@Resource
private CallClueRepository callClueRepository;
@Resource
private SourceClueClient sourceClueClient;
@Resource
private RollCallReq rollCallReq;
@Resource
private ExtensionUserRepository extensionUserRepository;
@Resource
private ExtensionNumberRepository extensionNumberRepository;
@Override
public CommonResponse<Object> rollCallReq(TelephoneCallReqDTO telephoneCallReqDTO) {
String requestId = RandomUtil.randomString(10);
telephoneCallReqDTO.setRequestId(requestId);
//获取分机号
ExtensionNumber extensionNumber = extensionNumberRepository.selectByMemberId(telephoneCallReqDTO.getMemberId());
if (extensionNumber == null) {
return CommonResponse.createByErrorMessage("未配置分机号");
}
telephoneCallReqDTO.setTelA(String.valueOf(extensionNumber.getNumber()));
telephoneCallReqDTO.setDisplay(extensionNumber.getDisplay());
//获取线索号
Clue body = sourceClueClient.queryDetails(Long.parseLong(telephoneCallReqDTO.getUserData())).getBody();
if (ObjectUtil.isNull(body) || StrUtil.isEmpty(body.getNid())) {
return CommonResponse.createByErrorMessage("未获取到号码");
}
telephoneCallReqDTO.setTelB(body.getNid());
String reqId = rollCallReq.startReq(telephoneCallReqDTO);
log.info("=============================reqId {}", reqId);
if (StrUtil.isNotBlank(reqId)) {
if (StrUtil.isNotBlank(reqId)) {
AllCallInfo allCallInfo = new AllCallInfo();
allCallInfo.setRequestId(requestId);
allCallInfo.setClueId(Long.parseLong(telephoneCallReqDTO.getUserData()));
allCallInfo.setMemberId(telephoneCallReqDTO.getMemberId());
allCallInfo.setStatus(DefaultNumberConstants.ONE_NUMBER);
allCallInfo.setType(DefaultNumberConstants.TWO_NUMBER);
allCallInfo.setRecordFlag(DefaultNumberConstants.ZERO_NUMBER);
CallClueInfo clueInfo = new CallClueInfo();
clueInfo.setClueId(Long.parseLong(telephoneCallReqDTO.getUserData()));
clueInfo.setTeamId(telephoneCallReqDTO.getTeamId());
clueInfo.setMemberId(telephoneCallReqDTO.getMemberId());
clueInfo.setStatus(DefaultNumberConstants.ONE_NUMBER);
clueInfo.setTaskId(telephoneCallReqDTO.getTaskId());
allCallInfoRepository.save(allCallInfo);
callClueRepository.save(clueInfo);
} else {
return CommonResponse.createByError();
}
}
return CommonResponse.createBySuccess(requestId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void rollCallBack(RollCallBackDTO rollCallBackDTO) {
String reqId = rollCallBackDTO.getReqid();
AllCallInfo allCallInfo = allCallInfoRepository.findByRequestId(reqId);
if (ObjectUtil.isNotEmpty(allCallInfo)) {
if (StrUtil.isBlank(rollCallBackDTO.getDuration())) {
//表示接通
callClueRepository.updateByStatus(DefaultNumberConstants.TWO_NUMBER, allCallInfo.getClueId());
allCallInfo.setStatus(DefaultNumberConstants.TWO_NUMBER);
allCallInfo.setDuration(Integer.valueOf(rollCallBackDTO.getDuration()));
allCallInfo.setRecordFlag(DefaultNumberConstants.ONE_NUMBER);
allCallInfo.setRecordFileDownloadUrl(rollCallBackDTO.getRecord_file_url());
}
allCallInfoRepository.save(allCallInfo);
}
}
}

@ -13,15 +13,15 @@ import com.baiye.model.enums.CallStatusEnum;
import com.baiye.modules.system.domain.Clue;
import com.baiye.modules.telemarkting.dao.AllCallInfoRepository;
import com.baiye.modules.telemarkting.dao.CallClueRepository;
import com.baiye.modules.telemarkting.dao.ExtensionNumberRepository;
import com.baiye.modules.telemarkting.entity.AllCallInfo;
import com.baiye.modules.telemarkting.entity.CallClueInfo;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallBackDTO;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallBackStatusDTO;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallReqDTO;
import com.baiye.modules.telemarkting.entity.dto.TelephoneCallStopDTO;
import com.baiye.modules.telemarkting.entity.ExtensionNumber;
import com.baiye.modules.telemarkting.entity.dto.*;
import com.baiye.modules.telemarkting.entity.vo.CallRecordsVO;
import com.baiye.modules.telemarkting.httpRequest.AxbRequest;
import com.baiye.modules.telemarkting.httpRequest.DoubleCallReq;
import com.baiye.modules.telemarkting.httpRequest.RollCallReq;
import com.baiye.modules.telemarkting.service.TelephoneCallService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
@ -47,13 +47,16 @@ public class TelephoneCallServiceImpl implements TelephoneCallService {
@Resource
private DoubleCallReq doubleCallReq;
@Resource
private RollCallReq rollCallReq;
@Resource
private AllCallInfoRepository allCallInfoRepository;
@Resource
private CallClueRepository callClueRepository;
@Resource
private SourceClueClient sourceClueClient;
@Resource
private ExtensionNumberRepository extensionNumberRepository;
@Override
public CommonResponse<String> doubleCallReq(TelephoneCallReqDTO doubleCallReq) {
@ -175,4 +178,67 @@ public class TelephoneCallServiceImpl implements TelephoneCallService {
}
return CommonResponse.createByError();
}
@Override
public CommonResponse<String> rollCallReq(TelephoneCallReqDTO telephoneCallReqDTO) {
String requestId = RandomUtil.randomString(10);
telephoneCallReqDTO.setRequestId(requestId);
//获取分机号
ExtensionNumber extensionNumber = extensionNumberRepository.selectByMemberId(telephoneCallReqDTO.getMemberId());
if (extensionNumber == null) {
return CommonResponse.createByErrorMessage("未配置分机号");
}
telephoneCallReqDTO.setTelA(String.valueOf(extensionNumber.getNumber()));
telephoneCallReqDTO.setDisplay(extensionNumber.getDisplay());
//获取线索号
Clue body = sourceClueClient.queryDetails(Long.parseLong(telephoneCallReqDTO.getUserData())).getBody();
if (ObjectUtil.isNull(body) || StrUtil.isEmpty(body.getNid())) {
return CommonResponse.createByErrorMessage("未获取到号码");
}
telephoneCallReqDTO.setTelB(body.getNid());
String reqId = rollCallReq.startReq(telephoneCallReqDTO);
log.info("=============================reqId {}", reqId);
if (StrUtil.isNotBlank(reqId)) {
if (StrUtil.isNotBlank(reqId)) {
AllCallInfo allCallInfo = new AllCallInfo();
allCallInfo.setRequestId(requestId);
allCallInfo.setClueId(Long.parseLong(telephoneCallReqDTO.getUserData()));
allCallInfo.setMemberId(telephoneCallReqDTO.getMemberId());
allCallInfo.setStatus(DefaultNumberConstants.ONE_NUMBER);
allCallInfo.setType(DefaultNumberConstants.TWO_NUMBER);
allCallInfo.setRecordFlag(DefaultNumberConstants.ZERO_NUMBER);
CallClueInfo clueInfo = new CallClueInfo();
clueInfo.setClueId(Long.parseLong(telephoneCallReqDTO.getUserData()));
clueInfo.setTeamId(telephoneCallReqDTO.getTeamId());
clueInfo.setMemberId(telephoneCallReqDTO.getMemberId());
clueInfo.setStatus(DefaultNumberConstants.ONE_NUMBER);
clueInfo.setTaskId(telephoneCallReqDTO.getTaskId());
allCallInfoRepository.save(allCallInfo);
callClueRepository.save(clueInfo);
} else {
return CommonResponse.createByError();
}
}
return CommonResponse.createBySuccess(requestId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void rollCallBack(RollCallBackDTO rollCallBackDTO) {
String reqId = rollCallBackDTO.getReqid();
AllCallInfo allCallInfo = allCallInfoRepository.findByRequestId(reqId);
if (ObjectUtil.isNotEmpty(allCallInfo)) {
if (StrUtil.isBlank(rollCallBackDTO.getDuration())) {
//表示接通
callClueRepository.updateByStatus(DefaultNumberConstants.TWO_NUMBER, allCallInfo.getClueId());
allCallInfo.setStatus(DefaultNumberConstants.TWO_NUMBER);
allCallInfo.setDuration(Integer.valueOf(rollCallBackDTO.getDuration()));
allCallInfo.setRecordFlag(DefaultNumberConstants.ONE_NUMBER);
allCallInfo.setRecordFileDownloadUrl(rollCallBackDTO.getRecord_file_url());
}
allCallInfoRepository.save(allCallInfo);
}
}
}

Loading…
Cancel
Save