mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 18:28:43 +08:00 
			
		
		
		
	CRM-客户限制配置:VO 简化
This commit is contained in:
		| @@ -3,10 +3,9 @@ package cn.iocoder.yudao.module.crm.controller.admin.customer; | ||||
| import cn.hutool.core.collection.CollUtil; | ||||
| import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigCreateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigPageReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigRespVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigSaveReqVO; | ||||
| import cn.iocoder.yudao.module.crm.convert.customer.CrmCustomerLimitConfigConvert; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerLimitConfigDO; | ||||
| import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerLimitConfigService; | ||||
| @@ -17,12 +16,12 @@ import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.tags.Tag; | ||||
| import jakarta.annotation.Resource; | ||||
| import jakarta.validation.Valid; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
|  | ||||
| import jakarta.annotation.Resource; | ||||
| import jakarta.validation.Valid; | ||||
| import java.util.Collection; | ||||
| import java.util.Map; | ||||
|  | ||||
| @@ -43,18 +42,17 @@ public class CrmCustomerLimitConfigController { | ||||
|     @Resource | ||||
|     private AdminUserApi adminUserApi; | ||||
|  | ||||
|     // TODO @puhui999:可以把 vo 改下哈 | ||||
|     @PostMapping("/create") | ||||
|     @Operation(summary = "创建客户限制配置") | ||||
|     @PreAuthorize("@ss.hasPermission('crm:customer-limit-config:create')") | ||||
|     public CommonResult<Long> createCustomerLimitConfig(@Valid @RequestBody CrmCustomerLimitConfigCreateReqVO createReqVO) { | ||||
|     public CommonResult<Long> createCustomerLimitConfig(@Valid @RequestBody CrmCustomerLimitConfigSaveReqVO createReqVO) { | ||||
|         return success(customerLimitConfigService.createCustomerLimitConfig(createReqVO)); | ||||
|     } | ||||
|  | ||||
|     @PutMapping("/update") | ||||
|     @Operation(summary = "更新客户限制配置") | ||||
|     @PreAuthorize("@ss.hasPermission('crm:customer-limit-config:update')") | ||||
|     public CommonResult<Boolean> updateCustomerLimitConfig(@Valid @RequestBody CrmCustomerLimitConfigUpdateReqVO updateReqVO) { | ||||
|     public CommonResult<Boolean> updateCustomerLimitConfig(@Valid @RequestBody CrmCustomerLimitConfigSaveReqVO updateReqVO) { | ||||
|         customerLimitConfigService.updateCustomerLimitConfig(updateReqVO); | ||||
|         return success(true); | ||||
|     } | ||||
|   | ||||
| @@ -1,14 +0,0 @@ | ||||
| package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig; | ||||
|  | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | ||||
|  | ||||
| @Schema(description = "管理后台 - 客户限制配置创建 Request VO") | ||||
| @Data | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @ToString(callSuper = true) | ||||
| public class CrmCustomerLimitConfigCreateReqVO extends CrmCustomerLimitConfigBaseVO { | ||||
|  | ||||
| } | ||||
| @@ -3,22 +3,36 @@ package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig; | ||||
| import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; | ||||
| import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import jakarta.validation.constraints.NotNull; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | ||||
|  | ||||
| import java.time.LocalDateTime; | ||||
| import java.util.List; | ||||
|  | ||||
| @Schema(description = "管理后台 - 客户限制配置 Response VO") | ||||
| @Data | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @ToString(callSuper = true) | ||||
| public class CrmCustomerLimitConfigRespVO extends CrmCustomerLimitConfigBaseVO { | ||||
| public class CrmCustomerLimitConfigRespVO { | ||||
|  | ||||
|     @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27930") | ||||
|     private Long id; | ||||
|  | ||||
|     @Schema(description = "规则类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | ||||
|     @NotNull(message = "规则类型不能为空") | ||||
|     private Integer type; | ||||
|  | ||||
|     @Schema(description = "规则适用人群") | ||||
|     private List<Long> userIds; | ||||
|  | ||||
|     @Schema(description = "规则适用部门") | ||||
|     private List<Long> deptIds; | ||||
|  | ||||
|     @Schema(description = "数量上限", requiredMode = Schema.RequiredMode.REQUIRED, example = "28384") | ||||
|     @NotNull(message = "数量上限不能为空") | ||||
|     private Integer maxCount; | ||||
|  | ||||
|     @Schema(description = "成交客户是否占有拥有客户数(当 type = 1 时)") | ||||
|     private Boolean dealCountEnabled; | ||||
|  | ||||
|     @Schema(description = "规则适用人群名称") | ||||
|     private List<AdminUserRespDTO> users; | ||||
|  | ||||
|   | ||||
| @@ -1,33 +1,39 @@ | ||||
| package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig; | ||||
| 
 | ||||
| import com.mzt.logapi.starter.annotation.DiffLogField; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import jakarta.validation.constraints.NotNull; | ||||
| import lombok.Data; | ||||
| 
 | ||||
| import jakarta.validation.constraints.NotNull; | ||||
| import java.util.List; | ||||
| 
 | ||||
| /** | ||||
|  * 客户限制配置 Base VO,提供给添加、修改、详细的子 VO 使用 | ||||
|  * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 | ||||
|  */ | ||||
| @Schema(description = "管理后台 - 客户限制配置创建/更新 Request VO") | ||||
| @Data | ||||
| public class CrmCustomerLimitConfigBaseVO { | ||||
| public class CrmCustomerLimitConfigSaveReqVO { | ||||
| 
 | ||||
|     @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27930") | ||||
|     private Long id; | ||||
| 
 | ||||
|     @Schema(description = "规则类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | ||||
|     @DiffLogField(name = "规则类型") | ||||
|     @NotNull(message = "规则类型不能为空") | ||||
|     private Integer type; | ||||
| 
 | ||||
|     @Schema(description = "规则适用人群") | ||||
|     @DiffLogField(name = "规则适用人群", function = "getAdminUserById") | ||||
|     private List<Long> userIds; | ||||
| 
 | ||||
|     @Schema(description = "规则适用部门") | ||||
|     @DiffLogField(name = "规则适用部门", function = "getDeptById") | ||||
|     private List<Long> deptIds; | ||||
| 
 | ||||
|     @Schema(description = "数量上限", requiredMode = Schema.RequiredMode.REQUIRED, example = "28384") | ||||
|     @DiffLogField(name = "数量上限") | ||||
|     @NotNull(message = "数量上限不能为空") | ||||
|     private Integer maxCount; | ||||
| 
 | ||||
|     @Schema(description = "成交客户是否占有拥有客户数(当 type = 1 时)") | ||||
|     @DiffLogField(name = "成交客户是否占有拥有客户数") | ||||
|     private Boolean dealCountEnabled; | ||||
| 
 | ||||
| } | ||||
| @@ -1,20 +0,0 @@ | ||||
| package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig; | ||||
|  | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | ||||
|  | ||||
| import jakarta.validation.constraints.NotNull; | ||||
|  | ||||
| @Schema(description = "管理后台 - 客户限制配置更新 Request VO") | ||||
| @Data | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @ToString(callSuper = true) | ||||
| public class CrmCustomerLimitConfigUpdateReqVO extends CrmCustomerLimitConfigBaseVO { | ||||
|  | ||||
|     @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27930") | ||||
|     @NotNull(message = "编号不能为空") | ||||
|     private Long id; | ||||
|  | ||||
| } | ||||
| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigCreateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigRespVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigSaveReqVO; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerLimitConfigDO; | ||||
| import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; | ||||
| import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||||
| @@ -26,7 +26,7 @@ public interface CrmCustomerLimitConfigConvert { | ||||
|  | ||||
|     CrmCustomerLimitConfigDO convert(CrmCustomerLimitConfigCreateReqVO bean); | ||||
|  | ||||
|     CrmCustomerLimitConfigDO convert(CrmCustomerLimitConfigUpdateReqVO bean); | ||||
|     CrmCustomerLimitConfigDO convert(CrmCustomerLimitConfigSaveReqVO bean); | ||||
|  | ||||
|     CrmCustomerLimitConfigRespVO convert(CrmCustomerLimitConfigDO bean); | ||||
|  | ||||
|   | ||||
| @@ -1,9 +1,8 @@ | ||||
| package cn.iocoder.yudao.module.crm.service.customer; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigCreateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigPageReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigSaveReqVO; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerLimitConfigDO; | ||||
| import jakarta.validation.Valid; | ||||
|  | ||||
| @@ -22,14 +21,14 @@ public interface CrmCustomerLimitConfigService { | ||||
|      * @param createReqVO 创建信息 | ||||
|      * @return 编号 | ||||
|      */ | ||||
|     Long createCustomerLimitConfig(@Valid CrmCustomerLimitConfigCreateReqVO createReqVO); | ||||
|     Long createCustomerLimitConfig(@Valid CrmCustomerLimitConfigSaveReqVO createReqVO); | ||||
|  | ||||
|     /** | ||||
|      * 更新客户限制配置 | ||||
|      * | ||||
|      * @param updateReqVO 更新信息 | ||||
|      */ | ||||
|     void updateCustomerLimitConfig(@Valid CrmCustomerLimitConfigUpdateReqVO updateReqVO); | ||||
|     void updateCustomerLimitConfig(@Valid CrmCustomerLimitConfigSaveReqVO updateReqVO); | ||||
|  | ||||
|     /** | ||||
|      * 删除客户限制配置 | ||||
| @@ -57,7 +56,7 @@ public interface CrmCustomerLimitConfigService { | ||||
|     /** | ||||
|      * 查询用户对应的配置列表 | ||||
|      * | ||||
|      * @param type 类型 | ||||
|      * @param type   类型 | ||||
|      * @param userId 用户类型 | ||||
|      */ | ||||
|     List<CrmCustomerLimitConfigDO> getCustomerLimitConfigListByUserId(Integer type, Long userId); | ||||
|   | ||||
| @@ -2,20 +2,18 @@ package cn.iocoder.yudao.module.crm.service.customer; | ||||
|  | ||||
| import cn.hutool.core.lang.Assert; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigCreateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigPageReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigSaveReqVO; | ||||
| import cn.iocoder.yudao.module.crm.convert.customer.CrmCustomerLimitConfigConvert; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerLimitConfigDO; | ||||
| import cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerLimitConfigMapper; | ||||
| import cn.iocoder.yudao.module.system.api.dept.DeptApi; | ||||
| import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | ||||
| import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||||
| import jakarta.annotation.Resource; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
|  | ||||
| import jakarta.annotation.Resource; | ||||
|  | ||||
| import java.util.Collection; | ||||
| import java.util.List; | ||||
|  | ||||
| @@ -41,7 +39,7 @@ public class CrmCustomerLimitConfigServiceImpl implements CrmCustomerLimitConfig | ||||
|  | ||||
|     @Override | ||||
|     // TODO @puhui999:操作日志 | ||||
|     public Long createCustomerLimitConfig(CrmCustomerLimitConfigCreateReqVO createReqVO) { | ||||
|     public Long createCustomerLimitConfig(CrmCustomerLimitConfigSaveReqVO createReqVO) { | ||||
|         validateUserAndDept(createReqVO.getUserIds(), createReqVO.getDeptIds()); | ||||
|         // 插入 | ||||
|         CrmCustomerLimitConfigDO customerLimitConfig = CrmCustomerLimitConfigConvert.INSTANCE.convert(createReqVO); | ||||
| @@ -52,7 +50,7 @@ public class CrmCustomerLimitConfigServiceImpl implements CrmCustomerLimitConfig | ||||
|  | ||||
|     @Override | ||||
|     // TODO @puhui999:操作日志 | ||||
|     public void updateCustomerLimitConfig(CrmCustomerLimitConfigUpdateReqVO updateReqVO) { | ||||
|     public void updateCustomerLimitConfig(CrmCustomerLimitConfigSaveReqVO updateReqVO) { | ||||
|         // 校验存在 | ||||
|         validateCustomerLimitConfigExists(updateReqVO.getId()); | ||||
|         validateUserAndDept(updateReqVO.getUserIds(), updateReqVO.getDeptIds()); | ||||
|   | ||||
| @@ -2,18 +2,16 @@ package cn.iocoder.yudao.module.crm.service.customerlimitconfig; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigCreateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigPageReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigSaveReqVO; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerLimitConfigDO; | ||||
| import cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerLimitConfigMapper; | ||||
| import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerLimitConfigServiceImpl; | ||||
| import jakarta.annotation.Resource; | ||||
| import org.junit.jupiter.api.Disabled; | ||||
| import org.junit.jupiter.api.Test; | ||||
| import org.springframework.context.annotation.Import; | ||||
|  | ||||
| import jakarta.annotation.Resource; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; | ||||
| @@ -40,7 +38,7 @@ public class CrmCustomerLimitConfigServiceImplTest extends BaseDbUnitTest { | ||||
|     @Test | ||||
|     public void testCreateCustomerLimitConfig_success() { | ||||
|         // 准备参数 | ||||
|         CrmCustomerLimitConfigCreateReqVO reqVO = randomPojo(CrmCustomerLimitConfigCreateReqVO.class); | ||||
|         CrmCustomerLimitConfigSaveReqVO reqVO = randomPojo(CrmCustomerLimitConfigSaveReqVO.class); | ||||
|  | ||||
|         // 调用 | ||||
|         Long customerLimitConfigId = customerLimitConfigService.createCustomerLimitConfig(reqVO); | ||||
| @@ -57,7 +55,7 @@ public class CrmCustomerLimitConfigServiceImplTest extends BaseDbUnitTest { | ||||
|         CrmCustomerLimitConfigDO dbCustomerLimitConfig = randomPojo(CrmCustomerLimitConfigDO.class); | ||||
|         customerLimitConfigMapper.insert(dbCustomerLimitConfig);// @Sql: 先插入出一条存在的数据 | ||||
|         // 准备参数 | ||||
|         CrmCustomerLimitConfigUpdateReqVO reqVO = randomPojo(CrmCustomerLimitConfigUpdateReqVO.class, o -> { | ||||
|         CrmCustomerLimitConfigSaveReqVO reqVO = randomPojo(CrmCustomerLimitConfigSaveReqVO.class, o -> { | ||||
|             o.setId(dbCustomerLimitConfig.getId()); // 设置更新的 ID | ||||
|         }); | ||||
|  | ||||
| @@ -71,7 +69,7 @@ public class CrmCustomerLimitConfigServiceImplTest extends BaseDbUnitTest { | ||||
|     @Test | ||||
|     public void testUpdateCustomerLimitConfig_notExists() { | ||||
|         // 准备参数 | ||||
|         CrmCustomerLimitConfigUpdateReqVO reqVO = randomPojo(CrmCustomerLimitConfigUpdateReqVO.class); | ||||
|         CrmCustomerLimitConfigSaveReqVO reqVO = randomPojo(CrmCustomerLimitConfigSaveReqVO.class); | ||||
|  | ||||
|         // 调用, 并断言异常 | ||||
|         assertServiceException(() -> customerLimitConfigService.updateCustomerLimitConfig(reqVO), CUSTOMER_LIMIT_CONFIG_NOT_EXISTS); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 puhui999
					puhui999