Browse Source

短信/外呼增加黑名单校验

zyy 2 weeks ago
parent
commit
4c2150b1bd

+ 15 - 0
fs-service/src/main/java/com/fs/common/service/impl/SmsServiceImpl.java

@@ -14,10 +14,14 @@ import com.fs.common.vo.SmsNotifyVO;
 import com.fs.common.vo.SmsSendItemVO;
 import com.fs.common.vo.SmsSendVO;
 import com.fs.company.domain.*;
+import com.fs.company.enums.BusinessTypeEnum;
+import com.fs.company.param.CompanyVoiceRoboticCallBlacklistCheckParam;
 import com.fs.company.service.ICompanySmsLogsService;
 import com.fs.company.service.ICompanySmsService;
 import com.fs.company.service.ICompanySmsTempService;
 import com.fs.company.service.ICompanyUserService;
+import com.fs.company.service.impl.CompanyVoiceRoboticCallBlacklistServiceImpl;
+import com.fs.company.vo.CompanyVoiceRoboticCallBlacklistCheckVO;
 import com.fs.crm.domain.CrmCustomer;
 import com.fs.crm.param.SmsSendBatchParam;
 import com.fs.crm.param.SmsSendParam;
@@ -96,6 +100,9 @@ public class SmsServiceImpl implements ISmsService
     @Autowired
     private QwSopSmsLogsMapper qwSopSmsLogsMapper;
 
+    @Autowired
+    private CompanyVoiceRoboticCallBlacklistServiceImpl companyVoiceRoboticCallBlacklistService;
+
     @Override
     public R sendTSms(String mobile, String code) {
 //        try{
@@ -924,6 +931,14 @@ public class SmsServiceImpl implements ISmsService
     @Async
     public void batchSmsOp4AiSend(CompanySmsTemp temp, SmsSendBatchParam param){
         CompanyUser companyUser=companyUserService.selectCompanyUserById(param.getCompanyUserId());
+        CompanyVoiceRoboticCallBlacklistCheckParam companyVoiceRoboticCallBlacklistCheckParam = new CompanyVoiceRoboticCallBlacklistCheckParam();
+        companyVoiceRoboticCallBlacklistCheckParam.setCompanyId(param.getCompanyId());
+        companyVoiceRoboticCallBlacklistCheckParam.setBusinessType(BusinessTypeEnum.SMS.getCode());
+        companyVoiceRoboticCallBlacklistCheckParam.setTargetValue(companyUser.getPhonenumber());
+        CompanyVoiceRoboticCallBlacklistCheckVO companyVoiceRoboticCallBlacklistCheckVO = companyVoiceRoboticCallBlacklistService.checkBlacklist(companyVoiceRoboticCallBlacklistCheckParam);
+        if (companyVoiceRoboticCallBlacklistCheckVO.getPass()){
+            throw new RuntimeException("黑名单校验未通过");
+        }
         for(Long id:param.getCustomerIds()){
             CrmCustomer crmCustomer=crmCustomerService.selectCrmCustomerById(id);
             String content="";

+ 20 - 0
fs-service/src/main/java/com/fs/company/service/impl/call/node/AiCallTaskNode.java

@@ -5,20 +5,26 @@ import com.alibaba.fastjson.JSONObject;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.spring.SpringUtils;
 import com.fs.company.domain.*;
+import com.fs.company.enums.BusinessTypeEnum;
 import com.fs.company.mapper.CompanyVoiceRoboticCallLogCallphoneMapper;
 import com.fs.company.mapper.CompanyVoiceRoboticCalleesMapper;
 import com.fs.company.mapper.CompanyWorkflowNodeMapper;
+import com.fs.company.param.CompanyVoiceRoboticCallBlacklistCheckParam;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.ICompanyVoiceRoboticCallBlacklistService;
 import com.fs.company.service.ICompanyVoiceRoboticService;
 import com.fs.company.service.easycall.IEasyCallService;
 import com.fs.company.service.impl.CompanyVoiceRoboticCallLogCallphoneServiceImpl;
 import com.fs.company.vo.AiCallConfigVO;
 import com.fs.company.vo.AiCallWorkflowConditionVo;
+import com.fs.company.vo.CompanyVoiceRoboticCallBlacklistCheckVO;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.company.vo.easycall.EasyCallCommonAddCallListParam;
 import com.fs.company.vo.easycall.EasyCallCreateTaskParam;
 import com.fs.company.vo.easycall.EasyCallPhoneItemVO;
 import com.fs.company.vo.easycall.EasyCallTaskVO;
+import com.fs.crm.domain.CrmCustomer;
+import com.fs.crm.service.ICrmCustomerService;
 import com.fs.enums.ExecutionStatusEnum;
 import com.fs.enums.NodeTypeEnum;
 import com.fs.his.config.CidPhoneConfig;
@@ -55,6 +61,8 @@ public class AiCallTaskNode extends AbstractWorkflowNode {
     public AiCallTaskNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }
+    private final ICompanyVoiceRoboticCallBlacklistService companyVoiceRoboticCallBlacklistService = SpringUtils.getBean(ICompanyVoiceRoboticCallBlacklistService.class);
+    private final ICrmCustomerService crmCustomerService = SpringUtils.getBean(ICrmCustomerService.class);
 
     /**
      * 收到回调以后,继续判定和执行下一步动作
@@ -272,6 +280,18 @@ public class AiCallTaskNode extends AbstractWorkflowNode {
             throw new RuntimeException("被叫人信息异常,calleeId: " + calleeId);
         }
 
+        //校验被叫人是否命中黑名单
+        CrmCustomer crmCustomer = crmCustomerService.selectCrmCustomerById(callees.getUserId());
+        CompanyVoiceRoboticCallBlacklistCheckParam companyVoiceRoboticCallBlacklistCheckParam = new CompanyVoiceRoboticCallBlacklistCheckParam();
+        companyVoiceRoboticCallBlacklistCheckParam.setCompanyId(crmCustomer.getCompanyId());
+        companyVoiceRoboticCallBlacklistCheckParam.setBusinessType(BusinessTypeEnum.SMS.getCode());
+        companyVoiceRoboticCallBlacklistCheckParam.setTargetValue(callees.getPhone());
+        CompanyVoiceRoboticCallBlacklistCheckVO companyVoiceRoboticCallBlacklistCheckVO = companyVoiceRoboticCallBlacklistService.checkBlacklist(companyVoiceRoboticCallBlacklistCheckParam);
+        if (!companyVoiceRoboticCallBlacklistCheckVO.getPass()){
+            log.error("workflowCallPhoneOne4EasyCall: 被叫人黑名单校验未通过 - userId: {}", callees.getUserId());
+            throw new RuntimeException("当前用户黑名单校验未通过");
+        }
+
         // 3. 构建创建任务参数(AI 外呼模式:taskType=1)
         EasyCallCreateTaskParam createParam = new EasyCallCreateTaskParam();
         // 任务名称:使用工作流实例 ID + 被叫人 ID 组合,保证唯一性