Commit 6b1e138dcfce9b7bcd88d55e85e089d23a2bc905

Authored by 张志伟
1 parent 844f64a3

:zap: feature(*): 升级依赖

- 升级依赖引入kotlin支持
- 新增补贴跟进类型
fw-shirasawa-domain/src/main/java/cn/fw/shirasawa/domain/enums/FollowTypeEnum.java
@@ -25,6 +25,7 @@ public enum FollowTypeEnum implements IEnum<Integer> { @@ -25,6 +25,7 @@ public enum FollowTypeEnum implements IEnum<Integer> {
25 FA(8, "急救跟进"), 25 FA(8, "急救跟进"),
26 RV(9, "回访跟进"), 26 RV(9, "回访跟进"),
27 PL(10, "公共池跟进"), 27 PL(10, "公共池跟进"),
  28 + SF(11, "补贴跟进"),
28 /** 29 /**
29 * 其他 30 * 其他
30 * 目前只用于设置,并不参与具体跟进业务 31 * 目前只用于设置,并不参与具体跟进业务
fw-shirasawa-sdk/pom.xml
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 <relativePath>../pom.xml</relativePath> 10 <relativePath>../pom.xml</relativePath>
11 </parent> 11 </parent>
12 <artifactId>fw-shirasawa-sdk</artifactId> 12 <artifactId>fw-shirasawa-sdk</artifactId>
13 - <version>1.0.2</version> 13 + <version>1.0.3</version>
14 <packaging>jar</packaging> 14 <packaging>jar</packaging>
15 <name>fw-shirasawa-sdk</name> 15 <name>fw-shirasawa-sdk</name>
16 16
fw-shirasawa-sdk/src/main/java/cn/fw/shirasawa/sdk/enums/DataTypeEnum.java
@@ -25,6 +25,7 @@ public enum DataTypeEnum implements IEnum&lt;Integer&gt; { @@ -25,6 +25,7 @@ public enum DataTypeEnum implements IEnum&lt;Integer&gt; {
25 FA(8, "急救"), 25 FA(8, "急救"),
26 RV(9, "回访"), 26 RV(9, "回访"),
27 PL(10, "公共池跟进"), 27 PL(10, "公共池跟进"),
  28 + SF(11, "补贴跟进"),
28 ; 29 ;
29 30
30 /** 31 /**
fw-shirasawa-sdk/src/main/java/cn/fw/shirasawa/sdk/param/FollowGenerateDTO.java
@@ -4,6 +4,7 @@ import cn.fw.shirasawa.sdk.enums.BusinessTypeEnum; @@ -4,6 +4,7 @@ import cn.fw.shirasawa.sdk.enums.BusinessTypeEnum;
4 import cn.fw.shirasawa.sdk.enums.DataTypeEnum; 4 import cn.fw.shirasawa.sdk.enums.DataTypeEnum;
5 import lombok.*; 5 import lombok.*;
6 6
  7 +import javax.validation.constraints.Future;
7 import javax.validation.constraints.NotBlank; 8 import javax.validation.constraints.NotBlank;
8 import javax.validation.constraints.NotEmpty; 9 import javax.validation.constraints.NotEmpty;
9 import javax.validation.constraints.NotNull; 10 import javax.validation.constraints.NotNull;
@@ -76,6 +77,7 @@ public class FollowGenerateDTO { @@ -76,6 +77,7 @@ public class FollowGenerateDTO {
76 /** 77 /**
77 * 截止时间 78 * 截止时间
78 */ 79 */
  80 + @Future(message = "截止时间必须是未来时间")
79 private Date deadline; 81 private Date deadline;
80 /** 82 /**
81 * 首次跟进待办截止时间 83 * 首次跟进待办截止时间
fw-shirasawa-server/src/main/resources/application-gray.yml
@@ -56,6 +56,7 @@ follow: @@ -56,6 +56,7 @@ follow:
56 PFCode: 'O6zZjZ17st' 56 PFCode: 'O6zZjZ17st'
57 FACode: '' 57 FACode: ''
58 RVCode: '' 58 RVCode: ''
  59 + SFCode: ''
59 FmTemplateCode: 'SMS_215116996' 60 FmTemplateCode: 'SMS_215116996'
60 RmTemplateCode: 'SMS_215072079' 61 RmTemplateCode: 'SMS_215072079'
61 IrTemplateCode: '' 62 IrTemplateCode: ''
fw-shirasawa-server/src/main/resources/application-prd.yml
@@ -55,6 +55,7 @@ follow: @@ -55,6 +55,7 @@ follow:
55 PFCode: 'O6zZjZ17st' 55 PFCode: 'O6zZjZ17st'
56 FACode: '' 56 FACode: ''
57 RVCode: '' 57 RVCode: ''
  58 + SFCode: ''
58 FmTemplateCode: 'SMS_215116996' 59 FmTemplateCode: 'SMS_215116996'
59 RmTemplateCode: 'SMS_215072079' 60 RmTemplateCode: 'SMS_215072079'
60 IrTemplateCode: '' 61 IrTemplateCode: ''
fw-shirasawa-server/src/main/resources/application-test.yml
@@ -66,6 +66,7 @@ follow: @@ -66,6 +66,7 @@ follow:
66 PFCode: 'O6zZjZ17st' 66 PFCode: 'O6zZjZ17st'
67 FACode: '' 67 FACode: ''
68 RVCode: '' 68 RVCode: ''
  69 + SFCode: ''
69 FmTemplateCode: '' 70 FmTemplateCode: ''
70 RmTemplateCode: '' 71 RmTemplateCode: ''
71 IrTemplateCode: '' 72 IrTemplateCode: ''
72 \ No newline at end of file 73 \ No newline at end of file
fw-shirasawa-server/src/main/resources/application.yml
@@ -145,6 +145,7 @@ follow: @@ -145,6 +145,7 @@ follow:
145 FACode: '' 145 FACode: ''
146 RVCode: '' 146 RVCode: ''
147 PLCode: '' 147 PLCode: ''
  148 + SFCode: ''
148 FmTemplateCode: '' 149 FmTemplateCode: ''
149 RmTemplateCode: '' 150 RmTemplateCode: ''
150 IrTemplateCode: '' 151 IrTemplateCode: ''
fw-shirasawa-service/src/main/java/cn/fw/shirasawa/service/bus/follow/strategy/AbstractFollowStrategy.java
@@ -695,7 +695,7 @@ public abstract class AbstractFollowStrategy implements FollowStrategy { @@ -695,7 +695,7 @@ public abstract class AbstractFollowStrategy implements FollowStrategy {
695 */ 695 */
696 protected boolean dealRepeatClue(CluePool cluePool, FollowStrategy strategy) { 696 protected boolean dealRepeatClue(CluePool cluePool, FollowStrategy strategy) {
697 //判断是否可以去重 697 //判断是否可以去重
698 - if (null == cluePool.getCoverFlag() || Boolean.FALSE.equals(cluePool.getCoverFlag())) { 698 + if (!Boolean.TRUE.equals(cluePool.getCoverFlag())) {
699 return false; 699 return false;
700 } 700 }
701 boolean isContainAF = false; 701 boolean isContainAF = false;
fw-shirasawa-service/src/main/java/cn/fw/shirasawa/service/bus/follow/strategy/impl/SFFollowStrategy.java 0 → 100644
  1 +package cn.fw.shirasawa.service.bus.follow.strategy.impl;
  2 +
  3 +import cn.fw.shirasawa.domain.db.OriginalData;
  4 +import cn.fw.shirasawa.domain.db.follow.FollowRecord;
  5 +import cn.fw.shirasawa.domain.db.follow.FollowTask;
  6 +import cn.fw.shirasawa.domain.db.pool.CluePool;
  7 +import cn.fw.shirasawa.domain.enums.ClueStatusEnum;
  8 +import cn.fw.shirasawa.domain.enums.FollowTypeEnum;
  9 +import cn.fw.shirasawa.service.bus.follow.strategy.AbstractFollowStrategy;
  10 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  11 +import lombok.Getter;
  12 +import lombok.extern.slf4j.Slf4j;
  13 +import org.springframework.beans.factory.annotation.Value;
  14 +import org.springframework.stereotype.Component;
  15 +import org.springframework.transaction.annotation.Transactional;
  16 +import org.springframework.util.CollectionUtils;
  17 +
  18 +import java.time.LocalDate;
  19 +import java.time.LocalDateTime;
  20 +import java.util.List;
  21 +import java.util.Objects;
  22 +import java.util.Optional;
  23 +
  24 +import static cn.fw.common.businessvalidator.Validator.BV;
  25 +
  26 +/**
  27 + * 补贴跟进
  28 + *
  29 + * @author : kurisu
  30 + * @version : 1.0
  31 + * @className : SFFollowStrategy
  32 + * @description : 补贴跟进
  33 + * @date : 2023-03-13 15:16
  34 + */
  35 +@Slf4j
  36 +@Component
  37 +@SuppressWarnings("Duplicates")
  38 +public class SFFollowStrategy extends AbstractFollowStrategy {
  39 + @Value("${follow.todo.SFCode}")
  40 + @Getter
  41 + private String SFCode;
  42 +
  43 + @Override
  44 + public FollowTypeEnum getFollowType() {
  45 + return FollowTypeEnum.SF;
  46 + }
  47 +
  48 + @Override
  49 + public String getTodoCode() {
  50 + return getSFCode();
  51 + }
  52 +
  53 + @Override
  54 + @Transactional(rollbackFor = Exception.class)
  55 + public boolean origin2task(OriginalData originalData) throws Exception {
  56 + List<CluePool> list = cluePoolService.list(Wrappers.<CluePool>lambdaQuery()
  57 + .eq(CluePool::getClueType, getFollowType())
  58 + .eq(CluePool::getCustomerId, originalData.getCustomerId())
  59 + .eq(CluePool::getRefererId, originalData.getDetailId())
  60 + .eq(CluePool::getGroupId, originalData.getGroupId())
  61 + .in(CluePool::getClueStatus, ClueStatusEnum.ONGOING, ClueStatusEnum.WAITING)
  62 + );
  63 + if (!CollectionUtils.isEmpty(list)) {
  64 + return true;
  65 + }
  66 + CluePool cluePool = transformClue(originalData);
  67 + cluePool.setStartTime(originalData.getGenerateTime());
  68 + LocalDateTime deadLine = Optional.ofNullable(originalData.getDeadline()).orElse(LocalDate.now().plusYears(10L).atStartOfDay());
  69 + cluePool.setDeadline(deadLine.minusSeconds(1L));
  70 + return cluePoolService.save(cluePool);
  71 + }
  72 +
  73 + @Override
  74 + @Transactional(rollbackFor = Exception.class)
  75 + public void startClue(CluePool cluePool) throws Exception {
  76 + dealRepeatClue(cluePool, this);
  77 + FollowTask task = this.createTask(cluePool);
  78 + boolean saveTask = followTaskService.save(task);
  79 + BV.isTrue(saveTask, () -> "生成跟进任务失败");
  80 + FollowRecord record = createRecord(task);
  81 + record.setTodoCode(getTodoCode());
  82 + record.setNote(cluePool.getNote());
  83 + record.setContacts(cluePool.getContacts());
  84 + if (Objects.nonNull(cluePool.getFirstDeadline())) {
  85 + record.setDeadline(cluePool.getFirstDeadline());
  86 + }
  87 + followRecordService.save(record);
  88 +
  89 + cluePool.setClueStatus(ClueStatusEnum.ONGOING);
  90 + cluePoolService.updateById(cluePool);
  91 + }
  92 +}
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 <properties> 28 <properties>
29 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 29 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
30 <java.version>1.8</java.version> 30 <java.version>1.8</java.version>
31 - <fw.shirasawa.sdk>1.0.2</fw.shirasawa.sdk> 31 + <fw.shirasawa.sdk>1.0.3</fw.shirasawa.sdk>
32 <!-- util --> 32 <!-- util -->
33 <spring-retry.version>1.2.4.RELEASE</spring-retry.version> 33 <spring-retry.version>1.2.4.RELEASE</spring-retry.version>
34 <!-- database --> 34 <!-- database -->