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 25 FA(8, "急救跟进"),
26 26 RV(9, "回访跟进"),
27 27 PL(10, "公共池跟进"),
  28 + SF(11, "补贴跟进"),
28 29 /**
29 30 * 其他
30 31 * 目前只用于设置,并不参与具体跟进业务
... ...
fw-shirasawa-sdk/pom.xml
... ... @@ -10,7 +10,7 @@
10 10 <relativePath>../pom.xml</relativePath>
11 11 </parent>
12 12 <artifactId>fw-shirasawa-sdk</artifactId>
13   - <version>1.0.2</version>
  13 + <version>1.0.3</version>
14 14 <packaging>jar</packaging>
15 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 25 FA(8, "急救"),
26 26 RV(9, "回访"),
27 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 4 import cn.fw.shirasawa.sdk.enums.DataTypeEnum;
5 5 import lombok.*;
6 6  
  7 +import javax.validation.constraints.Future;
7 8 import javax.validation.constraints.NotBlank;
8 9 import javax.validation.constraints.NotEmpty;
9 10 import javax.validation.constraints.NotNull;
... ... @@ -76,6 +77,7 @@ public class FollowGenerateDTO {
76 77 /**
77 78 * 截止时间
78 79 */
  80 + @Future(message = "截止时间必须是未来时间")
79 81 private Date deadline;
80 82 /**
81 83 * 首次跟进待办截止时间
... ...
fw-shirasawa-server/src/main/resources/application-gray.yml
... ... @@ -56,6 +56,7 @@ follow:
56 56 PFCode: 'O6zZjZ17st'
57 57 FACode: ''
58 58 RVCode: ''
  59 + SFCode: ''
59 60 FmTemplateCode: 'SMS_215116996'
60 61 RmTemplateCode: 'SMS_215072079'
61 62 IrTemplateCode: ''
... ...
fw-shirasawa-server/src/main/resources/application-prd.yml
... ... @@ -55,6 +55,7 @@ follow:
55 55 PFCode: 'O6zZjZ17st'
56 56 FACode: ''
57 57 RVCode: ''
  58 + SFCode: ''
58 59 FmTemplateCode: 'SMS_215116996'
59 60 RmTemplateCode: 'SMS_215072079'
60 61 IrTemplateCode: ''
... ...
fw-shirasawa-server/src/main/resources/application-test.yml
... ... @@ -66,6 +66,7 @@ follow:
66 66 PFCode: 'O6zZjZ17st'
67 67 FACode: ''
68 68 RVCode: ''
  69 + SFCode: ''
69 70 FmTemplateCode: ''
70 71 RmTemplateCode: ''
71 72 IrTemplateCode: ''
72 73 \ No newline at end of file
... ...
fw-shirasawa-server/src/main/resources/application.yml
... ... @@ -145,6 +145,7 @@ follow:
145 145 FACode: ''
146 146 RVCode: ''
147 147 PLCode: ''
  148 + SFCode: ''
148 149 FmTemplateCode: ''
149 150 RmTemplateCode: ''
150 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 695 */
696 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 699 return false;
700 700 }
701 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 28 <properties>
29 29 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
30 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 32 <!-- util -->
33 33 <spring-retry.version>1.2.4.RELEASE</spring-retry.version>
34 34 <!-- database -->
... ...