From 7d260596ddc7e681776182602f4606558dcd8d73 Mon Sep 17 00:00:00 2001 From: Derran Date: Thu, 6 Jun 2024 11:53:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserPageProductByCustomerGroupVo.java | 5 ++ .../product/impl/ProductQueryServiceImpl.java | 47 ++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerGroupVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerGroupVo.java index ffd36c2..80e943e 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerGroupVo.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByCustomerGroupVo.java @@ -2,6 +2,8 @@ package com.qniao.dam.api.query.product.user.response; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -18,6 +20,9 @@ public class UserPageProductByCustomerGroupVo { @ApiModelProperty("商品组类型 0 商品 1 活动产品") private Integer groupType; + @ApiModelProperty("产品次分类") + private ProductSubCategoryEnum subCategory; + @ApiModelProperty("商品名称") private String productName; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java index fc8d8c1..3bdca9c 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java @@ -11,6 +11,7 @@ import com.qniao.dam.domain.aggregate.externalproduct.valueobj.ExternalProductRe import com.qniao.dam.domain.aggregate.product.entity.Product; import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm; +import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum; import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum; @@ -175,7 +176,8 @@ public class ProductQueryServiceImpl implements ProductQueryService { List groupVoList = new ArrayList<>(); List extendVos = productViewDao.selectProductByCustomerList(id); Map> extMap = extendVos.stream().collect(Collectors.groupingBy(UserPageProductByCustomerExtendVo::getId)); - extMap.forEach((k, v) -> { + for (Long k : extMap.keySet()) { + List v = extMap.get(k); UserPageProductByCustomerExtendVo extendVo = v.get(0); if (extendVo.getGroupType() == 0) { extendVo.setProductName(extendVo.getProductTitle()); @@ -186,12 +188,53 @@ public class ProductQueryServiceImpl implements ProductQueryService { vo.setActivityId(extendVo.getId()); vo.setUnitSellingPrice(unitSellingPrice); vo.setUnitOriginalPrice(unitOriginalPrice); + if (extendVo.getGroupType() == 0) { + vo.setSubCategory(extendVo.getSubCategory()); + } vo.setProductList(TypeConvertUtils.convert(v, UserPageProductByCustomerVo.class)); groupVoList.add(vo); - }); + } + //特殊处理这么做是不对的 顺序:聊天卡、会员、包恋爱、包领证 + List sortGroupVoList = new ArrayList<>(); + //聊天卡 + UserPageProductByCustomerGroupVo target1Vo = findTargetVo(groupVoList, 0, ProductSubCategoryEnum.CHAT_CARD); + if (Objects.nonNull(target1Vo)) { + sortGroupVoList.add(target1Vo); + } + //会员 + sortGroupVoList.addAll(groupVoList.stream().filter(vo -> vo.getGroupType() == 1).collect(Collectors.toList())); + groupVoList = groupVoList.stream().filter(vo -> vo.getGroupType() != 1).collect(Collectors.toList()); + //包恋爱 + UserPageProductByCustomerGroupVo target2Vo = findTargetVo(groupVoList, 0, ProductSubCategoryEnum.CONTRACT_LOVE); + if (Objects.nonNull(target2Vo)) { + sortGroupVoList.add(target2Vo); + } + //包领证 + UserPageProductByCustomerGroupVo target3Vo = findTargetVo(groupVoList, 0, ProductSubCategoryEnum.CONTRACTED_MARRIAGE); + if (Objects.nonNull(target3Vo)) { + sortGroupVoList.add(target3Vo); + } + sortGroupVoList.addAll(groupVoList); + groupVoList = sortGroupVoList; return groupVoList; } + private UserPageProductByCustomerGroupVo findTargetVo(List sortGroupVoList, + int groupType, + ProductSubCategoryEnum subCategory) { + UserPageProductByCustomerGroupVo targetVo = null; + for (UserPageProductByCustomerGroupVo groupVo : sortGroupVoList) { + if (groupVo.getGroupType() == groupType && subCategory.equals(groupVo.getSubCategory())) { + targetVo = groupVo; + break; + } + } + if (Objects.nonNull(targetVo)) { + sortGroupVoList.remove(targetVo); + } + return targetVo; + } + @Override public UserPageProductByCustomerGroupVo getPageProductByCustomerDetails(Long id) { List vos = getPageProductByCustomer(id);