Commit 03c1a9b3dd8ff0db4cd562a19f7d1b0fda12a19f

Authored by 张志伟
1 parent 138b8c07

:sparkles: 新增自定义查询档案列表的接口

fw-valhalla-common/src/main/java/cn/fw/valhalla/common/utils/MessageFormatUtil.java
1 1 package cn.fw.valhalla.common.utils;
2 2  
3 3 import java.text.MessageFormat;
  4 +import java.time.LocalDate;
4 5 import java.util.ArrayList;
5   -import java.util.Date;
6 6 import java.util.List;
7 7  
8 8 /**
... ... @@ -25,7 +25,9 @@ public class MessageFormatUtil {
25 25 }
26 26  
27 27 public static void main(String[] args) {
28   - System.out.println("示例:" + MessageFormatTransfer("crm:valhalla:save:lock:key:{0}:{1}", 11111L, new Date()));
  28 + // System.out.println("示例:" + MessageFormatTransfer("crm:valhalla:save:lock:key:{0}:{1}", 11111L, new Date()));
  29 +
  30 + System.out.println(LocalDate.now().plusYears(0));
29 31 }
30 32  
31 33 }
... ...
fw-valhalla-dao/src/main/java/cn/fw/valhalla/dao/mapper/CustomerMapper.java
1 1 package cn.fw.valhalla.dao.mapper;
2 2  
3 3 import cn.fw.valhalla.domain.db.customer.Customer;
  4 +import cn.fw.valhalla.domain.dto.CustomerDetailDto;
4 5 import cn.fw.valhalla.domain.dto.StammkundeAnalyseDTO;
  6 +import cn.fw.valhalla.domain.query.CustomCustomerQuery;
  7 +import cn.fw.valhalla.domain.query.CustomerQueryVO;
5 8 import cn.fw.valhalla.domain.query.StammkundeAnalyseQueryVO;
  9 +import cn.fw.valhalla.domain.vo.customer.CustomerListVO;
6 10 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
7 11 import org.apache.ibatis.annotations.Param;
8 12 import org.springframework.stereotype.Repository;
9   -import cn.fw.valhalla.domain.vo.customer.CustomerListVO;
10   -import cn.fw.valhalla.domain.query.CustomerQueryVO;
11 13  
12 14 import java.util.List;
13 15  
... ... @@ -31,8 +33,17 @@ public interface CustomerMapper extends BaseMapper<Customer> {
31 33  
32 34 /**
33 35 * 查询指定条件的客户
  36 + *
34 37 * @param queryVO
35 38 * @return
36 39 */
37 40 List<StammkundeAnalyseDTO> analyseList(@Param("condition") StammkundeAnalyseQueryVO queryVO);
  41 +
  42 + /**
  43 + * 查询自定义参数的档案信息
  44 + *
  45 + * @param query
  46 + * @return
  47 + */
  48 + List<CustomerDetailDto> queryCustomList(@Param("condition") CustomCustomerQuery query);
