From 83933bf71f92d26343a5a7fd83325ac87ceacbd6 Mon Sep 17 00:00:00 2001 From: zhengyi <landuo321@aliyun.com> Date: Tue, 10 Dec 2024 21:43:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=A2=E6=88=B7=E6=96=B0?= =?UTF-8?q?=E5=A2=9E/=E7=BC=96=E8=BE=91/=E8=AF=A6=E6=83=85=EF=BC=8C?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E4=B8=BB=E8=90=A5=E7=B1=BB=E5=88=AB/?= =?UTF-8?q?=E4=B8=BB=E8=90=A5=E4=BA=A7=E5=93=81=E7=9A=84=E4=BC=A0=E5=8F=82?= =?UTF-8?q?=E4=B8=8E=E8=BF=94=E5=8F=82=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/customer/vo/CustomerBaseVO.java | 4 +- .../vo/customer/vo/CustomerDetailRespVO.java | 3 ++ .../vo/CustomerProductTypeGroupVO.java | 18 ++++++++ .../admin/customer/CustomerController.java | 43 ++++++++++++++++--- 4 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/vo/customer/vo/CustomerProductTypeGroupVO.java diff --git a/yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/vo/customer/vo/CustomerBaseVO.java b/yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/vo/customer/vo/CustomerBaseVO.java index 6de54f997..8e915e3e2 100644 --- a/yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/vo/customer/vo/CustomerBaseVO.java +++ b/yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/vo/customer/vo/CustomerBaseVO.java @@ -6,6 +6,7 @@ import lombok.Data; import javax.validation.constraints.NotNull; import java.util.Date; +import java.util.List; /** * 客户 Base VO,æä¾›ç»™æ·»åŠ ã€ä¿®æ”¹ã€è¯¦ç»†çš„å VO 使用 @@ -117,7 +118,8 @@ public class CustomerBaseVO { @ApiModelProperty(value = "付款人姓å") private String payerName; - + @ApiModelProperty(value = "主è¥äº§å“类别分组") + private List<CustomerProductTypeGroupVO> products; } diff --git a/yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/vo/customer/vo/CustomerDetailRespVO.java b/yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/vo/customer/vo/CustomerDetailRespVO.java index 88099be70..0435e0a91 100644 --- a/yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/vo/customer/vo/CustomerDetailRespVO.java +++ b/yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/vo/customer/vo/CustomerDetailRespVO.java @@ -309,6 +309,9 @@ public class CustomerDetailRespVO extends CustomerBaseVO { @ApiModelProperty(value = "选ä¸çš„主è¥äº§å“类型") private List<ProductTypeRespVO> productTypeList; + @ApiModelProperty(value = "主è¥äº§å“类别分组") + private List<CustomerProductTypeGroupVO> products; + @ApiModelProperty(value = "付款人姓å") private String payerName; diff --git a/yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/vo/customer/vo/CustomerProductTypeGroupVO.java b/yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/vo/customer/vo/CustomerProductTypeGroupVO.java new file mode 100644 index 000000000..f2e475238 --- /dev/null +++ b/yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/vo/customer/vo/CustomerProductTypeGroupVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.customer.vo.customer.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("客户主è¥å•†å“类型分组") +public class CustomerProductTypeGroupVO { + + @ApiModelProperty("主è¥ç±»åˆ«id") + private Long typeId; + + @ApiModelProperty("主è¥äº§å“ids") + private List<Long> productIds; +} diff --git a/yudao-module-customer/yudao-module-customer-rest/src/main/java/cn/iocoder/yudao/module/customer/controller/admin/customer/CustomerController.java b/yudao-module-customer/yudao-module-customer-rest/src/main/java/cn/iocoder/yudao/module/customer/controller/admin/customer/CustomerController.java index 24e88d8bd..cad4691c4 100644 --- a/yudao-module-customer/yudao-module-customer-rest/src/main/java/cn/iocoder/yudao/module/customer/controller/admin/customer/CustomerController.java +++ b/yudao-module-customer/yudao-module-customer-rest/src/main/java/cn/iocoder/yudao/module/customer/controller/admin/customer/CustomerController.java @@ -43,6 +43,7 @@ import cn.iocoder.yudao.module.customer.vo.customer.vo.*; import cn.iocoder.yudao.module.customer.vo.customerBank.CustomerBankBackVO; import cn.iocoder.yudao.module.customer.vo.customerBank.CustomerBankQueryVO; import cn.iocoder.yudao.module.ecw.api.paramValid.ParamValidatorApi; +import cn.iocoder.yudao.module.ecw.controller.admin.region.vo.RegionRespVO; import cn.iocoder.yudao.module.ecw.enums.CustomerContactsDefaultEnum; import cn.iocoder.yudao.module.ecw.enums.CustomerCreateFromEnum; import cn.iocoder.yudao.module.ecw.enums.CustomerOperateTypeEnum; @@ -55,6 +56,7 @@ import cn.iocoder.yudao.module.member.api.user.MemberUserApi; import cn.iocoder.yudao.module.member.api.user.dto.UserRespDTO; import cn.iocoder.yudao.module.order.dal.dataobject.order.OrderDO; import cn.iocoder.yudao.module.order.dal.mysql.order.OrderMapper; +import cn.iocoder.yudao.module.product.vo.product.ProductRespVO; import cn.iocoder.yudao.module.sale.dal.dataobject.offer.OfferDO; import cn.iocoder.yudao.module.sale.dal.mysql.offer.OfferMapper; import cn.iocoder.yudao.module.system.api.file.FileMakeApi; @@ -166,7 +168,11 @@ public class CustomerController { createReqVO.setIsPotential(true); createReqVO.setCustomerOperateLogRemark("新增潜在客户"); - + if (CollectionUtil.isNotEmpty(createReqVO.getProducts())){ + createReqVO.setProductTypes(createReqVO.getProducts().stream().map(CustomerProductTypeGroupVO::getTypeId).filter(Objects::nonNull).collect(Collectors.joining(","))); + createReqVO.setProductIds(createReqVO.getProducts().stream().map(CustomerProductTypeGroupVO::getProductIds) + .flatMap(Collection::stream).filter(Objects::nonNull).collect(Collectors.joining(","))); + } return createCustomerPrivate(createReqVO); } @@ -178,6 +184,11 @@ public class CustomerController { @Valid @RequestBody CustomerCreateReqVO createReqVO, HttpServletRequest request) { createReqVO.setCustomerOperateLogRemark("管ç†ç«¯é¡µé¢æ–°å»ºå®¢æˆ·"); + if (CollectionUtil.isNotEmpty(createReqVO.getProducts())){ + createReqVO.setProductTypes(createReqVO.getProducts().stream().map(CustomerProductTypeGroupVO::getTypeId).filter(Objects::nonNull).collect(Collectors.joining(","))); + createReqVO.setProductIds(createReqVO.getProducts().stream().map(CustomerProductTypeGroupVO::getProductIds) + .flatMap(Collection::stream).filter(Objects::nonNull).collect(Collectors.joining(","))); + } return createCustomerPrivate(createReqVO); } @@ -249,6 +260,11 @@ public class CustomerController { //SELECT arrival_confirm from ecw_customer 到仓确认 List<CustomerContactsUpdateReqVO> customerContacts = updateReqVO.getCustomerContacts(); + if (CollectionUtil.isNotEmpty(updateReqVO.getProducts())){ + updateReqVO.setProductTypes(updateReqVO.getProducts().stream().map(CustomerProductTypeGroupVO::getTypeId).filter(Objects::nonNull).collect(Collectors.joining(","))); + updateReqVO.setProductIds(updateReqVO.getProducts().stream().map(CustomerProductTypeGroupVO::getProductIds) + .flatMap(Collection::stream).filter(Objects::nonNull).collect(Collectors.joining(","))); + } if (!CollectionUtils.isEmpty(customerContacts)) { long count = customerContacts.stream().filter(t -> CustomerContactsDefaultEnum.IS_DEFAULT.getValue().equals(t.getIsDefault())).count(); if (count <= 0) { @@ -264,7 +280,7 @@ public class CustomerController { if (userid != null && userid != 0) { //è€æ•°æ®å¯¼å…¥è¿‡æ¥åŽéƒ¨åˆ†userid=0 count = customerContactsService.count( new LambdaQueryWrapperX<CustomerContactsDO>().eq(CustomerContactsDO::getUserid, userid) - .ne(CustomerContactsDO::getCustomerId, updateReqVO.getId()).eq(BaseDO::getDeleted, 0)); + .ne(CustomerContactsDO::getCustomerId, updateReqVO.getId()).eq(BaseDO::getDeleted, 0)); if (count > 0) { UserRespDTO user = memberUserApi.getUser(userid); throw exception(ErrorCodeConstants.CUSTOMER_CONTACTS_USERID_ALREADY_BIND, user != null ? user.getNickname() : "", user != null ? user.getMobile() : ""); @@ -337,7 +353,11 @@ public class CustomerController { //完善信æ¯è¦ç¡®è®¤æŽ¥æ”¶ updateReqVO.setIsCustomerServiceConfirmed(true); - + if (CollectionUtil.isNotEmpty(updateReqVO.getProducts())){ + updateReqVO.setProductTypes(updateReqVO.getProducts().stream().map(CustomerProductTypeGroupVO::getTypeId).filter(Objects::nonNull).collect(Collectors.joining(","))); + updateReqVO.setProductIds(updateReqVO.getProducts().stream().map(CustomerProductTypeGroupVO::getProductIds) + .flatMap(Collection::stream).filter(Objects::nonNull).collect(Collectors.joining(","))); + } //完善客户信æ¯ç¡®è®¤æŽ¥æ”¶æ—¶è¦è®¡ç®—客户的业绩类型 return this.updateCustomer(updateReqVO); } @@ -373,7 +393,7 @@ public class CustomerController { if (customerDODeleted == null) { throw exception(ErrorCodeConstants.CUSTOMER_DELETED_NOT_EXISTS); } - if (!Objects.equals(customerDOSaved.getCustomerService(), customerDODeleted.getCustomerService()) && !customerDOSaved.getIsInOpenSea() && !customerDODeleted.getIsInOpenSea()) { + if (!Objects.equals(customerDOSaved.getCustomerService(), customerDODeleted.getCustomerService()) && !customerDOSaved.getIsInOpenSea() && !customerDODeleted.getIsInOpenSea()) { throw exception(ErrorCodeConstants.CUSTOMER_MERGE_CUSTOMER_SERVICE_NOT_SAME); } @@ -417,6 +437,17 @@ public class CustomerController { respVO.setPromoterName(customer1.getName()); } } + if (CollectionUtil.isNotEmpty(respVO.getProductList())) { + // 对商å“æ•°æ®è¿›è¡Œåˆ†ç»„返回 + Map<Long, List<ProductRespVO>> productRespVOMap = respVO.getProductList().stream().collect(Collectors.groupingBy(ProductRespVO::getTypeId)); + List<CustomerProductTypeGroupVO> products = productRespVOMap.entrySet().stream().map(entry -> { + CustomerProductTypeGroupVO productTypeGroupVO = new CustomerProductTypeGroupVO(); + productTypeGroupVO.setTypeId(entry.getKey()); + productTypeGroupVO.setProductIds(entry.getValue().stream().map(ProductRespVO::getId).collect(Collectors.toList())); + return productTypeGroupVO; + }).collect(Collectors.toList()); + respVO.setProducts(products); + } //è®¾ç½®é“¶è¡Œè´¦å· CustomerBankQueryVO customerBankQueryVO = new CustomerBankQueryVO(); @@ -488,13 +519,12 @@ public class CustomerController { .stream().sorted(Comparator.comparing(CustomerBankBackVO::getId)).collect(Collectors.toList()); respVO.setCustomerBankBackVOList(customerBankBackVOS); - String sR=getContactStr(id); + String sR = getContactStr(id); respVO.setContactstr(sR); return success(respVO); } - @GetMapping("/list") @ApiOperation("æ ¹æ®å®¢æˆ·id集åˆèŽ·å¾—客户详情列表") @ApiImplicitParam(name = "ids", value = "ç¼–å·åˆ—表", required = true, example = "1024,2048", dataTypeClass = List.class) @@ -1112,7 +1142,6 @@ public class CustomerController { } - @PutMapping("/recycle-unconfirmed-customer") @ApiOperation("回收已分é…未接收的客户") // @PreAuthorize("@ss.hasPermission('ecw:customer:recycle:unconfirmed')") -- 2.22.0