增加短信通知和双呼号码解密

master
wujingtao 3 years ago
parent ae7f5f5417
commit 727a52e7a5

@ -92,7 +92,7 @@ public class BaseDoubleCallInfo {
@Column(name = "duration")
@ApiModelProperty(value = "通话时长")
private Integer duration;
private Integer duration = 0;
@Column(name = "fee_duration")
@ApiModelProperty(value = "计费时长(这个不要驼峰)")

@ -2,7 +2,7 @@ package com.baiye.feign;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.model.dto.DistributeResponseDTO;
import com.baiye.model.dto.OrganizeQueryCriteria;
import com.baiye.modules.system.domain.Clue;
import com.baiye.modules.system.service.dto.ClueMiddleTo;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
@ -47,12 +47,8 @@ public interface SourceClueClient {
@PostMapping(API_PREFIX + "/findMemberIdList")
ResponseEntity<Set<Long>> findMemberIdList(@RequestBody ClueMiddleTo clueMiddleTo);
@ApiOperation("查询组员资源总数")
@GetMapping("/source/clue/queryMemberNum")
ResponseEntity<Object> queryMemberNum(@RequestParam("memberId") Long memberId);
@ApiOperation("根据小组id统计小组资源数")
@GetMapping("/source/clue/count")
ResponseEntity<Object> countClueByGroupId(@RequestParam("groupId") Long groupId);
@ApiOperation("查询资源详情")
@GetMapping(API_PREFIX + " / queryDetails")
ResponseEntity<Clue> queryDetails(@RequestParam("clueId") Long clueId);
}

@ -3,6 +3,7 @@ package com.baiye.feign;
import com.baiye.model.dto.ClueQueryCriteria;
import com.baiye.model.dto.DistributeResponseDTO;
import com.baiye.model.dto.OrganizeQueryCriteria;
import com.baiye.modules.system.domain.Clue;
import com.baiye.modules.system.service.dto.ClueMiddleTo;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
@ -45,12 +46,7 @@ public class SourceClueClientFallback implements SourceClueClient {
}
@Override
public ResponseEntity<Object> queryMemberNum(Long memberId) {
return null;
}
@Override
public ResponseEntity<Object> countClueByGroupId(Long groupId) {
public ResponseEntity<Clue> queryDetails(Long clueId) {
return null;
}

@ -466,17 +466,22 @@ public class ReportServiceImpl implements ReportService {
int breatheTotalDuration = 0;
double breatheAverageDuration = 0;
if (CollUtil.isNotEmpty(callClueInfos)) {
//使用数
usrNum = callClueInfos.size();
for (CallClueInfo info : callClueInfos) {
if (info.getStatus() == CallStatusEnum.ANSWER.getValue()) {
turnOnNum++;
//接通时才会有通话时长
long clueId = info.getClueId();
List<DoubleCallInfo> doubleCallInfo = doubleCallRepository.selectAllByTimeAndClueId(begin, end, clueId);
int doubleClueTime = doubleCallInfo.stream().mapToInt(DoubleCallInfo::getDuration).sum();
breatheTotalDuration += doubleClueTime;
} else {
usrNum++;
//接通时才会有通话时长
long clueId = info.getClueId();
List<DoubleCallInfo> doubleCallInfo = doubleCallRepository.selectAllByTimeAndClueId(begin, end, clueId);
//统计通话时长
int doubleClueTime = 0;
if (CollUtil.isNotEmpty(doubleCallInfo)) {
doubleClueTime = doubleCallInfo.stream().mapToInt(DoubleCallInfo::getDuration).sum();
if (doubleClueTime > 0) {
//有通话时长 说明电话打通
turnOnNum++;
}
}
breatheTotalDuration += doubleClueTime;
}
breatheAverageDuration = NumberUtil.div(breatheTotalDuration, callClueInfos.size(), 2);
}
@ -498,7 +503,7 @@ public class ReportServiceImpl implements ReportService {
/**
*
*/
@Cacheable(cacheNames = {"organize", "organize"}, key = "'id:' + #id")
@Cacheable(value = "organize", key = "'organize:' + #p0")
public Organize getOrganize(Long id) {
return organizeRepository.findOrganizeById(id);
}
@ -506,7 +511,7 @@ public class ReportServiceImpl implements ReportService {
/**
*
*/
@Cacheable(cacheNames = {"user", "user"}, key = "'id:' + #id")
@Cacheable(value = "user", key = "'user:' + #p0")
public User getMember(Long id) {
return userRepository.findUserById(id);
}

@ -133,7 +133,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers( "/api/organize/queryAll").permitAll()
.antMatchers( "/api/back/cdrUrl").permitAll()
.antMatchers( "/api/back/status").permitAll()
.antMatchers( "/api/call/record").permitAll()
// 自定义匿名访问所有url放行允许匿名和带Token访问细腻化到每个 Request 类型
// GET
.antMatchers(HttpMethod.GET, anonymousUrls.get(RequestMethodEnum.GET.getType()).toArray(new String[0])).permitAll()

@ -30,7 +30,7 @@ public class DoubleCallBackDTO {
private String callOutAlertingTime;
private String callOutAnswerTime;
private Integer callOutUnaswRsn;
private Integer duration;
private Integer duration = 0;
/**
*
*/

@ -6,8 +6,10 @@ 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.model.enums.CallStatusEnum;
import com.baiye.modules.system.domain.Clue;
import com.baiye.modules.telemarkting.dao.CallClueRepository;
import com.baiye.modules.telemarkting.dao.DoubleCallRepository;
import com.baiye.modules.telemarkting.entity.CallClueInfo;
@ -42,13 +44,21 @@ public class DoubleCallServiceImpl implements DoubleCallService {
private DoubleCallRepository doubleCallRepository;
@Resource
private CallClueRepository callClueRepository;
@Resource
private SourceClueClient sourceClueClient;
@Override
public CommonResponse<Object> doubleCallReq(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.setTelA(body.getNid());
String sessionId = callReq.startReq(doubleCallReq);
log.info("==========sessionId {}", sessionId);
log.info("=============================sessionId {}", sessionId);
if (StrUtil.isNotBlank(sessionId)) {
DoubleCallInfo doubleCallInfo = new DoubleCallInfo();
doubleCallInfo.setSessionId(sessionId);

@ -0,0 +1,55 @@
package com.baiye.util;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.profile.DefaultProfile;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
/**
* @author wujingtao
* @date 2022/01/21
*/
@Slf4j
public class SmsUtil {
@Value("${sms.aliyun.accessKeyId}")
private String accessKeyId;
@Value("${sms.aliyun.accessKeySecret}")
private String accessKeySecret;
@Value("${sms.aliyun.signName}")
private String signName;
@Value("${sms.aliyun.templateCode}")
private String templateCode;
/**
*
*/
public Boolean sendAliYunSms(String phone, String param) {
//设置超时时间-可自行调整
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象
SendSmsRequest request = new SendSmsRequest();
request.setPhoneNumbers(phone);
request.setSignName(signName);
request.setTemplateCode(templateCode);
//json字符串 如:{"code":"XXX"}";
request.setTemplateParam(param);
try {
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
if (sendSmsResponse.getCode() != null && "OK".equals(sendSmsResponse.getCode())) {
return true;
}
} catch (Exception e) {
log.error("短信发送异常 {}", e.getMessage());
e.printStackTrace();
}
return false;
}
}

@ -59,6 +59,7 @@ code:
rsa:
private_key: MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKLhn7fPqFSK9z3Ao4yFFisDO8YV1dOn1I3wpwj1IIu3Z7vkaHyynBf7eF8fo86EQRvnJIo3jVO2jUw5Lor2OYcZVK72oxD5LIULVYI/eXJogzd1C+tJ5IHC7dmTJ37qfjP9VV3mDWlsRusdCoVPE2xUI13H4bPOCE4DyyeldXlFAgMBAAECgYBakWx3D5+AyvipPKl0JDhsWFLvVQrdss+M0Uh/wZWEOsoSfvHejI4hA7It6nDyDzYI5uC5fiQ2bSZqQM1xdXIMmq4F0WM2+ni4Q/bYbaLt9UDGs6GXwHcg3gOTBJoSJq0SZxBpflxbfVOj63ITehTl51q0FvaedxWl63hf6bikQQJBANT3s1usMZmubYxQPLrBeK1mcXG1JxwKDK6n7bJnlBeZy1GCUZ7bwBgr32gRvUXtgqrzT3IyZlld5cUScX601TUCQQDDyxVAPExwbpxD0Ao7CZE9LRYC8YaMQ46NENqaIhnmhMa4vqoTky8t2nLZITmk0EqecTBt/Io+37+X/KCHD+XRAkAraGmIb+qUNndhuCEIt9KPFWheEtxr3KiFGPlb+by3qsNEU9mrFYNr6dVZcvQvQp/1lC5HSnqOEJN6va2gc99ZAkEAnYtF+EAMydNXDgHSmZqjMXSb55Zsy2R4ye2r2KZj7Ocd9/4DYGjoZ58FFs3zUjkAMemmLHouy1TDGAsBKGyUYQJBAJ1io1DxuejCE+sN/bu4Y2S7oQ2Mpfjh7jRYGruDzhdqVnnLxf0spaqJZ5HekQz3uMpkQQGkcN1MZZcRpoWJ7XU=
#配置双呼参数
double:
call:
reqUrl: http://ax.hzdaba.cn/callback/Accounts/dbby_hangzhoubaiyehl/Hw/CallBack
@ -67,3 +68,11 @@ double:
cdrUrl: http://118.178.137.129:8866/api/back/cdrUrl
statusUrl: http://118.178.137.129:8866/api/back/status
stopUrl: http://ax.hzdaba.cn/callback/Accounts/dbby_hangzhoubaiyehl/Hw/CallBackStop
#配置短信参数
sms:
aliyun:
accessKeyId: R7hb84lBwjJQasch
accessKeySecret: 2ngpjkzXBKHPZhVj2yDZSGVX3fXAwT
signName: 百业互联科技
templateCode: SMS_232894146

@ -106,12 +106,6 @@ public class ClueController {
return new ResponseEntity<>(clueService.findMemberIdList(clueMiddle), HttpStatus.OK);
}
@ApiOperation("查询组员资源总数")
@GetMapping("/queryMemberNum")
public ResponseEntity<Object> queryMemberNum(@RequestParam("memberId") Long memberId) {
return new ResponseEntity<>(clueService.queryMemberNum(memberId), HttpStatus.OK);
}
@ApiOperation("导出资源记录")
@GetMapping("/queryRecordList/download")
public void exportRecordList(HttpServletResponse response, ClueRecordCriteria clueRecordCriteria) {
@ -123,10 +117,4 @@ public class ClueController {
public void exportClueList(HttpServletResponse response, ClueQueryCriteria clueQueryCriteria) {
clueService.exportClueList(response, clueQueryCriteria);
}
@ApiOperation("根据小组id统计小组资源数")
@GetMapping("/count")
public ResponseEntity<Object> countClueByGroupId(@RequestParam("groupId") Long groupId) {
return new ResponseEntity<>(clueService.countClueByGroupId(groupId), HttpStatus.OK);
}
}

@ -50,21 +50,6 @@ public interface ClueMiddleRepository extends JpaRepository<ClueMiddle, Long>, J
@Query(value = " update tb_clue_middle set member_id = ?2 where clue_id in ?1 ", nativeQuery = true)
void updateUserIdExceptStatus(List<Long> clueIdList, Long userId);
/**
*
*
* @param memberId
* @return
*/
Long countByMemberId(Long memberId);
/**
*
* @param organizeId
* @return
*/
Integer countByOrganizeId(Long organizeId);
/**
*
*

@ -72,14 +72,6 @@ public interface ClueService {
*/
List<ClueDto> query(ClueQueryCriteria clueQueryCriteria);
/**
*
*
* @param memberId
* @return
*/
Long queryMemberNum(Long memberId);
/**
*
*
@ -124,14 +116,6 @@ public interface ClueService {
* @return
*/
Set<Long> findMemberIdList(ClueMiddle clueMiddle);
/**
*
* @param groupId
* @return
*/
Integer countClueByGroupId(Long groupId);
/**
*
* @param clueId

@ -102,7 +102,7 @@ public class ClueServiceImpl implements ClueService {
if (clueQueryCriteria.getMemberId() != null) {
clueMiddleList = clueMiddleRepository.findByMemberId(clueQueryCriteria.getMemberId());
} else {
clueMiddleList = clueMiddleRepository.findByTaskIdAndOrganizeId(clueQueryCriteria.getTaskId(),clueQueryCriteria.getOrganizeId());
clueMiddleList = clueMiddleRepository.findByTaskIdAndOrganizeId(clueQueryCriteria.getTaskId(), clueQueryCriteria.getOrganizeId());
}
if (clueMiddleList.size() > 0) {
// 所有的资源id
@ -116,7 +116,7 @@ public class ClueServiceImpl implements ClueService {
for (Map<Long, List<Long>> map : maps) {
for (Long userId : map.keySet()) {
List<Long> clueIdList = map.get(userId);
if (clueIdList.size() <= 0){
if (clueIdList.size() <= 0) {
return new ResponseEntity<>(userId, HttpStatus.OK);
}
if (clueQueryCriteria.getMemberId() != null) {
@ -173,14 +173,6 @@ public class ClueServiceImpl implements ClueService {
throw new BadRequestException("查询业务员不能为空");
}
/**
*
*/
@Override
public Long queryMemberNum(Long memberId) {
return clueMiddleRepository.countByMemberId(memberId);
}
/**
*
*/
@ -246,7 +238,7 @@ public class ClueServiceImpl implements ClueService {
@Override
public Set<Long> findMemberIdList(ClueMiddle clueMiddle) {
if (clueMiddle.getTaskId() != null && clueMiddle.getOrganizeId() != null){
if (clueMiddle.getTaskId() != null && clueMiddle.getOrganizeId() != null) {
List<ClueMiddle> clueMiddleList = clueMiddleRepository.findByTaskIdAndOrganizeId(clueMiddle.getTaskId(), clueMiddle.getOrganizeId());
Map<Long, List<ClueMiddle>> collect = clueMiddleList.stream().collect(Collectors.groupingBy(ClueMiddle::getMemberId));
Set<Long> memberIdList = collect.keySet();
@ -255,11 +247,6 @@ public class ClueServiceImpl implements ClueService {
return null;
}
@Override
public Integer countClueByGroupId(Long groupId) {
return clueMiddleRepository.countByOrganizeId(groupId);
}
@Override
public Clue queryDetails(Long clueId) {
return clueRepository.findById(clueId).orElseGet(Clue::new);

Loading…
Cancel
Save