38 49 }
... ...
fw-valhalla-dao/src/main/resources/mapper/CustomerMapper.xml
... ... @@ -130,4 +130,93 @@
130 130 and t2.lng &lt;= #{condition.maxLng}
131 131 </if>
132 132 </select>
  133 +
  134 + <select
  135 + id="queryCustomList"
  136 + resultType="cn.fw.valhalla.domain.dto.CustomerDetailDto"
  137 + parameterType="cn.fw.valhalla.domain.query.CustomCustomerQuery"
  138 + >
  139 + select distinct
  140 + t1.*,
  141 + t2.contact name,
  142 + t2.member_id member_id
  143 + from customer t1 inner join customer_base_info t2 on t1.base_id = t2.id
  144 + left join follow_task t3 on t1.id=t3.customer_id and t3.state=1 and t3.type=2
  145 + left join follow_task t4 on t1.id=t4.customer_id and t4.state=1 and t4.type=4
  146 + where t1.yn = 1 and t1.group_id = #{condition.groupId}
  147 + <if test="condition.shopList !=null">
  148 + and t1.shop_id in
  149 + <foreach collection="condition.shopList" item="id" index="index" open="(" close=")" separator=",">
  150 + #{id}
  151 + </foreach>
  152 + </if>
  153 + <if test="condition.followType !=null and condition.followType==2">
  154 + and t3.id is not null
  155 + </if>
  156 + <if test="condition.followType !=null and condition.followType==4">
  157 + and t4.id is not null
  158 + </if>
  159 + <if test="condition.frameNo !=null">
  160 + and t1.frame_no = #{condition.frameNo}
  161 + </if>
  162 + <if test="condition.andCondition==true">
  163 + and (
  164 + t1.adviser_id is not null
  165 + <if test="condition.minMileage !=null and condition.maxMileage !=null">
  166 + <if test="condition.minMileage !=null">
  167 + and t1.current_mileage >= #{condition.minMileage}
  168 + </if>
  169 + <if test="condition.maxMileage !=null">
  170 + and t1.current_mileage &lt;= #{condition.maxMileage}
  171 + </if>
  172 + </if>
  173 +
  174 + <if test="condition.minBuyDate !=null and condition.maxBuyDate !=null">
  175 + <if test="condition.minBuyDate !=null">
  176 + and t1.buy_date >= #{condition.minBuyDate}
  177 + </if>
  178 + <if test="condition.maxBuyDate !=null">
  179 + and t1.buy_date &lt;= #{condition.maxBuyDate}
  180 + </if>
  181 + </if>
  182 +
  183 + <if test="condition.level !=null">
  184 + and t1.cus_level = #{condition.level}
  185 + </if>
  186 + )
  187 + </if>
  188 +
  189 + <if test="condition.andCondition==false">
  190 + and (
  191 + t1.adviser_id is not null
  192 + <if test="condition.minMileage !=null and condition.maxMileage !=null">
  193 + or (
  194 + t1.current_mileage is not null
  195 + <if test="condition.minMileage !=null">
  196 + and t1.current_mileage >= #{condition.minMileage}
  197 + </if>
  198 + <if test="condition.maxMileage !=null">
  199 + and t1.current_mileage &lt;= #{condition.maxMileage}
  200 + </if>
  201 + )
  202 + </if>
  203 +
  204 + <if test="condition.minBuyDate !=null and condition.maxBuyDate !=null">
  205 + or (
  206 + t1.buy_date is not null
  207 + <if test="condition.minBuyDate !=null">
  208 + and t1.buy_date >= #{condition.minBuyDate}
  209 + </if>
  210 + <if test="condition.maxBuyDate !=null">
  211 + and t1.buy_date &lt;= #{condition.maxBuyDate}
  212 + </if>
  213 + )
  214 + </if>
  215 +
  216 + <if test="condition.level !=null">
  217 + or t1.cus_level = #{condition.level}
  218 + </if>
  219 + )
  220 + </if>
  221 + </select>
133 222 </mapper>
... ...
fw-valhalla-domain/src/main/java/cn/fw/valhalla/domain/query/CustomCustomerQuery.java 0 → 100644
  1 +package cn.fw.valhalla.domain.query;
  2 +
  3 +
  4 +import lombok.Data;
  5 +
  6 +import java.time.LocalDate;
  7 +import java.util.List;
  8 +
  9 +/**
  10 + * @author : kurisu
  11 + * @className : CustomCustomerQuery
  12 + * @description :
  13 + * @date: 2022-01-10 17:46
  14 + */
  15 +@Data
  16 +public class CustomCustomerQuery {
  17 +
  18 + private Integer minMileage;
  19 + private Integer maxMileage;
  20 + private LocalDate minBuyDate;
  21 + private LocalDate maxBuyDate;
  22 + private Integer level;
  23 +
  24 +
  25 + private boolean andCondition;
  26 +
  27 +
  28 + private Integer customerType;
  29 +
  30 + private Long groupId;
  31 +
  32 + private Integer followType;
  33 + private String frameNo;
  34 + private List<Long> shopList;
  35 +}
... ...
fw-valhalla-sdk/pom.xml
... ... @@ -10,7 +10,7 @@
10 10 <relativePath>../pom.xml</relativePath>
11 11 </parent>
12 12 <artifactId>fw-valhalla-sdk</artifactId>
13   - <version>1.1.4</version>
  13 + <version>1.1.5</version>
