From 443ac3c9095fccaa2d5686c55b75650ded1ef04e Mon Sep 17 00:00:00 2001 From: wujingtao Date: Thu, 10 Feb 2022 17:56:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=91=BC=E5=8F=AB=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E4=BF=9D=E5=AD=98=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ReportServiceImpl.java | 10 +- .../telemarkting/api/RollCallController.java | 62 ++++++++++++ ...sitory.java => AllCallInfoRepository.java} | 21 ++-- .../telemarkting/entity/AllCallInfo.java | 73 ++++++++++++++ .../entity/dto/RollCallBackDTO.java | 30 ++++++ .../entity/dto/RollCallSystemDTO.java | 21 ++++ .../telemarkting/service/RollCallService.java | 27 ++++++ .../service/impl/DoubleCallServiceImpl.java | 53 ++++++---- .../service/impl/RollCallServiceImpl.java | 97 +++++++++++++++++++ 9 files changed, 357 insertions(+), 37 deletions(-) create mode 100644 manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/RollCallController.java rename manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/{DoubleCallRepository.java => AllCallInfoRepository.java} (50%) create mode 100644 manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/AllCallInfo.java create mode 100644 manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/dto/RollCallBackDTO.java create mode 100644 manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/dto/RollCallSystemDTO.java create mode 100644 manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/RollCallService.java create mode 100644 manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/RollCallServiceImpl.java diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/report/service/impl/ReportServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/report/service/impl/ReportServiceImpl.java index 090a15a6..74ce3527 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/report/service/impl/ReportServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/report/service/impl/ReportServiceImpl.java @@ -9,7 +9,6 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.http.CommonResponse; -import com.baiye.model.enums.CallStatusEnum; import com.baiye.modules.report.entity.dto.StatisticalReportDTO; import com.baiye.modules.report.entity.dto.UploadTaskDTO; import com.baiye.modules.report.entity.vo.MemberInfoVO; @@ -20,8 +19,9 @@ import com.baiye.modules.system.domain.User; import com.baiye.modules.system.repository.OrganizeRepository; import com.baiye.modules.system.repository.TaskRepository; import com.baiye.modules.system.repository.UserRepository; +import com.baiye.modules.telemarkting.dao.AllCallInfoRepository; import com.baiye.modules.telemarkting.dao.CallClueRepository; -import com.baiye.modules.telemarkting.dao.DoubleCallRepository; +import com.baiye.modules.telemarkting.entity.AllCallInfo; import com.baiye.modules.telemarkting.entity.CallClueInfo; import com.baiye.modules.telemarkting.entity.DoubleCallInfo; import com.baiye.util.DateTimeUtil; @@ -45,7 +45,7 @@ public class ReportServiceImpl implements ReportService { @Resource private CallClueRepository callClueRepository; @Resource - private DoubleCallRepository doubleCallRepository; + private AllCallInfoRepository allCallInfoRepository; @Resource private TaskRepository taskRepository; @Resource @@ -471,11 +471,11 @@ public class ReportServiceImpl implements ReportService { for (CallClueInfo info : callClueInfos) { //接通时才会有通话时长 long clueId = info.getClueId(); - List doubleCallInfo = doubleCallRepository.selectAllByTimeAndClueId(begin, end, clueId); + List doubleCallInfo = allCallInfoRepository.selectAllByTimeAndClueId(begin, end, clueId); //统计通话时长 int doubleClueTime = 0; if (CollUtil.isNotEmpty(doubleCallInfo)) { - doubleClueTime = doubleCallInfo.stream().mapToInt(DoubleCallInfo::getDuration).sum(); + doubleClueTime = doubleCallInfo.stream().mapToInt(AllCallInfo::getDuration).sum(); if (doubleClueTime > 0) { //有通话时长 说明电话打通 turnOnNum++; 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 new file mode 100644 index 00000000..90ecf513 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/api/RollCallController.java @@ -0,0 +1,62 @@ +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.DoubleCallBackDTO; +import com.baiye.modules.telemarkting.entity.dto.DoubleCallReqDTO; +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 DoubleCallReqDTO doubleCallReq) { + if (ObjectUtil.isEmpty(doubleCallReq)) { + return CommonResponse.createByError(); + } + return rollCallService.rollCallReq(doubleCallReq); + } + + @PostMapping("/roll/cdrUrl") + @ApiOperation("点呼系统回调话单") + public CommonResponse doubleCallBack(@RequestBody String json) { + try { + RollCallBackDTO rollCallBackDTO = JSONUtil.toBean(json, RollCallBackDTO.class); + if (ObjectUtil.isEmpty(rollCallBackDTO) || StrUtil.isEmpty(rollCallBackDTO.getSessionid())) { + return CommonResponse.createByErrorMessage("参数为空"); + } + log.info("=======点呼回调话单: {}", rollCallBackDTO); + 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/dao/DoubleCallRepository.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/AllCallInfoRepository.java similarity index 50% rename from manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/DoubleCallRepository.java rename to manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/AllCallInfoRepository.java index 92c4d2d6..a65b7f07 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/DoubleCallRepository.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/dao/AllCallInfoRepository.java @@ -1,6 +1,6 @@ package com.baiye.modules.telemarkting.dao; -import com.baiye.modules.telemarkting.entity.DoubleCallInfo; +import com.baiye.modules.telemarkting.entity.AllCallInfo; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Modifying; @@ -10,11 +10,11 @@ import org.springframework.stereotype.Repository; import java.util.List; /** - * @author wjt - * @date 2021/12/06 + * @author wujingtao + * @date 2022/02/10 */ @Repository -public interface DoubleCallRepository extends JpaRepository, JpaSpecificationExecutor { +public interface AllCallInfoRepository extends JpaRepository, JpaSpecificationExecutor { /** * 根据id查询 @@ -22,7 +22,7 @@ public interface DoubleCallRepository extends JpaRepository selectAllByTimeAndClueId(String beginTime, String endTime, Long id); + @Query(value = "select * from tb_call_info d where (d.create_time between ?1 and ?2) and d.clue_id = ?3", nativeQuery = true) + List selectAllByTimeAndClueId(String beginTime, String endTime, Long id); @Modifying - @Query(value = "update DoubleCallInfo d set d.status =?1 where d.sessionId = ?2") + @Query(value = "update AllCallInfo d set d.status =?1 where d.sessionId = ?2") void updateByStatus(Integer status, String sessionId); /** @@ -47,7 +47,6 @@ public interface DoubleCallRepository extends JpaRepository findByClueIdAndMemberId(Long clueId, Long memberId, Integer status); - + @Query(value = "select d from AllCallInfo d where d.clueId=?1 and d.memberId=?2 and d.status=?3") + List findByClueIdAndMemberId(Long clueId, Long memberId, Integer status); } diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/AllCallInfo.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/AllCallInfo.java new file mode 100644 index 00000000..f5c830a1 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/AllCallInfo.java @@ -0,0 +1,73 @@ +package com.baiye.modules.telemarkting.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +/** + * @author wujingtao + * @date 2022/02/10 + * 所有呼叫记录 + */ +@Getter +@Setter +@Entity +@Table(name = "tb_call_info") +@EntityListeners(AuditingEntityListener.class) +public class AllCallInfo implements Serializable { + + private static final long serialVersionUID = -4568384407605608189L; + @Id + @ApiModelProperty(value = "主键id(自动递增)") + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "status") + @ApiModelProperty(value = "状态") + private Integer status; + + @Column(name = "type") + @ApiModelProperty(value = "类型") + private Integer type; + + @Column(name = "session_id") + @ApiModelProperty(value = "回调的sessionId") + private String sessionId; + @Column(name = "request_id") + @ApiModelProperty(value = "请求的唯一id") + private String requestId; + + @Column(name = "clue_id") + @ApiModelProperty(value = "线索id") + private Long clueId; + + @Column(name = "member_id") + @ApiModelProperty(value = "所属人id") + private Long memberId; + + @LastModifiedDate + @Column(name = "create_time") + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @Column(name = "duration") + @ApiModelProperty(value = "通话时长") + private Integer duration = 0; + + + @Column(name = "record_flag") + @ApiModelProperty(value = "该字段用于录音标识 0:未有 1:有") + private Integer recordFlag; + + @Column(name = "record_file_download_url") + @ApiModelProperty(value = "录音下载地址") + private String recordFileDownloadUrl; + +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/dto/RollCallBackDTO.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/dto/RollCallBackDTO.java new file mode 100644 index 00000000..31252f50 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/dto/RollCallBackDTO.java @@ -0,0 +1,30 @@ +package com.baiye.modules.telemarkting.entity.dto; + +import lombok.Data; + +/** + * @author wujingtao + * @date 2022/02/10 + */ +@Data +public class RollCallBackDTO { + private String reqid; + private String caller; + private String callee; + private String display_caller; + private String display_callee; + private String sessionid; + private String duration; + private String record_file_url; + private String caller_start_time; + private String caller_ring_time; + private String caller_answer_time; + private String callee_start_time; + private String callee_ring_time; + private String callee_answer_time; + private String hangup_time; + private String hangup_reason; + private String extval1; + private String extval2; + private String extval3; +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/dto/RollCallSystemDTO.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/dto/RollCallSystemDTO.java new file mode 100644 index 00000000..45abedd9 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/entity/dto/RollCallSystemDTO.java @@ -0,0 +1,21 @@ +package com.baiye.modules.telemarkting.entity.dto; + +import lombok.Data; + +/** + * @author wujingtao + * @date 2022/02/10 + */ +@Data +public class RollCallSystemDTO { + private String sig; + private String appid; + private String req_id; + private String caller; + private String callee; + private String display_caller; + private String display_callee; + private String is_record; + private String transfer_tel; + private String cdr_url; +} 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 new file mode 100644 index 00000000..675d94c7 --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/RollCallService.java @@ -0,0 +1,27 @@ +package com.baiye.modules.telemarkting.service; + +import com.baiye.http.CommonResponse; +import com.baiye.modules.telemarkting.entity.dto.DoubleCallReqDTO; +import com.baiye.modules.telemarkting.entity.dto.RollCallBackDTO; + +/** + * @author wujingtao + * @date 2022/02/10 + * 点呼 + */ +public interface RollCallService { + /** + * 点呼请求 + * + * @param doubleCallReq + * @return + */ + CommonResponse rollCallReq(DoubleCallReqDTO doubleCallReq); + + /** + * 电呼回调 + * + * @param rollCallBackDTO + */ + void rollCallBack(RollCallBackDTO rollCallBackDTO); +} diff --git a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/DoubleCallServiceImpl.java b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/DoubleCallServiceImpl.java index e36b962a..5a030867 100644 --- a/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/DoubleCallServiceImpl.java +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/DoubleCallServiceImpl.java @@ -10,16 +10,16 @@ import com.baiye.feign.SourceClueClient; import com.baiye.http.CommonResponse; 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.DoubleCallRepository; +import com.baiye.modules.telemarkting.entity.AllCallInfo; import com.baiye.modules.telemarkting.entity.CallClueInfo; -import com.baiye.modules.telemarkting.entity.DoubleCallInfo; import com.baiye.modules.telemarkting.entity.dto.DoubleCallBackDTO; import com.baiye.modules.telemarkting.entity.dto.DoubleCallBackStatusDTO; import com.baiye.modules.telemarkting.entity.dto.DoubleCallReqDTO; import com.baiye.modules.telemarkting.entity.dto.DoubleCallStopDTO; import com.baiye.modules.telemarkting.entity.vo.CallRecordsVO; -import com.baiye.modules.telemarkting.httpRequest.CallReq; +import com.baiye.modules.telemarkting.httpRequest.DoubleCallReq; import com.baiye.modules.telemarkting.service.DoubleCallService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -39,9 +39,9 @@ import java.util.Objects; @Slf4j public class DoubleCallServiceImpl implements DoubleCallService { @Resource - private CallReq callReq; + private DoubleCallReq doubleCallReq; @Resource - private DoubleCallRepository doubleCallRepository; + private AllCallInfoRepository allCallInfoRepository; @Resource private CallClueRepository callClueRepository; @Resource @@ -56,16 +56,23 @@ public class DoubleCallServiceImpl implements DoubleCallService { return CommonResponse.createByErrorMessage("未获取到号码"); } doubleCallReq.setTelB(body.getNid()); - String sessionId = callReq.startReq(doubleCallReq); + String sessionId = this.doubleCallReq.startReq(doubleCallReq); log.info("=============================sessionId {}", sessionId); if (StrUtil.isNotBlank(sessionId)) { - DoubleCallInfo doubleCallInfo = new DoubleCallInfo(); - doubleCallInfo.setSessionId(sessionId); - doubleCallInfo.setRequestId(requestId); - doubleCallInfo.setClueId(Long.parseLong(doubleCallReq.getUserData())); - doubleCallInfo.setMemberId(doubleCallReq.getMemberId()); - doubleCallInfo.setStatus(DefaultNumberConstants.ONE_NUMBER); +// DoubleCallInfo doubleCallInfo = new DoubleCallInfo(); +// doubleCallInfo.setSessionId(sessionId); +// doubleCallInfo.setRequestId(requestId); +// doubleCallInfo.setClueId(Long.parseLong(doubleCallReq.getUserData())); +// doubleCallInfo.setMemberId(doubleCallReq.getMemberId()); +// doubleCallInfo.setStatus(DefaultNumberConstants.ONE_NUMBER); + AllCallInfo allCallInfo = new AllCallInfo(); + allCallInfo.setSessionId(sessionId); + allCallInfo.setRequestId(requestId); + allCallInfo.setClueId(Long.parseLong(doubleCallReq.getUserData())); + allCallInfo.setMemberId(doubleCallReq.getMemberId()); + allCallInfo.setStatus(DefaultNumberConstants.ONE_NUMBER); + allCallInfo.setType(DefaultNumberConstants.ONE_NUMBER); CallClueInfo clueInfo = new CallClueInfo(); clueInfo.setClueId(Long.parseLong(doubleCallReq.getUserData())); @@ -74,7 +81,7 @@ public class DoubleCallServiceImpl implements DoubleCallService { clueInfo.setStatus(DefaultNumberConstants.ONE_NUMBER); clueInfo.setTaskId(doubleCallReq.getTaskId()); - doubleCallRepository.save(doubleCallInfo); + allCallInfoRepository.save(allCallInfo); callClueRepository.save(clueInfo); } else { return CommonResponse.createByError(); @@ -85,10 +92,14 @@ public class DoubleCallServiceImpl implements DoubleCallService { @Override public void doubleCallBack(DoubleCallBackDTO doubleCallBack) { String sessionId = doubleCallBack.getSessionId(); - DoubleCallInfo doubleCallInfo = doubleCallRepository.findBySessionId(sessionId); - if (ObjectUtil.isNotEmpty(doubleCallInfo)) { - BeanUtil.copyProperties(doubleCallBack, doubleCallInfo); - doubleCallRepository.save(doubleCallInfo); + AllCallInfo allCallInfo = allCallInfoRepository.findBySessionId(sessionId); + if (ObjectUtil.isNotEmpty(allCallInfo)) { +// BeanUtil.copyProperties(doubleCallBack, doubleCallInfo); +// doubleCallRepository.save(doubleCallInfo); + allCallInfo.setDuration(doubleCallBack.getDuration()); + allCallInfo.setRecordFlag(doubleCallBack.getRecordFlag()); + allCallInfo.setRecordFileDownloadUrl(doubleCallBack.getRecordFileDownloadUrl()); + allCallInfoRepository.save(allCallInfo); } } @@ -102,13 +113,13 @@ public class DoubleCallServiceImpl implements DoubleCallService { if (CallStatusEnum.ANSWER.getDescription().equals(flag)) { int status = CallStatusEnum.ANSWER.getValue(); callClueRepository.updateByStatus(status, userDate); - doubleCallRepository.updateByStatus(status, sessionId); + allCallInfoRepository.updateByStatus(status, sessionId); } } @Override public CommonResponse doubleCallStop(DoubleCallStopDTO doubleCallStopDTO) { - if (callReq.stopReq(doubleCallStopDTO)) { + if (doubleCallReq.stopReq(doubleCallStopDTO)) { return CommonResponse.createBySuccess(); } return CommonResponse.createByError(); @@ -120,10 +131,10 @@ public class DoubleCallServiceImpl implements DoubleCallService { log.error("参数不能为空clueId:{} ,memberId:{}", clueId, memberId); return CommonResponse.createByErrorMessage("参数不能为空"); } - List calls = doubleCallRepository.findByClueIdAndMemberId(clueId, memberId, DefaultNumberConstants.TWO_NUMBER); + List calls = allCallInfoRepository.findByClueIdAndMemberId(clueId, memberId, DefaultNumberConstants.TWO_NUMBER); List list = new ArrayList<>(); if (CollUtil.isNotEmpty(calls)) { - for (DoubleCallInfo info : calls) { + for (AllCallInfo info : calls) { CallRecordsVO v = new CallRecordsVO(); BeanUtil.copyProperties(info, v); list.add(v); 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 new file mode 100644 index 00000000..46f395aa --- /dev/null +++ b/manage/ad-platform-management/src/main/java/com/baiye/modules/telemarkting/service/impl/RollCallServiceImpl.java @@ -0,0 +1,97 @@ +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.entity.AllCallInfo; +import com.baiye.modules.telemarkting.entity.CallClueInfo; +import com.baiye.modules.telemarkting.entity.dto.DoubleCallReqDTO; +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; + + @Override + public CommonResponse rollCallReq(DoubleCallReqDTO doubleCallReq) { + String requestId = RandomUtil.randomString(10); + doubleCallReq.setRequestId(requestId); +// Clue body = sourceClueClient.queryDetails(Long.parseLong(doubleCallReq.getUserData())).getBody(); +// if (ObjectUtil.isNull(body) || StrUtil.isEmpty(body.getNid())) { +// return CommonResponse.createByErrorMessage("未获取到号码"); +// } +// doubleCallReq.setTelB(body.getNid()); + doubleCallReq.setTelB("13003658692"); + String sessionId = rollCallReq.startReq(doubleCallReq); + log.info("=============================sessionId {}", sessionId); + if (StrUtil.isNotBlank(sessionId)) { + AllCallInfo allCallInfo = new AllCallInfo(); + allCallInfo.setSessionId(sessionId); + allCallInfo.setRequestId(requestId); + allCallInfo.setClueId(Long.parseLong(doubleCallReq.getUserData())); + allCallInfo.setMemberId(doubleCallReq.getMemberId()); + allCallInfo.setStatus(DefaultNumberConstants.ONE_NUMBER); + allCallInfo.setType(DefaultNumberConstants.ONE_NUMBER); + allCallInfo.setRecordFlag(DefaultNumberConstants.ZERO_NUMBER); + + CallClueInfo clueInfo = new CallClueInfo(); + clueInfo.setClueId(Long.parseLong(doubleCallReq.getUserData())); + clueInfo.setTeamId(doubleCallReq.getTeamId()); + clueInfo.setMemberId(doubleCallReq.getMemberId()); + clueInfo.setStatus(DefaultNumberConstants.ONE_NUMBER); + clueInfo.setTaskId(doubleCallReq.getTaskId()); + + allCallInfoRepository.save(allCallInfo); + callClueRepository.save(clueInfo); + } else { + return CommonResponse.createByError(); + } + return CommonResponse.createBySuccess(sessionId); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void rollCallBack(RollCallBackDTO rollCallBackDTO) { + String sessionId = rollCallBackDTO.getSessionid(); + + AllCallInfo allCallInfo = allCallInfoRepository.findBySessionId(sessionId); + 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); + } + } +}