|
|
@@ -11,13 +11,17 @@ import com.fs.aicall.domain.result.CalltaskcreateaiCustomizeResult;
|
|
|
import com.fs.aicall.service.AiCallService;
|
|
|
import com.fs.common.annotation.DataScope;
|
|
|
import com.fs.common.constant.Constants;
|
|
|
+import com.fs.common.core.domain.R;
|
|
|
import com.fs.common.core.redis.RedisCacheT;
|
|
|
import com.fs.common.exception.base.BaseException;
|
|
|
+import com.fs.common.service.impl.SmsServiceImpl;
|
|
|
import com.fs.common.utils.*;
|
|
|
import com.fs.company.domain.*;
|
|
|
import com.fs.company.mapper.CompanyVoiceRoboticCalleesMapper;
|
|
|
import com.fs.company.mapper.CompanyVoiceRoboticMapper;
|
|
|
import com.fs.company.mapper.CompanyVoiceRoboticWxMapper;
|
|
|
+import com.fs.company.mapper.CompanyWxClientMapper;
|
|
|
+import com.fs.company.service.ICompanySmsService;
|
|
|
import com.fs.company.service.ICompanyVoiceRoboticService;
|
|
|
import com.fs.company.service.ICompanyWxAccountService;
|
|
|
import com.fs.company.vo.AddWxClientVo;
|
|
|
@@ -26,10 +30,12 @@ import com.fs.company.vo.RoboticWxAccountVo;
|
|
|
import com.fs.company.vo.RoboticWxVo;
|
|
|
import com.fs.crm.domain.CrmCustomer;
|
|
|
import com.fs.crm.mapper.CrmCustomerMapper;
|
|
|
+import com.fs.crm.param.SmsSendBatchParam;
|
|
|
import com.fs.crm.service.impl.CrmCustomerServiceImpl;
|
|
|
import com.fs.system.mapper.SysDictDataMapper;
|
|
|
import com.fs.system.service.ISysConfigService;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import lombok.Synchronized;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -69,6 +75,10 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
|
|
|
private final SysDictDataMapper sysDictDataMapper;
|
|
|
|
|
|
+ private final SmsServiceImpl smsService;
|
|
|
+ private final CompanySmsTempServiceImpl smsTempService;
|
|
|
+ private final ICompanySmsService companySmsService;
|
|
|
+ private final CompanyWxClientMapper companyWxClientMapper;
|
|
|
/**
|
|
|
* 查询机器人外呼任务
|
|
|
*
|
|
|
@@ -253,32 +263,79 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Synchronized
|
|
|
public void sendMsgOne(Long roboticId,Long callerId){
|
|
|
try{
|
|
|
log.info("开始发送短信*************");
|
|
|
CompanyVoiceRobotic robotic = companyVoiceRoboticMapper.selectById(roboticId);
|
|
|
CompanyVoiceRoboticCallees callees = companyVoiceRoboticCalleesMapper.selectById(callerId);
|
|
|
+ CompanyWxClient wxClient = companyWxClientMapper.selectOneByRoboticIdAndUserId(roboticId,callees.getUserId());
|
|
|
+ CompanyWxAccount wxAccount = companyWxAccountService.selectCompanyWxAccountById(wxClient.getAccountId());
|
|
|
+ CompanySmsTemp temp= smsTempService.selectCompanySmsTempById(Long.valueOf(robotic.getSmsTempId()));
|
|
|
+ if(temp!=null&&temp.getStatus().equals(1)&&temp.getIsAudit().equals(1)){
|
|
|
+ CompanySms sms=companySmsService.selectCompanySmsByCompanyId(robotic.getCompanyId());
|
|
|
+ if(sms!=null){
|
|
|
+ if(sms.getRemainSmsCount()>0){
|
|
|
+ SmsSendBatchParam smsSendBatchParam=new SmsSendBatchParam();
|
|
|
+ smsSendBatchParam.setSmsType(temp.getTempType());
|
|
|
+ smsSendBatchParam.setCompanyId(robotic.getCompanyId());
|
|
|
+ smsSendBatchParam.setCompanyUserId(robotic.getCompanyUserId());
|
|
|
+ smsSendBatchParam.setTempCode(temp.getTempCode());
|
|
|
+ Long[] ids=new Long[1];
|
|
|
+ ids[0]=callees.getUserId();
|
|
|
+ smsSendBatchParam.setCustomerIds(ids);
|
|
|
+ smsSendBatchParam.setContent(temp.getContent());
|
|
|
+ smsSendBatchParam.setSenderName(wxAccount.getWxNickName());
|
|
|
+ sendMsgBatch(temp,smsSendBatchParam);
|
|
|
+ //如果选择的是名片短链接模版 update by qxj 2023年05月26日10:45:28
|
|
|
+// if(StringUtils.isNotEmpty(param.getCardUrl())){
|
|
|
+// smsSendBatchParam.setCardUrl(param.getCardUrl());
|
|
|
+// }
|
|
|
+// batchSmsOp(temp,smsSendBatchParam);
|
|
|
+// return R.ok("短信提交成功,正在发送中...");
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ log.error("剩余短信数量不足,请充值:task:{},companyId:{}",roboticId,robotic.getCompanyId());
|
|
|
+ throw new RuntimeException("剩余短信数量不足,请充值");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ log.error("请充值:task:{},companyId:{}",roboticId,robotic.getCompanyId());
|
|
|
+ throw new RuntimeException("请充值");
|
|
|
+ }
|
|
|
|
|
|
- //todo 发送短信逻辑
|
|
|
-
|
|
|
-
|
|
|
- if(StringUtils.isNotBlank(callees.getRunTaskFlow())){
|
|
|
- callees.setRunTaskFlow(callees.getRunTaskFlow() + "," + Constants.SEND_MSG);
|
|
|
- }else{
|
|
|
- callees.setRunTaskFlow(Constants.SEND_MSG);
|
|
|
+ if(StringUtils.isNotBlank(callees.getRunTaskFlow())){
|
|
|
+ callees.setRunTaskFlow(callees.getRunTaskFlow() + "," + Constants.SEND_MSG);
|
|
|
+ callees.setIsSendMsg(1);
|
|
|
+ }else{
|
|
|
+ callees.setRunTaskFlow(Constants.SEND_MSG);
|
|
|
+ }
|
|
|
+ companyVoiceRoboticCalleesMapper.updateById(callees);
|
|
|
+ if(StringUtils.isNotBlank(robotic.getRunTaskFlow())){
|
|
|
+ robotic.setRunTaskFlow(robotic.getRunTaskFlow() + "," + Constants.SEND_MSG);
|
|
|
+ }else{
|
|
|
+ robotic.setRunTaskFlow(Constants.SEND_MSG);
|
|
|
+ }
|
|
|
+ companyVoiceRoboticMapper.updateById(robotic);
|
|
|
+ } else{
|
|
|
+ log.error("模板未审核:task:{},smsTemp:{}",roboticId,temp);
|
|
|
+ throw new RuntimeException("模板未审核");
|
|
|
}
|
|
|
- companyVoiceRoboticCalleesMapper.updateById(callees);
|
|
|
|
|
|
- if(StringUtils.isNotBlank(robotic.getRunTaskFlow())){
|
|
|
- robotic.setRunTaskFlow(robotic.getRunTaskFlow() + "," + Constants.SEND_MSG);
|
|
|
- }else{
|
|
|
- robotic.setRunTaskFlow(Constants.SEND_MSG);
|
|
|
- }
|
|
|
- companyVoiceRoboticMapper.updateById(robotic);
|
|
|
}catch(Exception ex){
|
|
|
-
|
|
|
+ log.error("sendMsgOne异常,roboticId:{},callerId :{}\n",roboticId,callerId,ex);
|
|
|
+ throw new RuntimeException(ex);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发送短信
|
|
|
+ * @param temp
|
|
|
+ * @param param
|
|
|
+ */
|
|
|
+ public void sendMsgBatch(CompanySmsTemp temp, SmsSendBatchParam param){
|
|
|
+ smsService.batchSmsOp(temp, param);
|
|
|
+ }
|
|
|
/**
|
|
|
* 修改机器人外呼任务
|
|
|
*
|