14 14 <packaging>jar</packaging>
15 15 <name>fw-valhalla-sdk</name>
16 16  
... ...
fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/api/ValhallaGeneralApiService.java
1 1 package cn.fw.valhalla.sdk.api;
2 2  
3 3 import cn.fw.data.base.domain.common.Message;
  4 +import cn.fw.valhalla.sdk.param.CustomerQueryReq;
4 5 import cn.fw.valhalla.sdk.param.ReachLogReq;
  6 +import cn.fw.valhalla.sdk.result.CustomerSimpleInfoDto;
5 7 import org.springframework.cloud.openfeign.FeignClient;
6 8 import org.springframework.web.bind.annotation.PostMapping;
7 9 import org.springframework.web.bind.annotation.RequestBody;
8 10  
9 11 import javax.validation.Valid;
  12 +import java.util.List;
10 13  
11 14 /**
12 15 * @author : kurisu
... ... @@ -18,9 +21,19 @@ import javax.validation.Valid;
18 21 public interface ValhallaGeneralApiService {
19 22 /**
20 23 * 保存进站记录
  24 + *
21 25 * @param reachLogReq
22 26 * @return
23 27 */
24 28 @PostMapping("/reach/save")
25 29 Message<Void> saveReachLog(@Valid @RequestBody ReachLogReq reachLogReq);
  30 +
  31 + /**
  32 + * 查询保有客档案信息
  33 + *
  34 + * @param customerQueryReq
  35 + * @return
  36 + */
  37 + @PostMapping("/query/customer/list")
  38 + Message<List<CustomerSimpleInfoDto>> queryCustomList(@RequestBody CustomerQueryReq customerQueryReq);
26 39 }
... ...
fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/enums/CustomerFollowTypeEnum.java 0 → 100644
  1 +package cn.fw.valhalla.sdk.enums;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonCreator;
  4 +import com.fasterxml.jackson.annotation.JsonValue;
  5 +import lombok.Getter;
  6 +
  7 +/**
  8 + * @author : kurisu
  9 + * @className : CustomerFollowTypeEnum
  10 + * @description : 跟进类型
  11 + * @date: 2022-01-10 17:37
  12 + */
  13 +public enum CustomerFollowTypeEnum {
  14 + /**
  15 + * 例保
  16 + */
  17 + RM(2, "流失客户"),
  18 + /**
  19 + * 续保
  20 + */
  21 + IR(4, "续保"),
  22 + ;
  23 +
  24 + /**
  25 + * 值
  26 + */
  27 + private final Integer value;
  28 + /**
  29 + * 名称
  30 + */
  31 + @Getter
  32 + private final String name;
  33 +
  34 + CustomerFollowTypeEnum(final Integer value, final String name) {
  35 + this.value = value;
  36 + this.name = name;
  37 + }
  38 +
  39 + /**
  40 + * 根据枚举值获取枚举对象
  41 + */
  42 + @JsonCreator
  43 + public static CustomerFollowTypeEnum ofValue(final Integer value) {
  44 + for (final CustomerFollowTypeEnum typeEnum : CustomerFollowTypeEnum.values()) {
  45 + if (typeEnum.value.equals(value)) {
  46 + return typeEnum;
  47 + }
  48 + }
  49 + return null;
  50 + }
  51 +
  52 + /**
  53 + * 获取描述
  54 + *
  55 + * @return 值
  56 + */
  57 + @JsonCreator
  58 + public static String getNameByVale(final Integer value) {
  59 + for (final CustomerFollowTypeEnum typeEnum : CustomerFollowTypeEnum.values()) {
  60 + if (typeEnum.value.equals(value)) {
  61 + return typeEnum.getName();
  62 + }
  63 + }
  64 + return "";
  65 + }
  66 +
  67 + /**
  68 + * 获取值
  69 + *
  70 + * @return 值
  71 + */
  72 + @JsonValue
  73 + public Integer getValue() {
  74 + return value;
  75 + }
  76 +}
