Commit 55f9e0131c85f27a65d3a2404866543630076f8d
1 parent
723707c7
code review:CRM 客户联系人的管理
Showing
4 changed files
with
46 additions
and
27 deletions
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); |