Commit 18c8a11a89460a65347bfb482ba561fc288cfc23

Authored by 芋道源码
Committed by Gitee
2 parents 63f9bcb0 fbf864b6

!751 feat: 客户配置 review 修改

Merge pull request !751 from wanwan/feature/crm
Showing 22 changed files with 113 additions and 66 deletions
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java
@@ -38,9 +38,6 @@ public interface ErrorCodeConstants { @@ -38,9 +38,6 @@ public interface ErrorCodeConstants {
38 ErrorCode CUSTOMER_NOT_IN_POOL = new ErrorCode(1_020_006_004, "客户领取失败,原因:不是公海客户"); 38 ErrorCode CUSTOMER_NOT_IN_POOL = new ErrorCode(1_020_006_004, "客户领取失败,原因:不是公海客户");
39 ErrorCode CUSTOMER_IN_POOL = new ErrorCode(1_020_006_005, "客户放入公海失败,原因:已经是公海客户"); 39 ErrorCode CUSTOMER_IN_POOL = new ErrorCode(1_020_006_005, "客户放入公海失败,原因:已经是公海客户");
40 ErrorCode CUSTOMER_LOCKED_PUT_POOL_FAIL = new ErrorCode(1_020_006_006, "客户放入公海失败,原因:客户已锁定"); 40 ErrorCode CUSTOMER_LOCKED_PUT_POOL_FAIL = new ErrorCode(1_020_006_006, "客户放入公海失败,原因:客户已锁定");
41 - // TODO @wanwan:这 2 个单独配置段噢  
42 - ErrorCode CUSTOMER_POOL_CONFIG_ERROR = new ErrorCode(1_020_006_001, "客户公海规则设置不正确");  
43 - ErrorCode CUSTOMER_LIMIT_CONFIG_NOT_EXISTS = new ErrorCode(1_020_006_002, "客户限制配置不存在");  
44 41
45 // ========== 权限管理 1_020_007_000 ========== 42 // ========== 权限管理 1_020_007_000 ==========
46 ErrorCode CRM_PERMISSION_NOT_EXISTS = new ErrorCode(1_020_007_000, "数据权限不存在"); 43 ErrorCode CRM_PERMISSION_NOT_EXISTS = new ErrorCode(1_020_007_000, "数据权限不存在");
@@ -66,4 +63,6 @@ public interface ErrorCodeConstants { @@ -66,4 +63,6 @@ public interface ErrorCodeConstants {
66 // ========== 商机状态 1_020_011_000 ========== 63 // ========== 商机状态 1_020_011_000 ==========
67 ErrorCode BUSINESS_STATUS_NOT_EXISTS = new ErrorCode(1_020_011_000, "商机状态不存在"); 64 ErrorCode BUSINESS_STATUS_NOT_EXISTS = new ErrorCode(1_020_011_000, "商机状态不存在");
68 65
  66 + // ========== 客户公海规则设置 1_020_011_000 ==========
  67 + ErrorCode CUSTOMER_LIMIT_CONFIG_NOT_EXISTS = new ErrorCode(1_020_012_000, "客户限制配置不存在");
69 } 68 }
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/customer/LimitConfigTypeEnum.java 0 → 100644
  1 +package cn.iocoder.yudao.module.crm.enums.customer;
  2 +
  3 +import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
  4 +import lombok.AllArgsConstructor;
  5 +import lombok.Getter;
  6 +
  7 +import java.util.Arrays;
  8 +
  9 +/**
  10 + * CRM 客户限制配置规则类型
  11 + *
  12 + * @author Wanwan
  13 + */
  14 +@Getter
  15 +@AllArgsConstructor
  16 +public enum LimitConfigTypeEnum implements IntArrayValuable {
  17 +
  18 + /**
  19 + * 拥有客户数限制
  20 + */
  21 + CUSTOMER_QUANTITY_LIMIT(1, "拥有客户数限制"),
  22 + /**
  23 + * 锁定客户数限制
  24 + */
  25 + CUSTOMER_LOCK_LIMIT(2, "锁定客户数限制"),
  26 + ;
  27 +
  28 + public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(LimitConfigTypeEnum::getCode).toArray();
  29 +
  30 + /**
  31 + * 状态
  32 + */
  33 + private final Integer code;
  34 + /**
  35 + * 状态名
  36 + */
  37 + private final String name;
  38 +
  39 + @Override
  40 + public int[] array() {
  41 + return ARRAYS;
  42 + }
  43 +}
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerLimitConfigController.java
@@ -3,10 +3,10 @@ package cn.iocoder.yudao.module.crm.controller.admin.customer; @@ -3,10 +3,10 @@ package cn.iocoder.yudao.module.crm.controller.admin.customer;
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigCreateReqVO;  
7 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigPageReqVO;  
8 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigRespVO;  
9 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigUpdateReqVO; 6 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigCreateReqVO;
  7 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigPageReqVO;
  8 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigRespVO;
  9 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigUpdateReqVO;
10 import cn.iocoder.yudao.module.crm.convert.customer.CrmCustomerLimitConfigConvert; 10 import cn.iocoder.yudao.module.crm.convert.customer.CrmCustomerLimitConfigConvert;
11 import cn.iocoder.yudao.module.crm.dal.dataobject.customerlimitconfig.CrmCustomerLimitConfigDO; 11 import cn.iocoder.yudao.module.crm.dal.dataobject.customerlimitconfig.CrmCustomerLimitConfigDO;
12 import cn.iocoder.yudao.module.crm.service.customerlimitconfig.CrmCustomerLimitConfigService; 12 import cn.iocoder.yudao.module.crm.service.customerlimitconfig.CrmCustomerLimitConfigService;
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerPoolConfigController.java
1 package cn.iocoder.yudao.module.crm.controller.admin.customer; 1 package cn.iocoder.yudao.module.crm.controller.admin.customer;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerPoolConfigRespVO;  
5 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerPoolConfigUpdateReqVO; 4 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.poolconfig.CrmCustomerPoolConfigRespVO;
  5 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.poolconfig.CrmCustomerPoolConfigUpdateReqVO;
6 import cn.iocoder.yudao.module.crm.convert.customer.CrmCustomerConvert; 6 import cn.iocoder.yudao.module.crm.convert.customer.CrmCustomerConvert;
7 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO; 7 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO;
8 import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerPoolConfigService; 8 import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerPoolConfigService;
@@ -34,11 +34,10 @@ public class CrmCustomerPoolConfigController { @@ -34,11 +34,10 @@ public class CrmCustomerPoolConfigController {
34 return success(CrmCustomerConvert.INSTANCE.convert(customerPoolConfig)); 34 return success(CrmCustomerConvert.INSTANCE.convert(customerPoolConfig));
35 } 35 }
36 36
37 - // TODO @wanwan:这个请求,搞成 save 哈;  
38 - @PutMapping("/update") 37 + @PutMapping("/save")
39 @Operation(summary = "更新客户公海规则设置") 38 @Operation(summary = "更新客户公海规则设置")
40 @PreAuthorize("@ss.hasPermission('crm:customer-pool-config:update')") 39 @PreAuthorize("@ss.hasPermission('crm:customer-pool-config:update')")
41 - public CommonResult<Boolean> updateCustomerPoolConfig(@Valid @RequestBody CrmCustomerPoolConfigUpdateReqVO updateReqVO) { 40 + public CommonResult<Boolean> saveCustomerPoolConfig(@Valid @RequestBody CrmCustomerPoolConfigUpdateReqVO updateReqVO) {
42 customerPoolConfigService.updateCustomerPoolConfig(updateReqVO); 41 customerPoolConfigService.updateCustomerPoolConfig(updateReqVO);
43 return success(true); 42 return success(true);
44 } 43 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerLimitConfigBaseVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/limitconfig/CrmCustomerLimitConfigBaseVO.java
1 -package cn.iocoder.yudao.module.crm.controller.admin.customer.vo; 1 +package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
@@ -6,7 +6,6 @@ import lombok.Data; @@ -6,7 +6,6 @@ import lombok.Data;
6 import javax.validation.constraints.NotNull; 6 import javax.validation.constraints.NotNull;
7 import java.util.List; 7 import java.util.List;
8 8
9 -// TODO @wanwan:vo 下,可以新建一个 limitconfig,放它的 vo;  
10 /** 9 /**
11 * 客户限制配置 Base VO,提供给添加、修改、详细的子 VO 使用 10 * 客户限制配置 Base VO,提供给添加、修改、详细的子 VO 使用
12 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 11 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerLimitConfigCreateReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/limitconfig/CrmCustomerLimitConfigCreateReqVO.java
1 -package cn.iocoder.yudao.module.crm.controller.admin.customer.vo; 1 +package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerLimitConfigPageReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/limitconfig/CrmCustomerLimitConfigPageReqVO.java
1 -package cn.iocoder.yudao.module.crm.controller.admin.customer.vo; 1 +package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig;
2 2
3 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; 4 import io.swagger.v3.oas.annotations.media.Schema;
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerLimitConfigRespVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/limitconfig/CrmCustomerLimitConfigRespVO.java
1 -package cn.iocoder.yudao.module.crm.controller.admin.customer.vo; 1 +package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig;
2 2
  3 +import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
  4 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
3 import io.swagger.v3.oas.annotations.media.Schema; 5 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 6 import lombok.Data;
5 import lombok.EqualsAndHashCode; 7 import lombok.EqualsAndHashCode;
@@ -18,10 +20,10 @@ public class CrmCustomerLimitConfigRespVO extends CrmCustomerLimitConfigBaseVO { @@ -18,10 +20,10 @@ public class CrmCustomerLimitConfigRespVO extends CrmCustomerLimitConfigBaseVO {
18 private Long id; 20 private Long id;
19 21
20 @Schema(description = "规则适用人群名称") 22 @Schema(description = "规则适用人群名称")
21 - private String userNames; 23 + private List<AdminUserRespDTO> users;
22 24
23 @Schema(description = "规则适用部门名称") 25 @Schema(description = "规则适用部门名称")
24 - private String deptNames; 26 + private List<DeptRespDTO> depts;
25 27
26 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 28 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
27 private LocalDateTime createTime; 29 private LocalDateTime createTime;
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerLimitConfigUpdateReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/limitconfig/CrmCustomerLimitConfigUpdateReqVO.java
1 -package cn.iocoder.yudao.module.crm.controller.admin.customer.vo; 1 +package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerPoolConfigBaseVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/poolconfig/CrmCustomerPoolConfigBaseVO.java
1 -package cn.iocoder.yudao.module.crm.controller.admin.customer.vo; 1 +package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.poolconfig;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
@@ -12,7 +12,6 @@ import javax.validation.constraints.NotNull; @@ -12,7 +12,6 @@ import javax.validation.constraints.NotNull;
12 @Data 12 @Data
13 public class CrmCustomerPoolConfigBaseVO { 13 public class CrmCustomerPoolConfigBaseVO {
14 14
15 - // TODO @wanwan:参数校验  
16 @Schema(description = "是否启用客户公海", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") 15 @Schema(description = "是否启用客户公海", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
17 @NotNull(message = "是否启用客户公海不能为空") 16 @NotNull(message = "是否启用客户公海不能为空")
18 private Boolean enabled; 17 private Boolean enabled;
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerPoolConfigRespVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/poolconfig/CrmCustomerPoolConfigRespVO.java
1 -package cn.iocoder.yudao.module.crm.controller.admin.customer.vo; 1 +package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.poolconfig;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 import lombok.EqualsAndHashCode; 5 import lombok.EqualsAndHashCode;
6 import lombok.ToString; 6 import lombok.ToString;
7 7
8 -// TODO @wanwan:vo 下,可以新建一个 poolconfig,放它的 vo;  
9 @Schema(description = "管理后台 - CRM 客户公海规则 Response VO") 8 @Schema(description = "管理后台 - CRM 客户公海规则 Response VO")
10 @Data 9 @Data
11 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerPoolConfigUpdateReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/poolconfig/CrmCustomerPoolConfigUpdateReqVO.java
1 -package cn.iocoder.yudao.module.crm.controller.admin.customer.vo; 1 +package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.poolconfig;
2 2
  3 +import cn.hutool.core.util.BooleanUtil;
  4 +import cn.hutool.core.util.ObjectUtil;
3 import io.swagger.v3.oas.annotations.media.Schema; 5 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 6 import lombok.Data;
5 import lombok.EqualsAndHashCode; 7 import lombok.EqualsAndHashCode;
6 import lombok.ToString; 8 import lombok.ToString;
7 9
  10 +import javax.validation.constraints.AssertTrue;
  11 +import java.util.Objects;
  12 +
8 @Schema(description = "管理后台 - CRM 客户更新 Request VO") 13 @Schema(description = "管理后台 - CRM 客户更新 Request VO")
9 @Data 14 @Data
10 @EqualsAndHashCode(callSuper = true) 15 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 16 @ToString(callSuper = true)
12 public class CrmCustomerPoolConfigUpdateReqVO extends CrmCustomerPoolConfigBaseVO { 17 public class CrmCustomerPoolConfigUpdateReqVO extends CrmCustomerPoolConfigBaseVO {
13 18
  19 + @AssertTrue(message = "客户公海规则设置不正确")
  20 + public boolean poolEnableValid() {
  21 + if (!BooleanUtil.isTrue(getEnabled())) {
  22 + return true;
  23 + }
  24 + return ObjectUtil.isAllNotEmpty(getContactExpireDays(), getDealExpireDays());
  25 + }
  26 +
  27 + @AssertTrue(message = "客户公海规则设置不正确")
  28 + public boolean notifyEnableValid() {
  29 + if (!BooleanUtil.isTrue(getNotifyEnabled())) {
  30 + return true;
  31 + }
  32 + return Objects.nonNull(getNotifyDays());
  33 + }
14 } 34 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/customer/CrmCustomerConvert.java
@@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.crm.convert.customer; @@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.crm.convert.customer;
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; 4 import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
5 import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.*; 5 import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.*;
  6 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.poolconfig.CrmCustomerPoolConfigRespVO;
  7 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.poolconfig.CrmCustomerPoolConfigUpdateReqVO;
6 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; 8 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO;
7 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO; 9 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO;
8 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO; 10 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/customer/CrmCustomerLimitConfigConvert.java
1 package cn.iocoder.yudao.module.crm.convert.customer; 1 package cn.iocoder.yudao.module.crm.convert.customer;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigCreateReqVO;  
5 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigRespVO;  
6 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigUpdateReqVO; 4 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  5 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigCreateReqVO;
  6 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigRespVO;
  7 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigUpdateReqVO;
7 import cn.iocoder.yudao.module.crm.dal.dataobject.customerlimitconfig.CrmCustomerLimitConfigDO; 8 import cn.iocoder.yudao.module.crm.dal.dataobject.customerlimitconfig.CrmCustomerLimitConfigDO;
8 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; 9 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
9 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; 10 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
@@ -12,8 +13,6 @@ import org.mapstruct.factory.Mappers; @@ -12,8 +13,6 @@ import org.mapstruct.factory.Mappers;
12 13
13 import java.util.List; 14 import java.util.List;
14 import java.util.Map; 15 import java.util.Map;
15 -import java.util.Objects;  
16 -import java.util.stream.Collectors;  
17 16
18 /** 17 /**
19 * 客户限制配置 Convert 18 * 客户限制配置 Convert
@@ -54,14 +53,11 @@ public interface CrmCustomerLimitConfigConvert { @@ -54,14 +53,11 @@ public interface CrmCustomerLimitConfigConvert {
54 * 53 *
55 * @param userMap 用户映射 54 * @param userMap 用户映射
56 * @param deptMap 部门映射 55 * @param deptMap 部门映射
57 - * @param respVo 响应实体 56 + * @param respVo 响应实体
58 */ 57 */
59 static void fillNameField(Map<Long, AdminUserRespDTO> userMap, Map<Long, DeptRespDTO> deptMap, CrmCustomerLimitConfigRespVO respVo) { 58 static void fillNameField(Map<Long, AdminUserRespDTO> userMap, Map<Long, DeptRespDTO> deptMap, CrmCustomerLimitConfigRespVO respVo) {
60 - // TODO wanwan:返回 list,具体怎么拼接叫给前端;  
61 - respVo.setUserNames(respVo.getUserIds().stream().map(userMap::get)  
62 - .filter(Objects::nonNull).map(AdminUserRespDTO::getNickname).collect(Collectors.joining(",")));  
63 - respVo.setDeptNames(respVo.getDeptIds().stream().map(deptMap::get)  
64 - .filter(Objects::nonNull).map(DeptRespDTO::getName).collect(Collectors.joining(","))); 59 + respVo.setUsers(CollectionUtils.convertList(respVo.getUserIds(), userMap::get));
  60 + respVo.setDepts(CollectionUtils.convertList(respVo.getDeptIds(), deptMap::get));
65 } 61 }
66 62
67 } 63 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/customer/CrmCustomerPoolConfigDO.java
1 package cn.iocoder.yudao.module.crm.dal.dataobject.customer; 1 package cn.iocoder.yudao.module.crm.dal.dataobject.customer;
2 2
3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; 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; 4 +import com.baomidou.mybatisplus.annotation.*;
7 import lombok.*; 5 import lombok.*;
8 6
9 /** 7 /**
@@ -33,18 +31,22 @@ public class CrmCustomerPoolConfigDO extends BaseDO { @@ -33,18 +31,22 @@ public class CrmCustomerPoolConfigDO extends BaseDO {
33 /** 31 /**
34 * 未跟进放入公海天数 32 * 未跟进放入公海天数
35 */ 33 */
  34 + @TableField(updateStrategy = FieldStrategy.ALWAYS)
36 private Integer contactExpireDays; 35 private Integer contactExpireDays;
37 /** 36 /**
38 * 未成交放入公海天数 37 * 未成交放入公海天数
39 */ 38 */
  39 + @TableField(updateStrategy = FieldStrategy.ALWAYS)
40 private Integer dealExpireDays; 40 private Integer dealExpireDays;
41 /** 41 /**
42 * 是否开启提前提醒 42 * 是否开启提前提醒
43 */ 43 */
  44 + @TableField(updateStrategy = FieldStrategy.ALWAYS)
44 private Boolean notifyEnabled; 45 private Boolean notifyEnabled;
45 /** 46 /**
46 * 提前提醒天数 47 * 提前提醒天数
47 */ 48 */
  49 + @TableField(updateStrategy = FieldStrategy.ALWAYS)
48 private Integer notifyDays; 50 private Integer notifyDays;
49 51
50 } 52 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/customerlimitconfig/CrmCustomerLimitConfigDO.java
@@ -32,8 +32,8 @@ public class CrmCustomerLimitConfigDO extends BaseDO { @@ -32,8 +32,8 @@ public class CrmCustomerLimitConfigDO extends BaseDO {
32 private Long id; 32 private Long id;
33 /** 33 /**
34 * 规则类型 34 * 规则类型
35 - *  
36 - * TODO @wanwan:搞个枚举哈; 35 + * <p>
  36 + * 枚举 {@link cn.iocoder.yudao.module.crm.enums.customer.LimitConfigTypeEnum}
37 */ 37 */
38 private Integer type; 38 private Integer type;
39 /** 39 /**
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customerlimitconfig/CrmCustomerLimitConfigMapper.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.crm.dal.mysql.customerlimitconfig; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.crm.dal.mysql.customerlimitconfig;
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigPageReqVO; 6 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigPageReqVO;
7 import cn.iocoder.yudao.module.crm.dal.dataobject.customerlimitconfig.CrmCustomerLimitConfigDO; 7 import cn.iocoder.yudao.module.crm.dal.dataobject.customerlimitconfig.CrmCustomerLimitConfigDO;
8 import org.apache.ibatis.annotations.Mapper; 8 import org.apache.ibatis.annotations.Mapper;
9 9
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerPoolConfigService.java
1 package cn.iocoder.yudao.module.crm.service.customer; 1 package cn.iocoder.yudao.module.crm.service.customer;
2 2
3 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerPoolConfigUpdateReqVO; 3 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.poolconfig.CrmCustomerPoolConfigUpdateReqVO;
4 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO; 4 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO;
5 5
6 import javax.validation.Valid; 6 import javax.validation.Valid;
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerPoolConfigServiceImpl.java
1 package cn.iocoder.yudao.module.crm.service.customer; 1 package cn.iocoder.yudao.module.crm.service.customer;
2 2
3 -import cn.hutool.core.util.BooleanUtil;  
4 -import cn.hutool.core.util.ObjectUtil;  
5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 3 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerPoolConfigUpdateReqVO; 4 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.poolconfig.CrmCustomerPoolConfigUpdateReqVO;
7 import cn.iocoder.yudao.module.crm.convert.customer.CrmCustomerConvert; 5 import cn.iocoder.yudao.module.crm.convert.customer.CrmCustomerConvert;
8 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO; 6 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO;
9 import cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerPoolConfigMapper; 7 import cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerPoolConfigMapper;
@@ -13,9 +11,6 @@ import org.springframework.validation.annotation.Validated; @@ -13,9 +11,6 @@ import org.springframework.validation.annotation.Validated;
13 import javax.annotation.Resource; 11 import javax.annotation.Resource;
14 import java.util.Objects; 12 import java.util.Objects;
15 13
16 -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;  
17 -import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.CUSTOMER_POOL_CONFIG_ERROR;  
18 -  
19 /** 14 /**
20 * 客户公海配置 Service 实现类 15 * 客户公海配置 Service 实现类
21 * 16 *
@@ -44,14 +39,6 @@ public class CrmCustomerPoolConfigServiceImpl implements CrmCustomerPoolConfigSe @@ -44,14 +39,6 @@ public class CrmCustomerPoolConfigServiceImpl implements CrmCustomerPoolConfigSe
44 */ 39 */
45 @Override 40 @Override
46 public void updateCustomerPoolConfig(CrmCustomerPoolConfigUpdateReqVO saveReqVO) { 41 public void updateCustomerPoolConfig(CrmCustomerPoolConfigUpdateReqVO saveReqVO) {
47 - // TODO @wanwan:看下 @AssertTrue 的逻辑;  
48 - if (BooleanUtil.isTrue(saveReqVO.getEnabled()) && (ObjectUtil.hasNull(saveReqVO.getContactExpireDays(), saveReqVO.getDealExpireDays()))) {  
49 - throw exception(CUSTOMER_POOL_CONFIG_ERROR);  
50 - }  
51 - if (BooleanUtil.isTrue(saveReqVO.getNotifyEnabled()) && (Objects.isNull(saveReqVO.getNotifyDays()))) {  
52 - throw exception(CUSTOMER_POOL_CONFIG_ERROR);  
53 - }  
54 -  
55 // 存在,则进行更新 42 // 存在,则进行更新
56 CrmCustomerPoolConfigDO dbConfig = getCustomerPoolConfig(); 43 CrmCustomerPoolConfigDO dbConfig = getCustomerPoolConfig();
57 if (Objects.nonNull(dbConfig)) { 44 if (Objects.nonNull(dbConfig)) {
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customerlimitconfig/CrmCustomerLimitConfigService.java
1 package cn.iocoder.yudao.module.crm.service.customerlimitconfig; 1 package cn.iocoder.yudao.module.crm.service.customerlimitconfig;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigCreateReqVO;  
5 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigPageReqVO;  
6 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigUpdateReqVO; 4 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigCreateReqVO;
  5 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigPageReqVO;
  6 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigUpdateReqVO;
7 import cn.iocoder.yudao.module.crm.dal.dataobject.customerlimitconfig.CrmCustomerLimitConfigDO; 7 import cn.iocoder.yudao.module.crm.dal.dataobject.customerlimitconfig.CrmCustomerLimitConfigDO;
8 8
9 import javax.validation.Valid; 9 import javax.validation.Valid;
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customerlimitconfig/CrmCustomerLimitConfigServiceImpl.java
1 package cn.iocoder.yudao.module.crm.service.customerlimitconfig; 1 package cn.iocoder.yudao.module.crm.service.customerlimitconfig;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigCreateReqVO;  
5 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigPageReqVO;  
6 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigUpdateReqVO; 4 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigCreateReqVO;
  5 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigPageReqVO;
  6 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigUpdateReqVO;
7 import cn.iocoder.yudao.module.crm.convert.customer.CrmCustomerLimitConfigConvert; 7 import cn.iocoder.yudao.module.crm.convert.customer.CrmCustomerLimitConfigConvert;
8 import cn.iocoder.yudao.module.crm.dal.dataobject.customerlimitconfig.CrmCustomerLimitConfigDO; 8 import cn.iocoder.yudao.module.crm.dal.dataobject.customerlimitconfig.CrmCustomerLimitConfigDO;
9 import cn.iocoder.yudao.module.crm.dal.mysql.customerlimitconfig.CrmCustomerLimitConfigMapper; 9 import cn.iocoder.yudao.module.crm.dal.mysql.customerlimitconfig.CrmCustomerLimitConfigMapper;
yudao-module-crm/yudao-module-crm-biz/src/test/java/cn/iocoder/yudao/module/crm/service/customerlimitconfig/CrmCustomerLimitConfigServiceImplTest.java
@@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.crm.service.customerlimitconfig; @@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.crm.service.customerlimitconfig;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; 4 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
5 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigCreateReqVO;  
6 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigPageReqVO;  
7 -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerLimitConfigUpdateReqVO; 5 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigCreateReqVO;
  6 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigPageReqVO;
  7 +import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigUpdateReqVO;
8 import cn.iocoder.yudao.module.crm.dal.dataobject.customerlimitconfig.CrmCustomerLimitConfigDO; 8 import cn.iocoder.yudao.module.crm.dal.dataobject.customerlimitconfig.CrmCustomerLimitConfigDO;
9 import cn.iocoder.yudao.module.crm.dal.mysql.customerlimitconfig.CrmCustomerLimitConfigMapper; 9 import cn.iocoder.yudao.module.crm.dal.mysql.customerlimitconfig.CrmCustomerLimitConfigMapper;
10 import org.junit.jupiter.api.Disabled; 10 import org.junit.jupiter.api.Disabled;