... ...
fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/param/CustomerQueryReq.java 0 → 100644
  1 +package cn.fw.valhalla.sdk.param;
  2 +
  3 +import cn.fw.valhalla.sdk.enums.CustomerFollowTypeEnum;
  4 +import lombok.EqualsAndHashCode;
  5 +import lombok.ToString;
  6 +
  7 +import javax.validation.constraints.NotNull;
  8 +import java.io.Serializable;
  9 +import java.util.Arrays;
  10 +import java.util.List;
  11 +
  12 +
  13 +/**
  14 + * @author : kurisu
  15 + * @className : CustomerQueryReq
  16 + * @description : 保有客查询参数
  17 + * @date: 2022-01-10 14:59
  18 + */
  19 +@ToString
  20 +@EqualsAndHashCode
  21 +public class CustomerQueryReq implements Serializable {
  22 + private static final long serialVersionUID = 2363764577856885L;
  23 +
  24 + /**
  25 + * 进站里程
  26 + * 单位km 最多指会取前两个元素
  27 + */
  28 + private Integer[] arrivalMileage;
  29 +
  30 + /**
  31 + * 车辆年限
  32 + * 向上取整
  33 + */
  34 + private Integer[] ageLimit;
  35 +
  36 + /**
  37 + * 客户星级
  38 + */
  39 + private Integer level;
  40 + /**
  41 + * 是否是 并且条件
  42 + * 反之就是或者
  43 + */
  44 + private boolean andCondition;
  45 +
  46 +
  47 + /**
  48 + * (以下独立于 andCondition 都是取并且)
  49 + * 保有客类型 (暂无)
  50 + */
  51 + @Deprecated
  52 + private Integer customerType;
  53 +
  54 + @NotNull(message = "集团id不能为空")
  55 + private Long groupId;
  56 +
  57 + /**
  58 + * 保有客跟进类型
  59 + */
  60 + private CustomerFollowTypeEnum followType;
  61 + /**
  62 + * 车架号
  63 + */
  64 + private String frameNo;
  65 +
  66 + /**
  67 + * 门店id列表
  68 + */
  69 + private List<Long> shopList;
  70 +
  71 + public Integer getCustomerType() {
  72 + return customerType;
  73 + }
  74 +
  75 + public void setCustomerType(Integer customerType) {
  76 + this.customerType = customerType;
  77 + }
  78 +
  79 + public CustomerFollowTypeEnum getFollowType() {
  80 + return followType;
  81 + }
  82 +
  83 + public void setFollowType(CustomerFollowTypeEnum followType) {
  84 + this.followType = followType;
  85 + }
  86 +
  87 + public Integer[] getArrivalMileage() {
  88 + return arrivalMileage;
  89 + }
  90 +
  91 + public void setArrivalMileage(Integer... arrivalMileage) {
  92 + if (arrivalMileage != null && arrivalMileage.length > 2) {
  93 + this.arrivalMileage = Arrays.copyOfRange(arrivalMileage, 0, 2);
  94 + return;
  95 + }
  96 + this.arrivalMileage = arrivalMileage;
  97 + }
  98 +
  99 + public Integer[] getAgeLimit() {
  100 + return ageLimit;
  101 + }
  102 +
  103 + public void setAgeLimit(Integer... ageLimit) {
  104 + if (ageLimit != null && ageLimit.length > 2) {
  105 + this.ageLimit = Arrays.copyOfRange(ageLimit, 0, 2);
  106 + return;
  107 + }
  108 + this.ageLimit = ageLimit;
  109 + }
  110 +
  111 + public Integer getLevel() {
  112 + return level;
  113 + }
  114 +
  115 + public void setLevel(Integer level) {
  116 + this.level = level;
  117 + }
  118 +
  119 + public boolean isAndCondition() {
  120 + return andCondition;
  121 + }
  122 +
  123 + public void setAndCondition(boolean andCondition) {
  124 + this.andCondition = andCondition;
  125 + }
  126 +
  127 + public String getFrameNo() {
  128 + return frameNo;
  129 + }
  130 +
  131 + public void setFrameNo(String frameNo) {
  132 + this.frameNo = frameNo;
  133 + }
  134 +
  135 + public List<Long> getShopList() {
  136 + return shopList;
  137 + }
  138 +
  139 + public void setShopList(List<Long> shopList) {
  140 + this.shopList = shopList;
  141 + }
  142 +
  143 + public Long getGroupId() {
  144 + return groupId;
  145 + }
  146 +
  147 + public void setGroupId(Long groupId) {
  148 + this.groupId = groupId;
  149 + }
  150 +}
