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 15 // ========== 线索管理 1-020-001-000 ==========
16 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 21 // TODO @liuhongfeng:错误码分段;
22 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 11 @EqualsAndHashCode(callSuper = true)
12 12 @ToString(callSuper = true)
13 13 public class CrmCluePageReqVO extends PageParam {
  14 +
14 15 @Schema(description = "线索名称", example = "线索xxx")
15 16 private String name;
16 17  
... ... @@ -19,4 +20,5 @@ public class CrmCluePageReqVO extends PageParam {
19 20  
20 21 @Schema(description = "手机号", example = "18000000000")
21 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 1 package cn.iocoder.yudao.module.crm.controller.admin.clue.vo;
2 2  
3 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 10 @Schema(description = "管理后台 - 线索更新 Request VO")
9 11 @Data
... ... @@ -11,8 +13,8 @@ import javax.validation.constraints.*;
11 13 @ToString(callSuper = true)
12 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 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 25  
26 26 CrmClueRespVO convert(CrmClueDO bean);
27 27  
28   - List<CrmClueRespVO> convertList(List<CrmClueDO> list);
29   -
30 28 PageResult<CrmClueRespVO> convertPage(PageResult<CrmClueDO> page);
31 29  
32 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 4 import com.baomidou.mybatisplus.annotation.KeySequence;
5 5 import com.baomidou.mybatisplus.annotation.TableId;
6 6 import com.baomidou.mybatisplus.annotation.TableName;
7   -import com.sun.xml.bind.v2.TODO;
8 7 import lombok.*;
9 8  
10 9 import java.time.LocalDateTime;
... ... @@ -32,14 +31,10 @@ public class CrmClueDO extends BaseDO {
32 31 private Long id;
33 32 /**
34 33 * 转化状态
35   - *
36   - * 枚举 {@link TODO infra_boolean_string 对应的类}
37 34 */
38 35 private Boolean transformStatus;
39 36 /**
40 37 * 跟进状态
41   - *
42   - * 枚举 {@link TODO infra_boolean_string 对应的类}
43 38 */
44 39 private Boolean followUpStatus;
45 40 /**
... ... @@ -47,7 +42,9 @@ public class CrmClueDO extends BaseDO {
47 42 */
48 43 private String name;
49 44 /**
50   - * 客户id
  45 + * 客户 id
  46 + *
  47 + * // TODO @wanwan:要写下关联的实体,以及对应的属性哈
51 48 */
52 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 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 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 10 import cn.iocoder.yudao.module.crm.convert.clue.CrmClueConvert;
  11 +import cn.iocoder.yudao.module.crm.dal.dataobject.clue.CrmClueDO;
13 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 24 * 线索 Service 实现类
... ... @@ -32,6 +34,7 @@ public class CrmClueServiceImpl implements CrmClueService {
32 34  
33 35 @Override
34 36 public Long createClue(CrmClueCreateReqVO createReqVO) {
  37 + // TODO @wanwan:校验客户是否存在;以及类似的逻辑哈;如果目前还缺对应的模块的 service,可以先给自己写 todo;
35 38 // 插入
36 39 CrmClueDO clue = CrmClueConvert.INSTANCE.convert(createReqVO);
37 40 clueMapper.insert(clue);
... ... @@ -41,8 +44,10 @@ public class CrmClueServiceImpl implements CrmClueService {
41 44  
42 45 @Override
43 46 public void updateClue(CrmClueUpdateReqVO updateReqVO) {
  47 + // TODO @wanwan:校验客户是否存在;以及类似的逻辑哈;如果目前还缺对应的模块的 service,可以先给自己写 todo;
44 48 // 校验存在
45 49 validateClueExists(updateReqVO.getId());
  50 +
46 51 // 更新
47 52 CrmClueDO updateObj = CrmClueConvert.INSTANCE.convert(updateReqVO);
48 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 144 clueMapper.insert(cloneIgnoreId(dbClue, o -> o.setCreateTime(null)));
145 145 // 准备参数
146 146 CrmCluePageReqVO reqVO = new CrmCluePageReqVO();
147   - reqVO.setTransformStatus(null);
148   - reqVO.setFollowUpStatus(null);
149 147 reqVO.setName(null);
150   - reqVO.setCustomerId(null);
151   - reqVO.setContactNextTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
152 148 reqVO.setTelephone(null);
153 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 152 PageResult<CrmClueDO> pageResult = clueService.getCluePage(reqVO);
... ...