获取sip

master
wjt 1 year ago
parent cffcb68e93
commit b33c5fdd1e

@ -1,9 +1,7 @@
package com.baiye.modules.telemarkting.api; package com.baiye.modules.telemarkting.api;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baiye.constant.DefaultNumberConstants; import com.baiye.constant.DefaultNumberConstants;
@ -17,7 +15,6 @@ import com.baiye.modules.platform.service.OrganizeService;
import com.baiye.modules.system.service.UserService; import com.baiye.modules.system.service.UserService;
import com.baiye.modules.telemarkting.entity.dto.*; import com.baiye.modules.telemarkting.entity.dto.*;
import com.baiye.modules.telemarkting.service.TelephoneCallService; import com.baiye.modules.telemarkting.service.TelephoneCallService;
import com.baiye.util.RedisUtils;
import com.baiye.util.SecurityUtils; import com.baiye.util.SecurityUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -44,72 +41,54 @@ import java.util.Date;
public class TelephoneCallController { public class TelephoneCallController {
private final TelephoneCallService telephoneCallService; private final TelephoneCallService telephoneCallService;
private final OrganizeService organizeService; private final OrganizeService organizeService;
private final CompanyService companyService; private final CompanyService companyService;
private final UserService userService; private final UserService userService;
private final RedisUtils redisUtils;
@PostMapping("/telephone/req") @PostMapping("/telephone/req")
@ApiOperation("拨打电话") @ApiOperation("拨打电话")
public CommonResponse<TelephoneCallStopDTO> doubleCallReq(@Validated @RequestBody TelephoneCallReqDTO telephoneCallReqDTO) { public CommonResponse<TelephoneCallStopDTO> doubleCallReq(@Validated @RequestBody TelephoneCallReqDTO telephoneCallReqDTO) {
String key = "tele:" + telephoneCallReqDTO.getUserData();
if (redisUtils.get(key) != null) {
return CommonResponse.createByErrorMessage("请一分钟后再拨打此线索");
}
if (ObjectUtil.isEmpty(telephoneCallReqDTO)) {
return CommonResponse.createByError();
}
//判断账号是否到期 //判断账号是否到期
Long currentUserId = SecurityUtils.getCurrentUserId(); Date expirationTime = userService.findExpirationTimeByUserId(SecurityUtils.getCurrentUserId());
Date expirationTime = userService.findExpirationTimeByUserId(currentUserId);
log.info("============== the expirationTime as {} =============", expirationTime);
if (ObjectUtil.isNull(expirationTime) if (ObjectUtil.isNull(expirationTime)
|| DateUtil.compare(expirationTime, DateUtil.date()) < DefaultNumberConstants.ZERO_NUMBER) { || DateUtil.compare(expirationTime, DateUtil.date()) < DefaultNumberConstants.ZERO_NUMBER) {
return CommonResponse.createByErrorMessage("您的账号已到期,请续费后使用"); return CommonResponse.createByErrorMessage("您的账号已到期,请续费后使用");
} }
Long companyId = SecurityUtils.getCompanyId(); Long companyId = SecurityUtils.getCompanyId();
if (companyId != null) { Organize organize;
Organize organize; if (telephoneCallReqDTO.getTeamId() == null) {
if (telephoneCallReqDTO.getTeamId() == null) { organize = organizeService.getOrganizeByUserId(telephoneCallReqDTO.getMemberId());
organize = organizeService.getOrganizeByUserId(telephoneCallReqDTO.getMemberId()); telephoneCallReqDTO.setTeamId(organize.getId());
telephoneCallReqDTO.setTeamId(organize.getId()); } else {
} else { organize = organizeService.findByOrganizeId(telephoneCallReqDTO.getTeamId());
organize = organizeService.findByOrganizeId(telephoneCallReqDTO.getTeamId()); }
} Company company = companyService.findById(companyId);
Company byId = companyService.findById(companyId); if (ObjectUtil.isNull(organize) || ObjectUtil.isNull(company)) {
if (organize != null && byId != null) { return CommonResponse.createByErrorMessage("缺失小组信息或公司信息");
//TODO 检查余额 }
if (byId.getUserBalance() == null || byId.getUserBalance() <= 0) { if (company.getUserBalance() == null || company.getUserBalance() <= 0) {
return CommonResponse.createByErrorMessage("余额不足,请充值后使用"); return CommonResponse.createByErrorMessage("余额不足,请充值后使用");
} }
if (organize.getCallMode() != null) { if (organize.getCallMode() == null) {
switch (organize.getCallMode()) { return CommonResponse.createByErrorMessage("请指定呼叫方式后使用");
case DefaultNumberConstants.ZERO_NUMBER: }
telephoneCallReqDTO.setCompanyName(byId.getCompanyName().trim()); //呼叫方式0:双呼 1:点呼 2:AXB
return telephoneCallService.doubleCallReq(telephoneCallReqDTO, companyId); switch (organize.getCallMode()) {
case DefaultNumberConstants.TWO_NUMBER: case DefaultNumberConstants.ZERO_NUMBER:
if (StringUtils.isBlank(byId.getXGroup()) || StringUtils.isBlank(byId.getTelX())) { telephoneCallReqDTO.setCompanyName(company.getCompanyName().trim());
throw new BadRequestException(ResponseCode.AXB_CONFIGURATION_ERROR.getDesc()); return telephoneCallService.doubleCallReq(telephoneCallReqDTO, companyId);
} case DefaultNumberConstants.TWO_NUMBER:
telephoneCallReqDTO.setTelX(byId.getTelX()); if (StringUtils.isBlank(company.getXGroup()) || StringUtils.isBlank(company.getTelX())) {
telephoneCallReqDTO.setXGroup(byId.getXGroup()); throw new BadRequestException(ResponseCode.AXB_CONFIGURATION_ERROR.getDesc());
return telephoneCallService.axbDialNumber(telephoneCallReqDTO, companyId);
case DefaultNumberConstants.ONE_NUMBER:
return telephoneCallService.rollCallReq(telephoneCallReqDTO, companyId);
default:
return CommonResponse.createByErrorMessage("未配置呼叫");
}
} }
} telephoneCallReqDTO.setTelX(company.getTelX());
telephoneCallReqDTO.setXGroup(company.getXGroup());
return telephoneCallService.axbDialNumber(telephoneCallReqDTO, companyId);
case DefaultNumberConstants.ONE_NUMBER:
return telephoneCallService.rollCallReq(telephoneCallReqDTO, companyId);
default:
return CommonResponse.createByErrorMessage("未配置呼叫");
} }
redisUtils.set(key, RandomUtil.randomString(4), 60);
return CommonResponse.createByError();
} }
@PostMapping("/back/cdrUrl") @PostMapping("/back/cdrUrl")
@ -168,11 +147,9 @@ public class TelephoneCallController {
if (ObjectUtil.isEmpty(rollCallBackDTO) || StrUtil.isEmpty(rollCallBackDTO.getSessionid())) { if (ObjectUtil.isEmpty(rollCallBackDTO) || StrUtil.isEmpty(rollCallBackDTO.getSessionid())) {
return CommonResponse.createByErrorMessage("参数为空"); return CommonResponse.createByErrorMessage("参数为空");
} }
log.info("点呼回调:{}", rollCallBackDTO);
telephoneCallService.rollCallBack(rollCallBackDTO); telephoneCallService.rollCallBack(rollCallBackDTO);
} catch (Exception e) { } catch (Exception e) {
log.error("点呼回调话单错误 参数 {}", json); log.error("点呼回调话单错误 参数 {},错误:{}", json, e.getMessage());
log.error("点呼回调话单错误,数据解析错误 {}", e.getMessage());
return CommonResponse.createByError(); return CommonResponse.createByError();
} }
return CommonResponse.createBySuccess(); return CommonResponse.createBySuccess();

@ -42,7 +42,7 @@ public interface ExtensionNumberRepository extends JpaRepository<ExtensionNumber
* @param memberId * @param memberId
* @return * @return
*/ */
@Query(value = "select n.*from tb_extension_number n " + @Query(value = "select n.* from tb_extension_number n " +
"left join tb_extension_user u on n.number = u.number " + "left join tb_extension_user u on n.number = u.number " +
"where u.member_id = ?1 ", nativeQuery = true) "where u.member_id = ?1 ", nativeQuery = true)
ExtensionNumber selectByMemberId(Long memberId); ExtensionNumber selectByMemberId(Long memberId);

@ -0,0 +1,46 @@
package com.baiye.modules.telemarkting.httpRequest;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.exception.BadRequestException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* @author wjt
* @date 2023/3/31
*/
@Slf4j
@Component
public class NumberSipReq {
private static final String REQUEST_ID = "test";
private static final String COMPANY_NAME = "杭州大坝科技";
private static final String URL = "https://ax.hzdaba.cn/v2/Accounts/dbby_hangzhoubaiyehl/Ex/getExtension";
public String req(String number) {
Map<String, String> map = new HashMap<>(3);
map.put("requestId", REQUEST_ID);
map.put("company_name", COMPANY_NAME);
map.put("extension_number", number);
HttpResponse httpResponse = sendReq(JSONUtil.toJsonStr(map));
JSONObject jsonObject = JSONUtil.parseObj(httpResponse.body());
if (String.valueOf(DefaultNumberConstants.ZERO_NUMBER).equals(jsonObject.getStr("result"))) {
return jsonObject.getStr("password");
} else {
log.error("请求分机号sip失败,{}", jsonObject.getStr("reason"));
throw new BadRequestException("导入分机号失败");
}
}
private HttpResponse sendReq(String json) {
return HttpRequest.post(URL).body(json).execute();
}
}

@ -60,7 +60,7 @@ public class RollCallReq {
rollCallSystemDTO.setCdr_url(cdrUrl); rollCallSystemDTO.setCdr_url(cdrUrl);
rollCallSystemDTO.setDisplay_callee(String.valueOf(doubleCallReq.getDisplay())); rollCallSystemDTO.setDisplay_callee(String.valueOf(doubleCallReq.getDisplay()));
rollCallSystemDTO.setDisplay_caller(String.valueOf(doubleCallReq.getDisplay())); rollCallSystemDTO.setDisplay_caller(String.valueOf(doubleCallReq.getDisplay()));
log.info("点呼请求对象{}", BeanUtil.beanToMap(rollCallSystemDTO)); log.info("点呼请求参数{}", BeanUtil.beanToMap(rollCallSystemDTO));
//设置重试机制 //设置重试机制
int count = 0; int count = 0;
@ -68,7 +68,6 @@ public class RollCallReq {
while (count <= flag) { while (count <= flag) {
try { try {
String httpResponse = sendCallReq(BeanUtil.beanToMap(rollCallSystemDTO), reqUrl, authorization); String httpResponse = sendCallReq(BeanUtil.beanToMap(rollCallSystemDTO), reqUrl, authorization);
log.info("点呼返回值为 {}", httpResponse);
RollCallResponse doubleCallResponse = JSONUtil.toBean(httpResponse, RollCallResponse.class); RollCallResponse doubleCallResponse = JSONUtil.toBean(httpResponse, RollCallResponse.class);
if (String.valueOf if (String.valueOf
(DefaultNumberConstants.ZERO_NUMBER) (DefaultNumberConstants.ZERO_NUMBER)
@ -98,13 +97,12 @@ public class RollCallReq {
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
json.putOpt("callid", telephoneCallStopDTO.getSessionid()); json.putOpt("callid", telephoneCallStopDTO.getSessionid());
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.putOpt("req_id",telephoneCallStopDTO.getCallId()); jsonObject.putOpt("req_id", telephoneCallStopDTO.getCallId());
jsonObject.putOpt("type", "hangup"); jsonObject.putOpt("type", "hangup");
jsonObject.putOpt("bsname", "aibot"); jsonObject.putOpt("bsname", "aibot");
jsonObject.putOpt("body", json); jsonObject.putOpt("body", json);
HttpResponse httpResponse = HttpRequest.post(stopUrl).body(JSONUtil.toJsonPrettyStr(jsonObject)).execute(); HttpResponse httpResponse = HttpRequest.post(stopUrl).body(JSONUtil.toJsonPrettyStr(jsonObject)).execute();
if (httpResponse.isOk()) { if (httpResponse.isOk()) {
log.info("请求挂断成功,返回值:{}", httpResponse.body());
return Boolean.TRUE; return Boolean.TRUE;
} else { } else {
count++; count++;

@ -18,6 +18,7 @@ import com.baiye.modules.telemarkting.dao.ExtensionUserRepository;
import com.baiye.modules.telemarkting.entity.ExtensionDisplay; import com.baiye.modules.telemarkting.entity.ExtensionDisplay;
import com.baiye.modules.telemarkting.entity.ExtensionNumber; import com.baiye.modules.telemarkting.entity.ExtensionNumber;
import com.baiye.modules.telemarkting.entity.ExtensionUser; import com.baiye.modules.telemarkting.entity.ExtensionUser;
import com.baiye.modules.telemarkting.httpRequest.NumberSipReq;
import com.baiye.modules.telemarkting.service.ExtensionNumberService; import com.baiye.modules.telemarkting.service.ExtensionNumberService;
import com.baiye.util.SecurityUtils; import com.baiye.util.SecurityUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -48,6 +49,8 @@ public class ExtensionNumberServiceImpl implements ExtensionNumberService {
private UserRepository userRepository; private UserRepository userRepository;
@Resource @Resource
private OrganizeRepository organizeRepository; private OrganizeRepository organizeRepository;
@Resource
private NumberSipReq numberSipReq;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -92,6 +95,8 @@ public class ExtensionNumberServiceImpl implements ExtensionNumberService {
ExtensionNumber extensionNumber = new ExtensionNumber(); ExtensionNumber extensionNumber = new ExtensionNumber();
extensionNumber.setNumber(Integer.valueOf(number)); extensionNumber.setNumber(Integer.valueOf(number));
extensionNumber.setCompanyId(companyId); extensionNumber.setCompanyId(companyId);
String sip = numberSipReq.req(number);
extensionNumber.setSip(sip);
list.add(extensionNumber); list.add(extensionNumber);
numbers.add(Integer.valueOf(number)); numbers.add(Integer.valueOf(number));
} }
@ -186,7 +191,9 @@ public class ExtensionNumberServiceImpl implements ExtensionNumberService {
extensionUserRepository.deleteByMemberId(userId); extensionUserRepository.deleteByMemberId(userId);
} else { } else {
int i = extensionUserRepository.deleteByMemberId(replaceUserId); int i = extensionUserRepository.deleteByMemberId(replaceUserId);
if (i > 0) extensionNumberRepository.updateExtensionNumber(0, replaceUserId); if (i > 0) {
extensionNumberRepository.updateExtensionNumber(0, replaceUserId);
}
extensionUserRepository.updateByNumber(userId, replaceUserId); extensionUserRepository.updateByNumber(userId, replaceUserId);
} }
} }
@ -220,7 +227,9 @@ public class ExtensionNumberServiceImpl implements ExtensionNumberService {
extensionNumberRepository.updateStatusById(0, extensionUser.getNumber()); extensionNumberRepository.updateStatusById(0, extensionUser.getNumber());
} }
} else { } else {
if (organize.getCallMode() == 1) this.assignExtensionNum(organizeId, userId); if (organize.getCallMode() == 1) {
this.assignExtensionNum(organizeId, userId);
}
} }
} }
} }

@ -44,7 +44,6 @@ public class TelephoneCallServiceImpl implements TelephoneCallService {
@Resource @Resource
private AxbRequest axbRequest; private AxbRequest axbRequest;
@Resource @Resource
private DoubleCallReq doubleCallReq; private DoubleCallReq doubleCallReq;
@Resource @Resource
@ -56,7 +55,7 @@ public class TelephoneCallServiceImpl implements TelephoneCallService {
@Resource @Resource
private SourceClueClient sourceClueClient; private SourceClueClient sourceClueClient;
@Resource @Resource
private ExtensionNumberRepository extensionNumberRepository; private ExtensionUserRepository extensionUserRepository;
@Resource @Resource
private ExtensionDisplayRepository extensionDisplayRepository; private ExtensionDisplayRepository extensionDisplayRepository;
@Resource @Resource
@ -206,58 +205,71 @@ public class TelephoneCallServiceImpl implements TelephoneCallService {
telephoneCallReqDTO.setRequestId(requestId); telephoneCallReqDTO.setRequestId(requestId);
if (telephoneCallReqDTO.getDisplay() == null || telephoneCallReqDTO.getTelA() == null) { if (telephoneCallReqDTO.getDisplay() == null || telephoneCallReqDTO.getTelA() == null) {
//获取分机号 //获取分机号
//TODO 新需求,外显号多个 Integer number = extensionUserRepository.findNumberByMemberId(telephoneCallReqDTO.getMemberId());
ExtensionNumber extensionNumber = extensionNumberRepository.selectByMemberId(telephoneCallReqDTO.getMemberId()); if (number == null) {
if (extensionNumber == null) { return CommonResponse.createByErrorMessage("未分配分机号");
log.error("未配置分机号");
return CommonResponse.createByErrorMessage("未配置分机号");
} }
ExtensionDisplay extensionDisplay = extensionDisplayRepository.findExtensionDisplayByCompanyId(extensionNumber.getCompanyId()); ExtensionDisplay extensionDisplay = extensionDisplayRepository.findExtensionDisplayByCompanyId(companyId);
if (ObjectUtil.isNull(extensionDisplay)) { if (ObjectUtil.isNull(extensionDisplay)) {
return CommonResponse.createByErrorMessage("未配置去显号"); return CommonResponse.createByErrorMessage("未配置去显号");
} }
telephoneCallReqDTO.setTelA(String.valueOf(extensionNumber.getNumber())); telephoneCallReqDTO.setTelA(String.valueOf(number));
//获取去显号
Long display; Long display;
if (telephoneCallReqDTO.getClueType() == DefaultNumberConstants.THREE_NUMBER) { switch (telephoneCallReqDTO.getClueType()) {
if (extensionDisplay.getDyDisplay() == null) { case DefaultNumberConstants.THREE_NUMBER:
return CommonResponse.createByErrorMessage("未配置抖音去显号"); if (extensionDisplay.getDyDisplay() == null) {
} return CommonResponse.createByErrorMessage("未配置抖音去显号");
display = extensionDisplay.getDyDisplay(); }
} else if (telephoneCallReqDTO.getClueType() == DefaultNumberConstants.FOUR_NUMBER) { display = extensionDisplay.getDyDisplay();
if (extensionDisplay.getDeliveryDisplay() == null) { break;
return CommonResponse.createByErrorMessage("未配置投流去显号"); case DefaultNumberConstants.FOUR_NUMBER:
} if (extensionDisplay.getDeliveryDisplay() == null) {
display = extensionDisplay.getDeliveryDisplay(); return CommonResponse.createByErrorMessage("未配置投流去显号");
} else if (telephoneCallReqDTO.getClueType() == DefaultNumberConstants.FIVE_NUMBER) { }
if (extensionDisplay.getTokerDisplay() == null) { display = extensionDisplay.getDeliveryDisplay();
return CommonResponse.createByErrorMessage("未配置拓客去显号"); break;
} case DefaultNumberConstants.FIVE_NUMBER:
display = extensionDisplay.getTokerDisplay(); if (extensionDisplay.getTokerDisplay() == null) {
} else { return CommonResponse.createByErrorMessage("未配置拓客去显号");
if (extensionDisplay.getDisplay() == null) { }
return CommonResponse.createByErrorMessage("未配置去显号"); display = extensionDisplay.getTokerDisplay();
} break;
display = extensionDisplay.getDisplay(); default:
if (extensionDisplay.getDisplay() == null) {
return CommonResponse.createByErrorMessage("未配置去显号");
}
display = extensionDisplay.getDisplay();
} }
//设置去显号
telephoneCallReqDTO.setDisplay(display); telephoneCallReqDTO.setDisplay(display);
} }
//获取线索号
//获取被叫号
Clue body; Clue body;
try { try {
body = sourceClueClient.queryDetails(Long.parseLong(telephoneCallReqDTO.getUserData())).getBody(); body = sourceClueClient.queryDetails(Long.parseLong(telephoneCallReqDTO.getUserData())).getBody();
} catch (Exception e) { } catch (Exception e) {
log.error("Method 【rollCallReq】query clue error{},time:{} ", e.getMessage(), DateUtil.now()); log.error("获取被叫号错误{},time:{} ", e.getMessage(), DateUtil.now());
throw new BadRequestException("查询线索错误"); throw new BadRequestException("呼叫失败");
} }
if (ObjectUtil.isNull(body) || StrUtil.isEmpty(body.getNid())) { if (ObjectUtil.isNull(body) || StrUtil.isEmpty(body.getNid())) {
log.error("未获取到号码"); log.error("未获取到号码");
return CommonResponse.createByErrorMessage("未获取到号码"); return CommonResponse.createByErrorMessage("未获取到号码");
} }
telephoneCallReqDTO.setTelB("474" + telephoneCallReqDTO.getDisplay() + body.getNid()); telephoneCallReqDTO.setTelB("474" + telephoneCallReqDTO.getDisplay() + body.getNid());
//请求呼叫
String reqId = rollCallReq.startReq(telephoneCallReqDTO); String reqId = rollCallReq.startReq(telephoneCallReqDTO);
//保存呼叫记录
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());
clueInfo.setCompanyId(companyId);
callClueRepository.save(clueInfo);
//保存呼叫详情
AllCallInfo allCallInfo = new AllCallInfo(); AllCallInfo allCallInfo = new AllCallInfo();
allCallInfo.setSessionId(requestId); allCallInfo.setSessionId(requestId);
allCallInfo.setRequestId(requestId); allCallInfo.setRequestId(requestId);
@ -267,16 +279,8 @@ public class TelephoneCallServiceImpl implements TelephoneCallService {
allCallInfo.setStatus(DefaultNumberConstants.ONE_NUMBER); allCallInfo.setStatus(DefaultNumberConstants.ONE_NUMBER);
allCallInfo.setType(DefaultNumberConstants.TWO_NUMBER); allCallInfo.setType(DefaultNumberConstants.TWO_NUMBER);
allCallInfo.setRecordFlag(DefaultNumberConstants.ZERO_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());
clueInfo.setCompanyId(companyId);
allCallInfoRepository.save(allCallInfo); allCallInfoRepository.save(allCallInfo);
callClueRepository.save(clueInfo);
TelephoneCallStopDTO telephoneCallStopDTO = new TelephoneCallStopDTO(); TelephoneCallStopDTO telephoneCallStopDTO = new TelephoneCallStopDTO();
telephoneCallStopDTO.setSessionid(reqId); telephoneCallStopDTO.setSessionid(reqId);
telephoneCallStopDTO.setCallId(requestId); telephoneCallStopDTO.setCallId(requestId);
@ -303,20 +307,21 @@ public class TelephoneCallServiceImpl implements TelephoneCallService {
String otherLeg = rollCallBackDTO.getOtherLeg(); String otherLeg = rollCallBackDTO.getOtherLeg();
AllCallInfo allCallInfo = allCallInfoRepository.findBySessionId(otherLeg); AllCallInfo allCallInfo = allCallInfoRepository.findBySessionId(otherLeg);
// int status = DefaultNumberConstants.ONE_NUMBER;
if (ObjectUtil.isNotEmpty(allCallInfo)) { if (ObjectUtil.isNotEmpty(allCallInfo)) {
//相同说明是分机号的回调 //相同说明是分机号的回调
if (sessionId.equals(otherLeg) && StrUtil.isNotBlank(rollCallBackDTO.getRecord_file_url())) { if (sessionId.equals(otherLeg) && StrUtil.isNotBlank(rollCallBackDTO.getRecord_file_url())) {
log.info("分机回调-点呼sessionId:{},详情:{}", sessionId, rollCallBackDTO);
allCallInfoRepository.updateByRecord(DefaultNumberConstants.ONE_NUMBER, rollCallBackDTO.getRecord_file_url(), allCallInfo.getId()); allCallInfoRepository.updateByRecord(DefaultNumberConstants.ONE_NUMBER, rollCallBackDTO.getRecord_file_url(), allCallInfo.getId());
} else { } else {
log.info("被叫回调-点呼sessionId:{},详情:{}", sessionId, rollCallBackDTO);
//拨打线索号的回调 //拨打线索号的回调
if (StrUtil.isNotBlank(rollCallBackDTO.getCallee_answer_time())) { if (StrUtil.isNotBlank(rollCallBackDTO.getCallee_answer_time())) {
//表示接通 //表示接通,更新线索状态
callClueRepository.updateByStatus(DefaultNumberConstants.TWO_NUMBER, allCallInfo.getClueId()); callClueRepository.updateByStatus(DefaultNumberConstants.TWO_NUMBER, allCallInfo.getClueId());
allCallInfoRepository.updateByDurationAndStatus(DefaultNumberConstants.TWO_NUMBER, Integer.valueOf(rollCallBackDTO.getDuration()), allCallInfo.getId()); allCallInfoRepository.updateByDurationAndStatus(DefaultNumberConstants.TWO_NUMBER, Integer.valueOf(rollCallBackDTO.getDuration()), allCallInfo.getId());
//更新资源通话状态 //更新资源通话状态
CompletableFuture.runAsync(() -> updateSourceCallStatus(allCallInfo.getClueId(), DefaultNumberConstants.TWO_NUMBER, allCallInfo.getClueType())); CompletableFuture.runAsync(() -> updateSourceCallStatus(allCallInfo.getClueId(), DefaultNumberConstants.TWO_NUMBER, allCallInfo.getClueType()));
//TODO 实时扣除话费 //实时扣除话费
callCostCount(allCallInfo.getMemberId(), allCallInfo.getClueId(), allCallInfo.getClueType(), Integer.valueOf(rollCallBackDTO.getDuration()), 2); callCostCount(allCallInfo.getMemberId(), allCallInfo.getClueId(), allCallInfo.getClueType(), Integer.valueOf(rollCallBackDTO.getDuration()), 2);
} else { } else {
//更新资源通话状态 //更新资源通话状态

Loading…
Cancel
Save