... ...
fw-valhalla-sdk/src/main/java/cn/fw/valhalla/sdk/result/CustomerSimpleInfoDto.java 0 → 100644
  1 +package cn.fw.valhalla.sdk.result;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.util.Date;
  6 +
  7 +/**
  8 + * @author kurisu
  9 + * @date 2020-08-27
  10 + */
  11 +@Data
  12 +public class CustomerSimpleInfoDto {
  13 + private Long id;
  14 + /**
  15 + * 会员id
  16 + */
  17 + private Long memberId;
  18 + /**
  19 + * 车牌号
  20 + */
  21 + private String plateNo;
  22 + /**
  23 + * 车架号
  24 + */
  25 + private String frameNo;
  26 + /**
  27 + * 发动机编号
  28 + */
  29 + private String engineNo;
  30 + /**
  31 + * 行驶证注册日期
  32 + */
  33 + private Date regDate;
  34 + /**
  35 + * 车型代码
  36 + */
  37 + private String specCode;
  38 + /**
  39 + * 品牌id
  40 + */
  41 + private Long brandId;
  42 + /**
  43 + * 品牌名称
  44 + */
  45 + private String brandName;
  46 + /**
  47 + * 车系id
  48 + */
  49 + private Long seriesId;
  50 + /**
  51 + * 车系名称
  52 + */
  53 + private String seriesName;
  54 + /**
  55 + * 车系id
  56 + */
  57 + private Long specId;
  58 + /**
  59 + * 车系名称
  60 + */
  61 + private String specName;
  62 + /**
  63 + * 车辆图片
  64 + */
  65 + private String carImage;
  66 + /**
  67 + * 标签
  68 + */
  69 + private String tags;
  70 + /**
  71 + * 客户星级
  72 + */
  73 + private Integer cusLevel;
  74 + /**
  75 + * 姓名
  76 + */
  77 + private String name;
  78 + /**
  79 + * 联系电话
  80 + */
  81 + private String mobile;
  82 + /**
  83 + * 保险到期日期
  84 + */
  85 + private Date insuranceExpireDate;
  86 + /**
  87 + * 当前行驶里程 单位KM
  88 + */
  89 + private Integer currentMileage;
  90 + /**
  91 + * 购车时间
  92 + */
  93 + private Date buyDate;
  94 + /**
  95 + * 所属服务站id
  96 + */
  97 + private Long shopId;
  98 + /**
  99 + * 所属商家id
  100 + */
  101 + private Long dealerId;
  102 + /**
  103 + * 所属集团
  104 + */
  105 + private Long groupId;
  106 + /**
  107 + * 专属服务顾问id
  108 + */
  109 + private Long adviserId;
  110 +}
0 111 \ No newline at end of file
... ...
fw-valhalla-server/src/main/java/cn/fw/valhalla/ValhallaApplication.java
... ... @@ -26,7 +26,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
26 26 @EnableAutoConfiguration
27 27 @Configuration
28 28 @EnableRedisRepositories
29   -@MapperScan("cn.fw.**.mapper")
  29 +@MapperScan("cn.fw.valhalla.dao.mapper")
30 30 @ComponentScan({"cn.fw.valhalla.*"})
31 31 @EnableFeignClients({"cn.fw.**.sdk", "cn.fw.flow.api"})
32 32 @EnableConfigurationProperties({UrlProperty.class})
... ...
fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/api/ValhallaGeneralApiServiceImpl.java
... ... @@ -2,10 +2,15 @@ package cn.fw.valhalla.controller.api;
2 2  
3 3 import cn.fw.common.web.annotation.ControllerMethod;
4 4 import cn.fw.data.base.domain.common.Message;
  5 +import cn.fw.valhalla.domain.dto.CustomerDetailDto;
5 6 import cn.fw.valhalla.sdk.api.ValhallaGeneralApiService;
  7 +import cn.fw.valhalla.sdk.param.CustomerQueryReq;
6 8 import cn.fw.valhalla.sdk.param.ReachLogReq;
  9 +import cn.fw.valhalla.sdk.result.CustomerSimpleInfoDto;
7 10 import cn.fw.valhalla.service.bus.ReachLogBizService;
  11 +import cn.fw.valhalla.service.bus.cust.CustomerBizService;
8 12 import lombok.extern.slf4j.Slf4j;
  13 +import org.springframework.beans.BeanUtils;
