Commit 55f9e0131c85f27a65d3a2404866543630076f8d

Authored by YunaiV
1 parent 723707c7

code review:CRM 客户联系人的管理

yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/ContactBaseVO.java
1 package cn.iocoder.yudao.module.crm.controller.admin.contact.vo; 1 package cn.iocoder.yudao.module.crm.controller.admin.contact.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 java.time.LocalDateTime;  
7 -import java.time.LocalDateTime;  
8 -import java.time.LocalDateTime;  
9 -import javax.validation.constraints.*; 4 +import lombok.Data;
10 import org.springframework.format.annotation.DateTimeFormat; 5 import org.springframework.format.annotation.DateTimeFormat;
11 6
  7 +import javax.validation.constraints.NotNull;
  8 +import java.time.LocalDateTime;
  9 +
12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
13 11
14 /** 12 /**
@@ -18,6 +16,8 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @@ -18,6 +16,8 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
18 @Data 16 @Data
19 public class ContactBaseVO { 17 public class ContactBaseVO {
20 18
  19 + // TODO @zyna:部分字段,缺少 example,需要补充;
  20 +
21 @Schema(description = "联系人名称", example = "张三") 21 @Schema(description = "联系人名称", example = "张三")
22 @NotNull(message = "姓名不能为空") 22 @NotNull(message = "姓名不能为空")
23 private String name; 23 private String name;
@@ -25,18 +25,22 @@ public class ContactBaseVO { @@ -25,18 +25,22 @@ public class ContactBaseVO {
25 @Schema(description = "下次联系时间") 25 @Schema(description = "下次联系时间")
26 private LocalDateTime nextTime; 26 private LocalDateTime nextTime;
27 27
  28 + // TODO @zyna:缺少 validator 的校验
28 @Schema(description = "手机号") 29 @Schema(description = "手机号")
29 private String mobile; 30 private String mobile;
30 31
  32 + // TODO @zyna:缺少 validator 的校验
31 @Schema(description = "电话") 33 @Schema(description = "电话")
32 private String telephone; 34 private String telephone;
33 35
  36 + // TODO @zyna:缺少 validator 的校验
34 @Schema(description = "电子邮箱") 37 @Schema(description = "电子邮箱")
35 private String email; 38 private String email;
36 39
37 @Schema(description = "职务") 40 @Schema(description = "职务")
38 private String post; 41 private String post;
39 42
  43 + // TODO @zyna:非空校验
40 @Schema(description = "客户编号", example = "10795") 44 @Schema(description = "客户编号", example = "10795")
41 private Long customerId; 45 private Long customerId;
42 46
@@ -46,10 +50,12 @@ public class ContactBaseVO { @@ -46,10 +50,12 @@ public class ContactBaseVO {
46 @Schema(description = "备注", example = "你说的对") 50 @Schema(description = "备注", example = "你说的对")
47 private String remark; 51 private String remark;
48 52
  53 + // TODO @zyna:这个新建的时候,应该不会传递;而是后端默认设置自己为负责人;
49 @Schema(description = "负责人用户编号", example = "7648") 54 @Schema(description = "负责人用户编号", example = "7648")
50 private Long ownerUserId; 55 private Long ownerUserId;
51 56
52 @Schema(description = "最后跟进时间") 57 @Schema(description = "最后跟进时间")
53 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 58 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
54 private LocalDateTime lastTime; 59 private LocalDateTime lastTime;
  60 +
55 } 61 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/ContactPageReqVO.java
1 package cn.iocoder.yudao.module.crm.controller.admin.contact.vo; 1 package cn.iocoder.yudao.module.crm.controller.admin.contact.vo;
2 2
3 -import lombok.*;  
4 -import java.util.*;  
5 -import io.swagger.v3.oas.annotations.media.Schema;  
6 import cn.iocoder.yudao.framework.common.pojo.PageParam; 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
7 import org.springframework.format.annotation.DateTimeFormat; 8 import org.springframework.format.annotation.DateTimeFormat;
  9 +
8 import java.time.LocalDateTime; 10 import java.time.LocalDateTime;
9 11
10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -15,6 +17,8 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @@ -15,6 +17,8 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
15 @ToString(callSuper = true) 17 @ToString(callSuper = true)
16 public class ContactPageReqVO extends PageParam { 18 public class ContactPageReqVO extends PageParam {
17 19
  20 + // TODO @芋艿:需要查询的字段;
  21 +
18 @Schema(description = "联系人名称", example = "张三") 22 @Schema(description = "联系人名称", example = "张三")
19 private String name; 23 private String name;
20 24
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/contact/ContactDO.java
1 package cn.iocoder.yudao.module.crm.dal.dataobject.contact; 1 package cn.iocoder.yudao.module.crm.dal.dataobject.contact;
2 2
  3 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import com.baomidou.mybatisplus.annotation.KeySequence;
  5 +import com.baomidou.mybatisplus.annotation.TableId;
  6 +import com.baomidou.mybatisplus.annotation.TableName;
3 import lombok.*; 7 import lombok.*;
4 -import java.util.*;  
5 -import java.time.LocalDateTime;  
6 -import java.time.LocalDateTime; 8 +
7 import java.time.LocalDateTime; 9 import java.time.LocalDateTime;
8 -import com.baomidou.mybatisplus.annotation.*;  
9 -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;  
10 10
11 /** 11 /**
12 - * crm联系人 DO 12 + * crm 联系人 DO
13 * 13 *
14 * @author 芋道源码 14 * @author 芋道源码
15 */ 15 */
@@ -54,6 +54,8 @@ public class ContactDO extends BaseDO { @@ -54,6 +54,8 @@ public class ContactDO extends BaseDO {
54 private String post; 54 private String post;
55 /** 55 /**
56 * 客户编号 56 * 客户编号
  57 + *
  58 + * TODO @zyna:关联的字段,也要写下
57 */ 59 */
58 private Long customerId; 60 private Long customerId;
59 /** 61 /**
@@ -66,6 +68,8 @@ public class ContactDO extends BaseDO { @@ -66,6 +68,8 @@ public class ContactDO extends BaseDO {
66 private String remark; 68 private String remark;
67 /** 69 /**
68 * 负责人用户编号 70 * 负责人用户编号
  71 + *
  72 + * TODO @zyna:关联的字段,也要写下
69 */ 73 */
70 private Long ownerUserId; 74 private Long ownerUserId;
71 /** 75 /**
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/ContactServiceImpl.java
1 package cn.iocoder.yudao.module.crm.service.contact; 1 package cn.iocoder.yudao.module.crm.service.contact;
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.contact.vo.*;  
9 -import cn.iocoder.yudao.module.crm.dal.dataobject.contact.ContactDO; 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.contact.vo.ContactCreateReqVO;
  7 +import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.ContactExportReqVO;
  8 +import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.ContactPageReqVO;
  9 +import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.ContactUpdateReqVO;
12 import cn.iocoder.yudao.module.crm.convert.contact.ContactConvert; 10 import cn.iocoder.yudao.module.crm.convert.contact.ContactConvert;
  11 +import cn.iocoder.yudao.module.crm.dal.dataobject.contact.ContactDO;
13 import cn.iocoder.yudao.module.crm.dal.mysql.contact.ContactMapper; 12 import cn.iocoder.yudao.module.crm.dal.mysql.contact.ContactMapper;
  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.CONTACT_NOT_EXISTS;
20 22
21 /** 23 /**
22 * crm联系人 Service 实现类 24 * crm联系人 Service 实现类
@@ -32,6 +34,7 @@ public class ContactServiceImpl implements ContactService { @@ -32,6 +34,7 @@ public class ContactServiceImpl implements ContactService {
32 34
33 @Override 35 @Override
34 public Long createContact(ContactCreateReqVO createReqVO) { 36 public Long createContact(ContactCreateReqVO createReqVO) {
  37 + // TODO @customerId:需要校验存在
35 // 插入 38 // 插入
36 ContactDO contact = ContactConvert.INSTANCE.convert(createReqVO); 39 ContactDO contact = ContactConvert.INSTANCE.convert(createReqVO);
37 contactMapper.insert(contact); 40 contactMapper.insert(contact);
@@ -43,6 +46,8 @@ public class ContactServiceImpl implements ContactService { @@ -43,6 +46,8 @@ public class ContactServiceImpl implements ContactService {
43 public void updateContact(ContactUpdateReqVO updateReqVO) { 46 public void updateContact(ContactUpdateReqVO updateReqVO) {
44 // 校验存在 47 // 校验存在
45 validateContactExists(updateReqVO.getId()); 48 validateContactExists(updateReqVO.getId());
  49 + // TODO @customerId:需要校验存在
  50 +
46 // 更新 51 // 更新
47 ContactDO updateObj = ContactConvert.INSTANCE.convert(updateReqVO); 52 ContactDO updateObj = ContactConvert.INSTANCE.convert(updateReqVO);
48 contactMapper.updateById(updateObj); 53 contactMapper.updateById(updateObj);