| 
					
				 | 
			
			
				@@ -3,11 +3,13 @@ package com.fs.qw.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSONException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.ad.enums.AdUploadType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.ad.service.IAdHtmlClickLogService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.common.core.domain.R; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.common.core.redis.RedisCache; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fs.common.utils.PubFun; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.common.utils.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.company.service.ICompanyConfigService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.course.domain.FsCourseSop; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -53,6 +55,8 @@ import com.fs.sop.service.ISopUserLogsInfoService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.sop.service.ISopUserLogsService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.store.domain.FsUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.store.mapper.FsUserMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fs.system.domain.SysConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fs.system.service.ISysConfigService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.voice.utils.StringUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.rocketmq.spring.core.RocketMQTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //import org.apache.rocketmq.spring.core.RocketMQTemplate; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -92,6 +96,10 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private QwExternalContactMapper qwExternalContactMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private IQwExternalContactService qwExternalContactService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private ISysConfigService sysConfigService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private QwExternalContactBlackLogMapper qwExternalContactBlackLogMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private IQwExternalContactBlackLogService qwExternalContactBlackLogService; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1199,10 +1207,25 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         boolean isSend = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         boolean isWay = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         QwContactWay wayId = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysConfig sysConfig = sysConfigService.selectConfigByConfigKey("qw.config"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        QwConfig qwConfig = JSON.parseObject(sysConfig.getConfigValue(), QwConfig.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //先入客户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalByExternalIdAndCompanyIdToIdAndFs(externalUserID, userID, corpId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         boolean isNewQwExternalContact = qwExternalContact == null ? true : false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qwExternalContact = qwExternalContact == null ? new QwExternalContact() : qwExternalContact; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //是否开启重粉判断 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(qwConfig.isRepeat()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<QwExternalContact> externalContactList = qwExternalContactMapper.selectList(new QueryWrapper<QwExternalContact>().eq("external_user_id", externalUserID).eq("corp_id", corpId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(!externalContactList.isEmpty()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                externalContactList.forEach(e -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    e.setRepeat(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                qwExternalContactService.updateBatchById(externalContactList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                qwExternalContact.setRepeat(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qwExternalContact.setUserId(userID); // 设置属于用户ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qwExternalContact.setExternalUserId(externalUserID); // 设置外部联系人ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qwExternalContact.setCorpId(corpId); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2224,10 +2247,20 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 定义日期和时间格式化器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysConfig sysConfig = sysConfigService.selectConfigByConfigKey("qw.config"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<SopUserLogsInfo> sopUserLogsInfos = sopUserLogsInfoMapper.repeatProject(PubFun.listToNewList(qwSopRuleTimeVOS, QwSopRuleTimeVO::getProject), externalUserID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, List<String>> collect = sopUserLogsInfos.stream().collect(Collectors.groupingBy(SopUserLogsInfo::getProject, Collectors.mapping(SopUserLogsInfo::getSopId, Collectors.toList()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // sop任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qwSopRuleTimeVOS.forEach(ruleTimeVO -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(sysConfig != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                QwConfig qwConfig = JSON.parseObject(sysConfig.getConfigValue(), QwConfig.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(qwConfig.isProject()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    List<String> sopIdList = collect.get(ruleTimeVO.getProject()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(sopIdList.isEmpty()) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(sopIdList.contains(ruleTimeVO.getId())) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 将排除的字符串转成列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<String> excludedTagsList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (ruleTimeVO.getExcludeTags() != null && !ruleTimeVO.getExcludeTags().isEmpty()) { 
			 |