9 14 import org.springframework.beans.factory.annotation.Autowired;
10 15 import org.springframework.web.bind.annotation.PostMapping;
11 16 import org.springframework.web.bind.annotation.RequestBody;
... ... @@ -13,6 +18,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
13 18 import org.springframework.web.bind.annotation.RestController;
14 19  
15 20 import javax.validation.Valid;
  21 +import java.util.ArrayList;
  22 +import java.util.List;
16 23  
17 24 import static cn.fw.common.web.util.ResultBuilder.success;
18 25  
... ... @@ -28,10 +35,16 @@ import static cn.fw.common.web.util.ResultBuilder.success;
28 35 public class ValhallaGeneralApiServiceImpl implements ValhallaGeneralApiService {
29 36  
30 37 private final ReachLogBizService reachLogBizService;
  38 + /**
  39 + * 保有客数据服务
  40 + */
  41 + private final CustomerBizService customerBiz;
31 42  
32 43 @Autowired
33   - public ValhallaGeneralApiServiceImpl(final ReachLogBizService reachLogBizService) {
  44 + public ValhallaGeneralApiServiceImpl(final ReachLogBizService reachLogBizService,
  45 + final CustomerBizService customerBiz) {
34 46 this.reachLogBizService = reachLogBizService;
  47 + this.customerBiz = customerBiz;
35 48 }
36 49  
37 50 @PostMapping("/reach/save")
... ... @@ -41,4 +54,18 @@ public class ValhallaGeneralApiServiceImpl implements ValhallaGeneralApiService
41 54 reachLogBizService.saveReachLog(reachLogReq);
42 55 return success();
43 56 }
  57 +
  58 + @Override
  59 + @PostMapping("/query/customer/list")
  60 + @ControllerMethod("查询保有客档案列表")
  61 + public Message<List<CustomerSimpleInfoDto>> queryCustomList(@Valid @RequestBody CustomerQueryReq customerQueryReq) {
  62 + List<CustomerDetailDto> list = customerBiz.queryCustomList(customerQueryReq);
  63 + List<CustomerSimpleInfoDto> dtoList = new ArrayList<>();
  64 + for (CustomerDetailDto customer : list) {
  65 + CustomerSimpleInfoDto dto = new CustomerSimpleInfoDto();
  66 + BeanUtils.copyProperties(customer, dto);
  67 + dtoList.add(dto);
  68 + }
  69 + return success(dtoList);
  70 + }
44 71 }
... ...
fw-valhalla-server/src/main/resources/application-local.yml
... ... @@ -4,7 +4,7 @@ logging:
4 4 max-size: 1GB
5 5 level:
6 6 root: info
7   - cn.fw: info
  7 + cn.fw: debug
8 8 org.zalando.logbook: trace
9 9 nacos:
10 10 plugin:
... ...
fw-valhalla-service/src/main/java/cn/fw/valhalla/service/bus/cust/CustomerBizService.java
... ... @@ -16,6 +16,7 @@ import cn.fw.valhalla.domain.db.pool.PublicPool;
16 16 import cn.fw.valhalla.domain.db.pool.StammkundePool;
17 17 import cn.fw.valhalla.domain.dto.CustomerDetailDto;
18 18 import cn.fw.valhalla.domain.enums.*;
  19 +import cn.fw.valhalla.domain.query.CustomCustomerQuery;
19 20 import cn.fw.valhalla.domain.query.CustomerQueryVO;
20 21 import cn.fw.valhalla.domain.query.StammkundeAnalyseQueryVO;
21 22 import cn.fw.valhalla.domain.vo.customer.*;
... ... @@ -31,6 +32,7 @@ import cn.fw.valhalla.rpc.member.dto.MemberUserDTO;
31 32 import cn.fw.valhalla.rpc.oop.dto.ShopDTO;
32 33 import cn.fw.valhalla.rpc.oop.dto.SpecDTO;
33 34 import cn.fw.valhalla.sdk.param.CustomerParams;
  35 +import cn.fw.valhalla.sdk.param.CustomerQueryReq;
