|  | @@ -3,11 +3,13 @@ package com.fs.qw.service.impl;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  import com.alibaba.fastjson.JSON;
 |  |  import com.alibaba.fastjson.JSON;
 | 
											
												
													
														|  |  import com.alibaba.fastjson.JSONException;
 |  |  import com.alibaba.fastjson.JSONException;
 | 
											
												
													
														|  | 
 |  | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
											
												
													
														|  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 |  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
											
												
													
														|  |  import com.fs.ad.enums.AdUploadType;
 |  |  import com.fs.ad.enums.AdUploadType;
 | 
											
												
													
														|  |  import com.fs.ad.service.IAdHtmlClickLogService;
 |  |  import com.fs.ad.service.IAdHtmlClickLogService;
 | 
											
												
													
														|  |  import com.fs.common.core.domain.R;
 |  |  import com.fs.common.core.domain.R;
 | 
											
												
													
														|  |  import com.fs.common.core.redis.RedisCache;
 |  |  import com.fs.common.core.redis.RedisCache;
 | 
											
												
													
														|  | 
 |  | +import com.fs.common.utils.PubFun;
 | 
											
												
													
														|  |  import com.fs.common.utils.StringUtils;
 |  |  import com.fs.common.utils.StringUtils;
 | 
											
												
													
														|  |  import com.fs.company.service.ICompanyConfigService;
 |  |  import com.fs.company.service.ICompanyConfigService;
 | 
											
												
													
														|  |  import com.fs.course.domain.FsCourseSop;
 |  |  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.sop.service.ISopUserLogsService;
 | 
											
												
													
														|  |  import com.fs.store.domain.FsUser;
 |  |  import com.fs.store.domain.FsUser;
 | 
											
												
													
														|  |  import com.fs.store.mapper.FsUserMapper;
 |  |  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 com.fs.voice.utils.StringUtil;
 | 
											
												
													
														|  |  import org.apache.rocketmq.spring.core.RocketMQTemplate;
 |  |  import org.apache.rocketmq.spring.core.RocketMQTemplate;
 | 
											
												
													
														|  |  //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
 |  |      @Autowired
 | 
											
												
													
														|  |      private QwExternalContactMapper qwExternalContactMapper;
 |  |      private QwExternalContactMapper qwExternalContactMapper;
 | 
											
												
													
														|  |      @Autowired
 |  |      @Autowired
 | 
											
												
													
														|  | 
 |  | +    private IQwExternalContactService qwExternalContactService;
 | 
											
												
													
														|  | 
 |  | +    @Autowired
 | 
											
												
													
														|  | 
 |  | +    private ISysConfigService sysConfigService;
 | 
											
												
													
														|  | 
 |  | +    @Autowired
 | 
											
												
													
														|  |      private QwExternalContactBlackLogMapper qwExternalContactBlackLogMapper;
 |  |      private QwExternalContactBlackLogMapper qwExternalContactBlackLogMapper;
 | 
											
												
													
														|  |      @Autowired
 |  |      @Autowired
 | 
											
												
													
														|  |      private IQwExternalContactBlackLogService qwExternalContactBlackLogService;
 |  |      private IQwExternalContactBlackLogService qwExternalContactBlackLogService;
 | 
											
										
											
												
													
														|  | @@ -1199,10 +1207,25 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
 | 
											
												
													
														|  |          boolean isSend = true;
 |  |          boolean isSend = true;
 | 
											
												
													
														|  |          boolean isWay = false;
 |  |          boolean isWay = false;
 | 
											
												
													
														|  |          QwContactWay wayId = null;
 |  |          QwContactWay wayId = null;
 | 
											
												
													
														|  | 
 |  | +        SysConfig sysConfig = sysConfigService.selectConfigByConfigKey("qw.config");
 | 
											
												
													
														|  | 
 |  | +        QwConfig qwConfig = JSON.parseObject(sysConfig.getConfigValue(), QwConfig.class);
 | 
											
												
													
														|  |          //先入客户
 |  |          //先入客户
 | 
											
												
													
														|  |          QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalByExternalIdAndCompanyIdToIdAndFs(externalUserID, userID, corpId);
 |  |          QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalByExternalIdAndCompanyIdToIdAndFs(externalUserID, userID, corpId);
 | 
											
												
													
														|  |          boolean isNewQwExternalContact = qwExternalContact == null ? true : false;
 |  |          boolean isNewQwExternalContact = qwExternalContact == null ? true : false;
 | 
											
												
													
														|  |          qwExternalContact = qwExternalContact == null ? new QwExternalContact() : qwExternalContact;
 |  |          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.setUserId(userID); // 设置属于用户ID
 | 
											
												
													
														|  |          qwExternalContact.setExternalUserId(externalUserID); // 设置外部联系人ID
 |  |          qwExternalContact.setExternalUserId(externalUserID); // 设置外部联系人ID
 | 
											
												
													
														|  |          qwExternalContact.setCorpId(corpId);
 |  |          qwExternalContact.setCorpId(corpId);
 | 
											
										
											
												
													
														|  | @@ -2224,10 +2247,20 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
 | 
											
												
													
														|  |          // 定义日期和时间格式化器
 |  |          // 定义日期和时间格式化器
 | 
											
												
													
														|  |          DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 |  |          DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 | 
											
												
													
														|  |          DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm");
 |  |          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任务
 |  |          // sop任务
 | 
											
												
													
														|  |          qwSopRuleTimeVOS.forEach(ruleTimeVO -> {
 |  |          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<>();
 |  |              List<String> excludedTagsList = new ArrayList<>();
 | 
											
												
													
														|  |              if (ruleTimeVO.getExcludeTags() != null && !ruleTimeVO.getExcludeTags().isEmpty()) {
 |  |              if (ruleTimeVO.getExcludeTags() != null && !ruleTimeVO.getExcludeTags().isEmpty()) {
 |