From 95348dd60eed62b1b0a6c482dfc2aec7bca206d9 Mon Sep 17 00:00:00 2001 From: Derran Date: Fri, 19 Apr 2024 16:41:14 +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 --- .../constant/ProductMainCategoryEnum.java | 5 ++- .../constant/ProductSubCategoryEnum.java | 8 ++-- .../product/constant/ProductTypeEnum.java | 7 ++- .../user/request/UserCreateProductDto.java | 8 ++-- .../user/request/UserEditProductDto.java | 4 ++ .../user/ProductUserQueryController.java | 22 ++++++--- .../UserPageProductByMatchmakerVo.java | 45 +++++++++++++++++++ .../handler/order/OrderEventHandler.java | 2 +- .../order/OrderApplicationService.java | 2 +- .../persistent/dao/view/ProductViewDao.java | 3 ++ .../query/product/ProductQueryService.java | 7 ++- .../product/impl/ProductQueryServiceImpl.java | 6 +++ .../mapper/product/ProductViewMapper.xml | 21 ++++++++- 13 files changed, 118 insertions(+), 22 deletions(-) create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByMatchmakerVo.java diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java index a043bc2..117017f 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java @@ -18,7 +18,10 @@ public enum ProductMainCategoryEnum { UNLOCKING_INFORMATION(3, "解锁信息"), OFFLINE_SERVICES(4, "线下服务"), CHAT_CARD(5,"聊天卡"), - VIP(6, "会员"); + VIP(6, "会员"), + + MATCHMAKER(888,"红娘合伙人"); + @EnumValue @JsonValue private final Integer value; diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java index 5d9d5a7..1195c4b 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java @@ -22,13 +22,15 @@ public enum ProductSubCategoryEnum { OFFLINE_MEET(401, "线下约见面"), - CHAT_CARD(501,"聊天卡"), + CHAT_CARD(501, "聊天卡"), VIP(601, "会员"), - CONTRACT_LOVE(701,"包恋爱"), + CONTRACT_LOVE(701, "包恋爱"), - CONTRACTED_MARRIAGE(801,"包领证"); + CONTRACTED_MARRIAGE(801, "包领证"), + + MATCHMAKER(88801, "红娘合伙人加盟费"); @EnumValue @JsonValue diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java index 3c0a57e..fe90ea0 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java @@ -10,8 +10,11 @@ import lombok.Getter; @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum ProductTypeEnum { - PHYSICAL(1, "实物"), - VIRTUAL(2, "虚拟物品"); + CUSTOMER_PHYSICAL(1, "客户实物"), + + CUSTOMER_VIRTUAL(2, "客户虚拟物品"), + + MATCHMAKER_VIRTUAL(3, "红娘虚拟物品"); @EnumValue @JsonValue diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/product/user/request/UserCreateProductDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/product/user/request/UserCreateProductDto.java index d0158d4..52716ec 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/product/user/request/UserCreateProductDto.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/product/user/request/UserCreateProductDto.java @@ -25,6 +25,10 @@ import java.util.Objects; @Data public class UserCreateProductDto implements Trans2DomainAssembler { + @ApiModelProperty("产品类型") + @NotNull(message = "产品类型不能为空") + private ProductTypeEnum productType; + @ApiModelProperty("产品主分类") @NotNull(message = "产品主分类不能为空") private ProductMainCategoryEnum mainCategory; @@ -68,9 +72,7 @@ public class UserCreateProductDto implements Trans2DomainAssembler { @Override public Product trans2Domain() { - Product product = TypeConvertUtils.convert(this, Product.class); - product.setProductType(ProductTypeEnum.VIRTUAL); - return product; + return TypeConvertUtils.convert(this, Product.class); } public ProductSpec trans2ProductSpec() { diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/product/user/request/UserEditProductDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/product/user/request/UserEditProductDto.java index 87573e4..80d3e67 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/product/user/request/UserEditProductDto.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/product/user/request/UserEditProductDto.java @@ -36,6 +36,10 @@ public class UserEditProductDto implements Trans2DomainAssembler { @NotNull(message = "产品规格标识不能为空") private Long productSpecId; + @ApiModelProperty("产品类型") + @NotNull(message = "产品类型不能为空") + private ProductTypeEnum productType; + @ApiModelProperty("产品主分类") @NotNull(message = "产品主分类不能为空") private ProductMainCategoryEnum mainCategory; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java index 8a8a9eb..1d13727 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java @@ -2,10 +2,7 @@ package com.qniao.dam.api.query.product.user; import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQueryParam; import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam; -import com.qniao.dam.api.query.product.user.response.UserGetProductDetailByOperatorVo; -import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerGroupVo; -import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerVo; -import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo; +import com.qniao.dam.api.query.product.user.response.*; import com.qniao.dam.query.product.ProductQueryService; import com.qniao.dau.infrastructure.constant.RequestHeaderFields; import com.qniao.domain.QnPage; @@ -45,6 +42,7 @@ public class ProductUserQueryController { /** * todo 考虑放缓存 + * * @param pageUtil * @param queryParam * @param userId @@ -58,9 +56,23 @@ public class ProductUserQueryController { return PageUtil.convert(productQueryService.pageProductByCustomer(pageUtil, queryParam), UserPageProductByCustomerVo.class); } + /** + * todo 考虑放缓存 + * + * @param pageUtil + * @param userId + * @return + */ + @GetMapping("page/product/by/matchmaker") + @ApiOperation("红娘合伙人获取商品分页列表") + public QnPage userPageProductByMatchMaker(PageUtil pageUtil, + @RequestParam("userId") Long userId) { + return PageUtil.convert(productQueryService.pageProductByMatchmaker(pageUtil), UserPageProductByMatchmakerVo.class); + } + @GetMapping("get/product/by/customer/list") @ApiOperation("客户获取商品列表") - public List getPageProductByCustomer(){ + public List getPageProductByCustomer() { return productQueryService.getPageProductByCustomer(); } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByMatchmakerVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByMatchmakerVo.java new file mode 100644 index 0000000..34bf38e --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/response/UserPageProductByMatchmakerVo.java @@ -0,0 +1,45 @@ +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 com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermUnitEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class UserPageProductByMatchmakerVo { + + @ApiModelProperty("商品标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long productId; + + @ApiModelProperty("商品规格标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long productSpecId; + + @ApiModelProperty("产品主分类") + private ProductMainCategoryEnum mainCategory; + + @ApiModelProperty("产品次分类") + private ProductSubCategoryEnum subCategory; + + @ApiModelProperty("产品标题") + private String productTitle; + + @ApiModelProperty("产品描述") + private String productDesc; + + @ApiModelProperty("详情描述") + private String detailDesc; + + @ApiModelProperty("原价") + private BigDecimal unitOriginalPrice; + + @ApiModelProperty("售价") + private BigDecimal unitSellingPrice; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java index 7a20e65..6d51ccb 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java @@ -51,7 +51,7 @@ public class OrderEventHandler extends BaseApplicationService { if (CollUtil.isNotEmpty(order.getOrderItemList())) { List rightList = new ArrayList<>(); for (OrderItem orderItem : order.getOrderItemList()) { - if (ProductTypeEnum.VIRTUAL.equals(orderItem.getProductType())) { + if (ProductTypeEnum.CUSTOMER_VIRTUAL.equals(orderItem.getProductType())) { ProductSpec productSpec = productSpecRepository.load(orderItem.getProductSpecId()); Product product = productRepository.load(productSpec.getProductId()); Right right = rightApplicationService.init(product, productSpec, order, orderItem.getQuantity()); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java index 0fe1c3d..6d6aa66 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java @@ -96,7 +96,7 @@ public class OrderApplicationService { } //1.1. 同类型权益,不同规格,限制购买和提醒 if(order.getGroupType() == null || order.getGroupType() == 0) { - if (ProductTypeEnum.VIRTUAL.equals(product.getProductType())) { + if (ProductTypeEnum.CUSTOMER_VIRTUAL.equals(product.getProductType())) { boolean diffFlag = orderQueryService.checkDiffSpecRight(order, orderItem, productSpec); if (diffFlag) { throw new BizException("您已经拥有相同类型的权益"); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java index 85bae80..65d3025 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java @@ -6,6 +6,7 @@ import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQue import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam; import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerExtendVo; import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerVo; +import com.qniao.dam.api.query.product.user.response.UserPageProductByMatchmakerVo; import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,6 @@ public interface ProductViewDao { List pageProductByOperator(@Param("queryParam") UserPageProductByOperatorQueryParam queryParam); List selectProductByCustomerList(); + + IPage pageProductByMatchmaker(Page pageWithoutOrders); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java index 36a7da2..b631e92 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java @@ -3,10 +3,7 @@ package com.qniao.dam.query.product; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQueryParam; import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam; -import com.qniao.dam.api.query.product.user.response.UserGetProductDetailByOperatorVo; -import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerGroupVo; -import com.qniao.dam.api.query.product.user.response.UserPageProductByCustomerVo; -import com.qniao.dam.api.query.product.user.response.UserPageProductByOperatorVo; +import com.qniao.dam.api.query.product.user.response.*; import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm; import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum; import com.qniao.framework.utils.PageUtil; @@ -23,4 +20,6 @@ public interface ProductQueryService { ProductSpecTerm getTermByName(List productSpecTermList, ProductSpecTermNameEnum name); List getPageProductByCustomer(); + + IPage pageProductByMatchmaker(PageUtil pageUtil); } 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 d7965d4..504fc1e 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 @@ -75,6 +75,11 @@ public class ProductQueryServiceImpl implements ProductQueryService { return productViewDao.pageProductByCustomer(pageUtil.toPageWithoutOrders(), queryParam); } + @Override + public IPage pageProductByMatchmaker(PageUtil pageUtil) { + return productViewDao.pageProductByMatchmaker(pageUtil.toPageWithoutOrders()); + } + @Override public ProductSpecTerm getTermByName(List productSpecTermList, ProductSpecTermNameEnum name) { ProductSpecTerm productSpecTerm = null; @@ -111,6 +116,7 @@ public class ProductQueryServiceImpl implements ProductQueryService { return groupVoList; } + /** * 找出对应name的value */ diff --git a/dating-agency-mall-server/src/main/resources/mapper/product/ProductViewMapper.xml b/dating-agency-mall-server/src/main/resources/mapper/product/ProductViewMapper.xml index 1c814cf..a5e31b0 100644 --- a/dating-agency-mall-server/src/main/resources/mapper/product/ProductViewMapper.xml +++ b/dating-agency-mall-server/src/main/resources/mapper/product/ProductViewMapper.xml @@ -59,7 +59,7 @@ LEFT JOIN da_product_spec_term as dpst2 on dpst2.is_delete=0 and dpst2.product_spec_id =dps.id and dpst2.`name`=3 LEFT JOIN da_product_spec_term as dpst3 on dpst3.is_delete=0 and dpst3.product_spec_id =dps.id and dpst3.`name`=2 LEFT JOIN da_product_spec_term as dpst4 on dpst4.is_delete=0 and dpst4.product_spec_id =dps.id and dpst4.`name`=4 - where dp.is_delete=0 and dp.`status`=1 + where dp.is_delete=0 and dp.`status`=1 and dp.product_type=2 AND dp.sub_category = #{queryParam.subCategory} @@ -118,7 +118,24 @@ LEFT JOIN da_product_spec_term as dpst2 on dpst2.is_delete=0 and dpst2.product_spec_id =dps.id and dpst2.`name`=3 LEFT JOIN da_product_spec_term as dpst3 on dpst3.is_delete=0 and dpst3.product_spec_id =dps.id and dpst3.`name`=2 LEFT JOIN da_product_spec_term as dpst4 on dpst4.is_delete=0 and dpst4.product_spec_id =dps.id and dpst4.`name`=4 - where dp.is_delete=0 and dp.`status`=1 + where dp.is_delete=0 and dp.`status`=1 and dp.product_type=2 + + +