34 36 import cn.fw.valhalla.sdk.result.CustomerInfoDto;
35 37 import cn.fw.valhalla.sdk.result.ReceptionResultDto;
36 38 import cn.fw.valhalla.service.bus.StammkundeBizService;
... ... @@ -84,6 +86,7 @@ public class CustomerBizService extends AbstractCustomerService {
84 86 private final SettingBizService settingBizService;
85 87 private final FollowRecordService followRecordService;
86 88 private final StammkundeBizService stammkundeBizService;
  89 + private final FollowTaskService followTaskService;
87 90  
88 91 @Value("${spring.cache.custom.global-prefix}:customer")
89 92 @Getter
... ... @@ -349,6 +352,19 @@ public class CustomerBizService extends AbstractCustomerService {
349 352 }
350 353  
351 354 /**
  355 + * 根据自定义条件查询保有客档案
  356 + *
  357 + * @param queryReq
  358 + * @return
  359 + */
  360 + public List<CustomerDetailDto> queryCustomList(final CustomerQueryReq queryReq) {
  361 +
  362 + CustomCustomerQuery query = fillParams(queryReq);
  363 +
  364 + return customerService.queryCustomList(query);
  365 + }
  366 +
  367 + /**
352 368 * 根据手机号查询所有档案
353 369 *
354 370 * @param mobile
... ... @@ -780,4 +796,38 @@ public class CustomerBizService extends AbstractCustomerService {
780 796 vo.setPeriods(loanInfo.getPeriods());
781 797 }
782 798 }
  799 +
  800 + private CustomCustomerQuery fillParams(final CustomerQueryReq queryReq) {
  801 + CustomCustomerQuery query = new CustomCustomerQuery();
  802 + BeanUtils.copyProperties(queryReq, query);
  803 +
  804 +
  805 + if (queryReq.getArrivalMileage() != null && queryReq.getArrivalMileage().length > 0) {
  806 + for (int i = 0; i < queryReq.getArrivalMileage().length; i++) {
  807 + if (i == 0) {
  808 + query.setMinMileage(queryReq.getArrivalMileage()[i]);
  809 + }
  810 + if (i == 1) {
  811 + query.setMaxMileage(queryReq.getArrivalMileage()[i]);
  812 + }
  813 + }
  814 + }
  815 +
  816 + if (queryReq.getAgeLimit() != null && queryReq.getAgeLimit().length > 0) {
  817 + for (int i = 0; i < queryReq.getAgeLimit().length; i++) {
  818 + if (i == 0) {
  819 + query.setMaxBuyDate(LocalDate.now().plusYears(-1L * queryReq.getAgeLimit()[i]));
  820 + }
  821 + if (i == 1) {
  822 + query.setMinBuyDate(LocalDate.now().plusYears(-1L * queryReq.getAgeLimit()[i]));
  823 + }
  824 + }
  825 + }
  826 +
  827 + if (Objects.nonNull(queryReq.getFollowType())) {
  828 + query.setFollowType(queryReq.getFollowType().getValue());
  829 + }
  830 +
  831 + return query;
  832 + }
783 833 }
... ...
fw-valhalla-service/src/main/java/cn/fw/valhalla/service/data/CustomerService.java
1 1 package cn.fw.valhalla.service.data;
2 2  
3 3 import cn.fw.valhalla.domain.db.customer.Customer;
  4 +import cn.fw.valhalla.domain.dto.CustomerDetailDto;
4 5 import cn.fw.valhalla.domain.dto.StammkundeAnalyseDTO;
  6 +import cn.fw.valhalla.domain.query.CustomCustomerQuery;
5 7 import cn.fw.valhalla.domain.query.CustomerQueryVO;
6 8 import cn.fw.valhalla.domain.query.StammkundeAnalyseQueryVO;
7 9 import cn.fw.valhalla.domain.vo.customer.CustomerListVO;
... ... @@ -110,4 +112,12 @@ public interface CustomerService extends IService&lt;Customer&gt; {
110 112 * @return
111 113 */
112 114 List<StammkundeAnalyseDTO> analyseList(StammkundeAnalyseQueryVO queryVO);
  115 +
  116 + /**
  117 + * 查询自定义参数的档案信息
  118 + *
  119 + * @param query
  120 + * @return
  121 + */
  122 + List<CustomerDetailDto> queryCustomList(CustomCustomerQuery query);
113 123 }
... ...
fw-valhalla-service/src/main/java/cn/fw/valhalla/service/data/FollowTaskService.java
... ... @@ -56,4 +56,13 @@ public interface FollowTaskService extends IService&lt;FollowTask&gt; {
56 56 * @return
57 57 */
58 58 FollowTask queryOngoingTaskByClueId(Long clueId);
  59 +
  60 + /**
  61 + * 查询是否有正在进行中的跟进任务
  62 + *
  63 + * @param customerId
  64 + * @param followType
  65 + * @return
  66 + */
  67 + boolean hasOngoingTask(Long customerId, Integer followType);
59 68 }
... ...
fw-valhalla-service/src/main/java/cn/fw/valhalla/service/data/impl/CustomerServiceImpl.java
... ... @@ -2,7 +2,9 @@ package cn.fw.valhalla.service.data.impl;
2 2  
3 3 import cn.fw.valhalla.dao.mapper.CustomerMapper;
4 4 import cn.fw.valhalla.domain.db.customer.Customer;
  5 +import cn.fw.valhalla.domain.dto.CustomerDetailDto;
