Kaynağa Gözat

迁移广告

吴树波 2 hafta önce
ebeveyn
işleme
cc7ceea7cb

+ 1 - 0
fs-service-system/src/main/java/com/fs/qw/domain/QwExternalContact.java

@@ -120,5 +120,6 @@ public class QwExternalContact extends BaseEntity
     private Date firstTime;
 
     private Integer lastWatchTime;
+    private Integer repeat;
 
 }

+ 34 - 1
fs-service-system/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java

@@ -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()) {

+ 11 - 0
fs-service-system/src/main/java/com/fs/qw/vo/QwConfig.java

@@ -0,0 +1,11 @@
+package com.fs.qw.vo;
+
+import lombok.Data;
+
+@Data
+public class QwConfig {
+
+    private boolean isRepeat;
+    private boolean isProject;
+
+}

+ 1 - 0
fs-service-system/src/main/java/com/fs/qw/vo/QwSopRuleTimeVO.java

@@ -88,5 +88,6 @@ public class QwSopRuleTimeVO extends BaseEntity {
     * 间隔天数
     */
     private Integer tempGap;
+    private Integer project;
 
 }

+ 1 - 0
fs-service-system/src/main/java/com/fs/sop/domain/QwSop.java

@@ -109,5 +109,6 @@ public class QwSop implements Serializable
     private Integer courseDateNum;
     // 新课对话模板
     private String newTemplateId;
+    private Integer project;
 
 }

+ 3 - 0
fs-service-system/src/main/java/com/fs/sop/domain/SopUserLogsInfo.java

@@ -37,4 +37,7 @@ public class SopUserLogsInfo implements Serializable {
     @TableField(exist = false)
     private String remark;
 
+    @TableField(exist = false)
+    private Integer project;
+
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/sop/mapper/SopUserLogsInfoMapper.java

@@ -193,4 +193,6 @@ public interface SopUserLogsInfoMapper {
     @DataSource(DataSourceType.SOP)
     @Select("SELECT external_id,create_time  FROM sop_user_logs_info where sop_id = #{sopId} ")
     List<SopUserLogsInfo> selectSopUserLogsInfoBySopId(@Param("sopId")String sopId);
+    @DataSource(DataSourceType.SOP)
+    List<SopUserLogsInfo> repeatProject(@Param("projects") List<Integer> projects, @Param("externalUserID") String externalUserID);
 }

+ 6 - 0
fs-service-system/src/main/resources/mapper/sop/SopUserLogsInfoMapper.xml

@@ -314,6 +314,12 @@
     <select id="selectSopUserLogsInfoListByUserLogsId"  resultMap="SopUserLogsInfoResult">
         select * from sop_user_logs_info where user_logs_id=#{id}
     </select>
+    <select id="repeatProject" resultType="com.fs.sop.domain.SopUserLogsInfo">
+        select a.*,b.project from sop_user_logs_info a
+        inner join qw_sop b on a.sop_id = b.id
+        where b.project in <foreach collection="projects" open="(" separator="," close=")" item="item">#{item}</foreach>\
+        and a.external_contact_id = #{externalUserID}
+    </select>
 
 
 </mapper>