Commit b5560fa0be71cdbda972fdc2d14510638a7ef6a1

Authored by YunaiV
1 parent 9cf4cfca

code review:CRM 线索表的逻辑

yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java
@@ -15,8 +15,8 @@ public interface ErrorCodeConstants { @@ -15,8 +15,8 @@ public interface ErrorCodeConstants {
15 // ========== 线索管理 1-020-001-000 ========== 15 // ========== 线索管理 1-020-001-000 ==========
16 ErrorCode CLUE_NOT_EXISTS = new ErrorCode(1_020_001_000, "线索不存在"); 16 ErrorCode CLUE_NOT_EXISTS = new ErrorCode(1_020_001_000, "线索不存在");
17 17
18 - // ========== 商机管理 1-020-001-000 ==========  
19 - ErrorCode BUSINESS_NOT_EXISTS = new ErrorCode(1_020_001_000, "商机不存在"); 18 + // ========== 商机管理 1-020-002-000 ==========
  19 + ErrorCode BUSINESS_NOT_EXISTS = new ErrorCode(1_020_002_000, "商机不存在");
20 20
21 // TODO @liuhongfeng:错误码分段; 21 // TODO @liuhongfeng:错误码分段;
22 ErrorCode RECEIVABLE_NOT_EXISTS = new ErrorCode(1_030_000_001, "回款管理不存在"); 22 ErrorCode RECEIVABLE_NOT_EXISTS = new ErrorCode(1_030_000_001, "回款管理不存在");
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/clue/vo/CrmCluePageReqVO.java
@@ -11,6 +11,7 @@ import lombok.ToString; @@ -11,6 +11,7 @@ import lombok.ToString;
11 @EqualsAndHashCode(callSuper = true) 11 @EqualsAndHashCode(callSuper = true)
12 @ToString(callSuper = true) 12 @ToString(callSuper = true)
13 public class CrmCluePageReqVO extends PageParam { 13 public class CrmCluePageReqVO extends PageParam {
  14 +
14 @Schema(description = "线索名称", example = "线索xxx") 15 @Schema(description = "线索名称", example = "线索xxx")
15 private String name; 16 private String name;
16 17
@@ -19,4 +20,5 @@ public class CrmCluePageReqVO extends PageParam { @@ -19,4 +20,5 @@ public class CrmCluePageReqVO extends PageParam {
19 20
20 @Schema(description = "手机号", example = "18000000000") 21 @Schema(description = "手机号", example = "18000000000")
21 private String mobile; 22 private String mobile;
  23 +
22 } 24 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/clue/vo/CrmClueUpdateReqVO.java
1 package cn.iocoder.yudao.module.crm.controller.admin.clue.vo; 1 package cn.iocoder.yudao.module.crm.controller.admin.clue.vo;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 -import lombok.*;  
5 -import java.util.*;  
6 -import javax.validation.constraints.*; 4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +import lombok.ToString;
  7 +
  8 +import javax.validation.constraints.NotNull;
7 9
8 @Schema(description = "管理后台 - 线索更新 Request VO") 10 @Schema(description = "管理后台 - 线索更新 Request VO")
9 @Data 11 @Data
@@ -11,8 +13,8 @@ import javax.validation.constraints.*; @@ -11,8 +13,8 @@ import javax.validation.constraints.*;
11 @ToString(callSuper = true) 13 @ToString(callSuper = true)
12 public class CrmClueUpdateReqVO extends CrmClueBaseVO { 14 public class CrmClueUpdateReqVO extends CrmClueBaseVO {
13 15
14 - @Schema(description = "编号,主键自增", requiredMode = Schema.RequiredMode.REQUIRED, example = "10969")  
15 - @NotNull(message = "编号,主键自增不能为空") 16 + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10969")
  17 + @NotNull(message = "编号不能为空")
16 private Long id; 18 private Long id;
17 19
18 } 20 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/clue/CrmClueConvert.java
@@ -25,8 +25,6 @@ public interface CrmClueConvert { @@ -25,8 +25,6 @@ public interface CrmClueConvert {
25 25
26 CrmClueRespVO convert(CrmClueDO bean); 26 CrmClueRespVO convert(CrmClueDO bean);
27 27
28 - List<CrmClueRespVO> convertList(List<CrmClueDO> list);  
29 -  
30 PageResult<CrmClueRespVO> convertPage(PageResult<CrmClueDO> page); 28 PageResult<CrmClueRespVO> convertPage(PageResult<CrmClueDO> page);
31 29
32 List<CrmClueExcelVO> convertList02(List<CrmClueDO> list); 30 List<CrmClueExcelVO> convertList02(List<CrmClueDO> list);
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/clue/CrmClueDO.java
@@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4 import com.baomidou.mybatisplus.annotation.KeySequence; 4 import com.baomidou.mybatisplus.annotation.KeySequence;
5 import com.baomidou.mybatisplus.annotation.TableId; 5 import com.baomidou.mybatisplus.annotation.TableId;
6 import com.baomidou.mybatisplus.annotation.TableName; 6 import com.baomidou.mybatisplus.annotation.TableName;
7 -import com.sun.xml.bind.v2.TODO;  
8 import lombok.*; 7 import lombok.*;
9 8
10 import java.time.LocalDateTime; 9 import java.time.LocalDateTime;
@@ -32,14 +31,10 @@ public class CrmClueDO extends BaseDO { @@ -32,14 +31,10 @@ public class CrmClueDO extends BaseDO {
32 private Long id; 31 private Long id;
33 /** 32 /**
34 * 转化状态 33 * 转化状态
35 - *  
36 - * 枚举 {@link TODO infra_boolean_string 对应的类}  
37 */ 34 */
38 private Boolean transformStatus; 35 private Boolean transformStatus;
39 /** 36 /**
40 * 跟进状态 37 * 跟进状态
41 - *  
42 - * 枚举 {@link TODO infra_boolean_string 对应的类}  
43 */ 38 */
44 private Boolean followUpStatus; 39 private Boolean followUpStatus;
45 /** 40 /**
@@ -47,7 +42,9 @@ public class CrmClueDO extends BaseDO { @@ -47,7 +42,9 @@ public class CrmClueDO extends BaseDO {
47 */ 42 */
48 private String name; 43 private String name;
49 /** 44 /**
50 - * 客户id 45 + * 客户 id
  46 + *
  47 + * // TODO @wanwan:要写下关联的实体,以及对应的属性哈
51 */ 48 */
52 private Long customerId; 49 private Long customerId;
53 /** 50 /**
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/clue/CrmClueServiceImpl.java
1 package cn.iocoder.yudao.module.crm.service.clue; 1 package cn.iocoder.yudao.module.crm.service.clue;
2 2
3 -import org.springframework.stereotype.Service;  
4 -import javax.annotation.Resource;  
5 -import org.springframework.validation.annotation.Validated;  
6 -  
7 -import java.util.*;  
8 -import cn.iocoder.yudao.module.crm.controller.admin.clue.vo.*;  
9 -import cn.iocoder.yudao.module.crm.dal.dataobject.clue.CrmClueDO; 3 +import cn.hutool.core.collection.CollUtil;
  4 +import cn.hutool.core.collection.ListUtil;
10 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
11 - 6 +import cn.iocoder.yudao.module.crm.controller.admin.clue.vo.CrmClueCreateReqVO;
  7 +import cn.iocoder.yudao.module.crm.controller.admin.clue.vo.CrmClueExportReqVO;
  8 +import cn.iocoder.yudao.module.crm.controller.admin.clue.vo.CrmCluePageReqVO;
  9 +import cn.iocoder.yudao.module.crm.controller.admin.clue.vo.CrmClueUpdateReqVO;
12 import cn.iocoder.yudao.module.crm.convert.clue.CrmClueConvert; 10 import cn.iocoder.yudao.module.crm.convert.clue.CrmClueConvert;
  11 +import cn.iocoder.yudao.module.crm.dal.dataobject.clue.CrmClueDO;
13 import cn.iocoder.yudao.module.crm.dal.mysql.clue.CrmClueMapper; 12 import cn.iocoder.yudao.module.crm.dal.mysql.clue.CrmClueMapper;
  13 +import org.springframework.stereotype.Service;
  14 +import org.springframework.validation.annotation.Validated;
14 15
15 -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;  
16 -import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; 16 +import javax.annotation.Resource;
  17 +import java.util.Collection;
  18 +import java.util.List;
17 19
18 -import cn.hutool.core.collection.CollUtil;  
19 -import cn.hutool.core.collection.ListUtil; 20 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  21 +import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.CLUE_NOT_EXISTS;
20 22
21 /** 23 /**
22 * 线索 Service 实现类 24 * 线索 Service 实现类
@@ -32,6 +34,7 @@ public class CrmClueServiceImpl implements CrmClueService { @@ -32,6 +34,7 @@ public class CrmClueServiceImpl implements CrmClueService {
32 34
33 @Override 35 @Override
34 public Long createClue(CrmClueCreateReqVO createReqVO) { 36 public Long createClue(CrmClueCreateReqVO createReqVO) {
  37 + // TODO @wanwan:校验客户是否存在;以及类似的逻辑哈;如果目前还缺对应的模块的 service,可以先给自己写 todo;
35 // 插入 38 // 插入
36 CrmClueDO clue = CrmClueConvert.INSTANCE.convert(createReqVO); 39 CrmClueDO clue = CrmClueConvert.INSTANCE.convert(createReqVO);
37 clueMapper.insert(clue); 40 clueMapper.insert(clue);
@@ -41,8 +44,10 @@ public class CrmClueServiceImpl implements CrmClueService { @@ -41,8 +44,10 @@ public class CrmClueServiceImpl implements CrmClueService {
41 44
42 @Override 45 @Override
43 public void updateClue(CrmClueUpdateReqVO updateReqVO) { 46 public void updateClue(CrmClueUpdateReqVO updateReqVO) {
  47 + // TODO @wanwan:校验客户是否存在;以及类似的逻辑哈;如果目前还缺对应的模块的 service,可以先给自己写 todo;
44 // 校验存在 48 // 校验存在
45 validateClueExists(updateReqVO.getId()); 49 validateClueExists(updateReqVO.getId());
  50 +
46 // 更新 51 // 更新
47 CrmClueDO updateObj = CrmClueConvert.INSTANCE.convert(updateReqVO); 52 CrmClueDO updateObj = CrmClueConvert.INSTANCE.convert(updateReqVO);
48 clueMapper.updateById(updateObj); 53 clueMapper.updateById(updateObj);
yudao-module-crm/yudao-module-crm-biz/src/test/java/cn/iocoder/yudao/module/crm/service/clue/CrmClueServiceImplTest.java
@@ -144,17 +144,9 @@ public class CrmClueServiceImplTest extends BaseDbUnitTest { @@ -144,17 +144,9 @@ public class CrmClueServiceImplTest extends BaseDbUnitTest {
144 clueMapper.insert(cloneIgnoreId(dbClue, o -> o.setCreateTime(null))); 144 clueMapper.insert(cloneIgnoreId(dbClue, o -> o.setCreateTime(null)));
145 // 准备参数 145 // 准备参数
146 CrmCluePageReqVO reqVO = new CrmCluePageReqVO(); 146 CrmCluePageReqVO reqVO = new CrmCluePageReqVO();
147 - reqVO.setTransformStatus(null);  
148 - reqVO.setFollowUpStatus(null);  
149 reqVO.setName(null); 147 reqVO.setName(null);
150 - reqVO.setCustomerId(null);  
151 - reqVO.setContactNextTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));  
152 reqVO.setTelephone(null); 148 reqVO.setTelephone(null);
153 reqVO.setMobile(null); 149 reqVO.setMobile(null);
154 - reqVO.setAddress(null);  
155 - reqVO.setOwnerUserId(null);  
156 - reqVO.setContactLastTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));  
157 - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));  
158 150
159 // 调用 151 // 调用
160 PageResult<CrmClueDO> pageResult = clueService.getCluePage(reqVO); 152 PageResult<CrmClueDO> pageResult = clueService.getCluePage(reqVO);