5 6 import cn.fw.valhalla.domain.dto.StammkundeAnalyseDTO;
  7 +import cn.fw.valhalla.domain.query.CustomCustomerQuery;
6 8 import cn.fw.valhalla.domain.query.CustomerQueryVO;
7 9 import cn.fw.valhalla.domain.query.StammkundeAnalyseQueryVO;
8 10 import cn.fw.valhalla.domain.vo.customer.CustomerListVO;
... ... @@ -17,7 +19,6 @@ import org.springframework.util.CollectionUtils;
17 19  
18 20 import java.util.ArrayList;
19 21 import java.util.List;
20   -import java.util.Objects;
21 22 import java.util.Optional;
22 23  
23 24 /**
... ... @@ -119,4 +120,9 @@ public class CustomerServiceImpl extends ServiceImpl&lt;CustomerMapper, Customer&gt; i
119 120 List<StammkundeAnalyseDTO> list = this.getBaseMapper().analyseList(queryVO);
120 121 return Optional.ofNullable(list).orElse(new ArrayList<>());
121 122 }
  123 +
  124 + @Override
  125 + public List<CustomerDetailDto> queryCustomList(CustomCustomerQuery query) {
  126 + return Optional.ofNullable(getBaseMapper().queryCustomList(query)).orElse(new ArrayList<>());
  127 + }
122 128 }
... ...
fw-valhalla-service/src/main/java/cn/fw/valhalla/service/data/impl/FollowTaskServiceImpl.java
... ... @@ -3,11 +3,9 @@ package cn.fw.valhalla.service.data.impl;
3 3 import cn.fw.valhalla.dao.mapper.FollowTaskMapper;
4 4 import cn.fw.valhalla.domain.db.follow.FollowTask;
5 5 import cn.fw.valhalla.domain.dto.FollowPoolDTO;
6   -import cn.fw.valhalla.domain.dto.StammkundeAnalyseDTO;
7 6 import cn.fw.valhalla.domain.enums.FollowTypeEnum;
8 7 import cn.fw.valhalla.domain.enums.TaskStateEnum;
9 8 import cn.fw.valhalla.domain.query.FollowPoolQueryVO;
10   -import cn.fw.valhalla.domain.query.StammkundeAnalyseQueryVO;
11 9 import cn.fw.valhalla.service.data.FollowTaskService;
12 10 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
13 11 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
... ... @@ -67,4 +65,13 @@ public class FollowTaskServiceImpl extends ServiceImpl&lt;FollowTaskMapper, FollowT
67 65 .last(" limit 1")
68 66 );
69 67 }
  68 +
  69 + @Override
  70 + public boolean hasOngoingTask(Long customerId, Integer followType) {
  71 + return count(Wrappers.<FollowTask>lambdaQuery()
  72 + .eq(FollowTask::getCustomerId, customerId)
  73 + .eq(FollowTask::getState, TaskStateEnum.ONGOING)
  74 + .eq(FollowTask::getType, followType)
  75 + ) > 0;
  76 + }
70 77 }
... ...
... ... @@ -117,7 +117,7 @@
117 117 <dependency>
118 118 <groupId>cn.fw</groupId>
119 119 <artifactId>fw-valhalla-sdk</artifactId>
120   - <version>1.1.4</version>
  120 + <version>1.1.5</version>
121 121 </dependency>
122 122 <dependency>
123 123 <groupId>cn.fw</groupId>
... ...