diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/RollCallController.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/RollCallController.java deleted file mode 100644 index 09da45f4..00000000 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/RollCallController.java +++ /dev/null @@ -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 rollCallReq(@Validated @RequestBody TelephoneCallReqDTO telephoneCallReqDTO) { - if (ObjectUtil.isEmpty(telephoneCallReqDTO)) { - return CommonResponse.createByError(); - } - return rollCallService.rollCallReq(telephoneCallReqDTO); - } - - @PostMapping("/roll/cdrUrl") - @ApiOperation("点呼系统回调话单") - public CommonResponse 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(); - } -} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/TelephoneCallController.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/TelephoneCallController.java index 1a8005dd..5460d186 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/TelephoneCallController.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/TelephoneCallController.java @@ -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 getCallRecord(@RequestParam(value = "clueId") Long clueId, @RequestParam(value = "memberId") Long memberId) { return telephoneCallService.getCallRecord(clueId, memberId); } + + @PostMapping("/roll/cdrUrl") + @ApiOperation("点呼系统回调话单") + public CommonResponse 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(); + } } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/RollCallService.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/RollCallService.java deleted file mode 100644 index 5171c2fa..00000000 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/RollCallService.java +++ /dev/null @@ -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 rollCallReq(TelephoneCallReqDTO telephoneCallReqDTO); - - /** - * 电呼回调 - * - * @param rollCallBackDTO - */ - void rollCallBack(RollCallBackDTO rollCallBackDTO); -} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/TelephoneCallService.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/TelephoneCallService.java index e6ebc124..95fc4793 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/TelephoneCallService.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/TelephoneCallService.java @@ -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 axbDialNumber(TelephoneCallReqDTO telephoneCallReqDTO); + + /** + * 点呼请求 + * + * @param telephoneCallReqDTO + * @return + */ + CommonResponse rollCallReq(TelephoneCallReqDTO telephoneCallReqDTO); + /** + * 点呼回调 + * + * @param rollCallBackDTO + */ + void rollCallBack(RollCallBackDTO rollCallBackDTO); } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/RollCallServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/RollCallServiceImpl.java deleted file mode 100644 index a3de87fc..00000000 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/RollCallServiceImpl.java +++ /dev/null @@ -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 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); - } - } -} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/TelephoneCallServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/TelephoneCallServiceImpl.java index d108ad8a..35ffab70 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/TelephoneCallServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/TelephoneCallServiceImpl.java @@ -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 doubleCallReq(TelephoneCallReqDTO doubleCallReq) { @@ -175,4 +178,67 @@ public class TelephoneCallServiceImpl implements TelephoneCallService { } return CommonResponse.createByError(); } + + @Override + public CommonResponse 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); + } + } }