From a96a5c656e1605768006e44a20c363b26d071d48 Mon Sep 17 00:00:00 2001 From: Derran Date: Mon, 20 May 2024 17:48:49 +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 --- .../handler/product/ProductEventHandler.java | 98 ++++++++++++------- 1 file changed, 62 insertions(+), 36 deletions(-) diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/product/ProductEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/product/ProductEventHandler.java index 8813756..fbceebf 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/product/ProductEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/product/ProductEventHandler.java @@ -1,10 +1,13 @@ package com.qniao.dam.application.handler.product; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qniao.dam.application.service.product.ProductApplicationService; import com.qniao.dam.domain.aggregate.externalproduct.valueobj.ExternalProductRel; import com.qniao.dam.domain.aggregate.product.entity.Product; +import com.qniao.dam.domain.aggregate.product.repository.ProductRepository; import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; +import com.qniao.dam.domain.service.product.EditProductDomainService; import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductStatusEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; @@ -12,6 +15,8 @@ import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum; import com.qniao.dam.infrastructure.constant.MqExchange; import com.qniao.dam.infrastructure.constant.MqQueue; import com.qniao.dam.infrastructure.persistent.dao.domain.ExternalProductRelDao; +import com.qniao.dam.infrastructure.persistent.dao.domain.ProductDao; +import com.qniao.dam.query.product.ProductQueryService; import com.qniao.das.domian.aggregate.siteactivity.event.SiteActivityCreatedMQEvent; import com.qniao.domain.BaseApplicationService; import lombok.extern.slf4j.Slf4j; @@ -23,6 +28,7 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -35,48 +41,68 @@ public class ProductEventHandler extends BaseApplicationService { private ProductApplicationService productApplicationService; @Resource private ExternalProductRelDao externalProductRelDao; + @Resource + private ProductDao productDao; + @Resource + private ProductQueryService productQueryService; + @Resource + private EditProductDomainService editProductDomainService; @RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.SITE_ACTIVITY_CREATED), exchange = @Exchange(value = MqExchange.SITE_ACTIVITY_CREATED, type = ExchangeTypes.FANOUT))) public void handleConfirmMatch(SiteActivityCreatedMQEvent event) { try { - List list = new ArrayList<>(); - //男性线下活动产品 - Product siteActivityManProduct = new Product(); - siteActivityManProduct.setManageEnable(false); - siteActivityManProduct.setProductType(ProductTypeEnum.CUSTOMER_VIRTUAL); - siteActivityManProduct.setMainCategory(ProductMainCategoryEnum.SITE_ACTIVITY); - siteActivityManProduct.setSubCategory(ProductSubCategoryEnum.SITE_ACTIVITY_MAN_FEE); - siteActivityManProduct.setProductTitle(ProductSubCategoryEnum.SITE_ACTIVITY_MAN_FEE.getDesc()); - siteActivityManProduct.setStatus(ProductStatusEnum.SOLD_OUTED); - ProductSpec siteActivityManProductSpec = new ProductSpec(); - siteActivityManProductSpec.setUnitOriginalPrice(event.getManEntryFee()); - siteActivityManProductSpec.setUnitSellingPrice(event.getManEntryFee()); - siteActivityManProductSpec.setAvailableStockNumber(-1); - siteActivityManProduct.setStatus(ProductStatusEnum.SOLD_OUTED); - siteActivityManProduct.setProductSpecList(Collections.singletonList(siteActivityManProductSpec)); - list.add(siteActivityManProduct); - //女性线下活动产品 - Product siteActivityWomanProduct = new Product(); - siteActivityWomanProduct.setManageEnable(false); - siteActivityWomanProduct.setProductType(ProductTypeEnum.CUSTOMER_VIRTUAL); - siteActivityWomanProduct.setMainCategory(ProductMainCategoryEnum.SITE_ACTIVITY); - siteActivityWomanProduct.setSubCategory(ProductSubCategoryEnum.MARRIAGE_BOUNTY_WOMAN_FEE); - siteActivityWomanProduct.setProductTitle(ProductSubCategoryEnum.MARRIAGE_BOUNTY_WOMAN_FEE.getDesc()); - siteActivityWomanProduct.setStatus(ProductStatusEnum.SOLD_OUTED); - ProductSpec siteActivityWomanProductSpec = new ProductSpec(); - siteActivityWomanProductSpec.setUnitOriginalPrice(event.getWomanEntryFee()); - siteActivityWomanProductSpec.setUnitSellingPrice(event.getWomanEntryFee()); - siteActivityWomanProductSpec.setAvailableStockNumber(-1); - siteActivityWomanProduct.setStatus(ProductStatusEnum.SOLD_OUTED); - siteActivityWomanProduct.setProductSpecList(Collections.singletonList(siteActivityWomanProductSpec)); - list.add(siteActivityWomanProduct); - externalProductRelDao.delete(new LambdaQueryWrapper().eq(ExternalProductRel::getExternalId, event.getSiteActivityId())); - for (Product product : list) { - productApplicationService.create(product, product.getProductSpecList()); - ExternalProductRel externalProductRel = ExternalProductRel.build(event.getSiteActivityId(), product.getId()); - externalProductRelDao.insert(externalProductRel); + List existExternalProductRelList = externalProductRelDao.selectList(new LambdaQueryWrapper() + .eq(ExternalProductRel::getExternalId, event.getSiteActivityId())); + if (CollUtil.isNotEmpty(existExternalProductRelList)) { + for (ExternalProductRel externalProductRel : existExternalProductRelList) { + Product product = productDao.selectById(externalProductRel.getProductId()); + BigDecimal unitSellingPrice = ProductSubCategoryEnum.SITE_ACTIVITY_MAN_FEE.equals(product.getSubCategory())?event.getManEntryFee():event.getWomanEntryFee(); + List productSpecList = productQueryService.listProductSpecBy(product.getId()); + for (ProductSpec productSpec : productSpecList) { + productSpec.setUnitOriginalPrice(unitSellingPrice); + productSpec.setUnitSellingPrice(unitSellingPrice); + } + editProductDomainService.handle(product, productSpecList); + } + } else { + List list = new ArrayList<>(); + //男性线下活动产品 + Product siteActivityManProduct = new Product(); + siteActivityManProduct.setManageEnable(false); + siteActivityManProduct.setProductType(ProductTypeEnum.CUSTOMER_VIRTUAL); + siteActivityManProduct.setMainCategory(ProductMainCategoryEnum.SITE_ACTIVITY); + siteActivityManProduct.setSubCategory(ProductSubCategoryEnum.SITE_ACTIVITY_MAN_FEE); + siteActivityManProduct.setProductTitle(ProductSubCategoryEnum.SITE_ACTIVITY_MAN_FEE.getDesc()); + siteActivityManProduct.setStatus(ProductStatusEnum.SOLD_OUTED); + ProductSpec siteActivityManProductSpec = new ProductSpec(); + siteActivityManProductSpec.setUnitOriginalPrice(event.getManEntryFee()); + siteActivityManProductSpec.setUnitSellingPrice(event.getManEntryFee()); + siteActivityManProductSpec.setAvailableStockNumber(-1); + siteActivityManProduct.setStatus(ProductStatusEnum.SOLD_OUTED); + siteActivityManProduct.setProductSpecList(Collections.singletonList(siteActivityManProductSpec)); + list.add(siteActivityManProduct); + //女性线下活动产品 + Product siteActivityWomanProduct = new Product(); + siteActivityWomanProduct.setManageEnable(false); + siteActivityWomanProduct.setProductType(ProductTypeEnum.CUSTOMER_VIRTUAL); + siteActivityWomanProduct.setMainCategory(ProductMainCategoryEnum.SITE_ACTIVITY); + siteActivityWomanProduct.setSubCategory(ProductSubCategoryEnum.MARRIAGE_BOUNTY_WOMAN_FEE); + siteActivityWomanProduct.setProductTitle(ProductSubCategoryEnum.MARRIAGE_BOUNTY_WOMAN_FEE.getDesc()); + siteActivityWomanProduct.setStatus(ProductStatusEnum.SOLD_OUTED); + ProductSpec siteActivityWomanProductSpec = new ProductSpec(); + siteActivityWomanProductSpec.setUnitOriginalPrice(event.getWomanEntryFee()); + siteActivityWomanProductSpec.setUnitSellingPrice(event.getWomanEntryFee()); + siteActivityWomanProductSpec.setAvailableStockNumber(-1); + siteActivityWomanProduct.setStatus(ProductStatusEnum.SOLD_OUTED); + siteActivityWomanProduct.setProductSpecList(Collections.singletonList(siteActivityWomanProductSpec)); + list.add(siteActivityWomanProduct); + for (Product product : list) { + productApplicationService.create(product, product.getProductSpecList()); + ExternalProductRel externalProductRel = ExternalProductRel.build(event.getSiteActivityId(), product.getId()); + externalProductRelDao.insert(externalProductRel); + } } } catch (Exception e) { log.error("线下活动事件已创建处理异常:", e);