Commit 18c8a11a89460a65347bfb482ba561fc288cfc23
Committed by
Gitee
!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; |