From faef826588d1811030069eafbe5bfc3ffa08dea9 Mon Sep 17 00:00:00 2001 From: Derran Date: Mon, 20 May 2024 14:19:17 +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 | 1 + .../constant/ProductSubCategoryEnum.java | 4 ++ .../valueobj/ExternalProductRel.java | 6 ++ .../handler/product/ProductEventHandler.java | 55 +++++++++++++++++-- 4 files changed, 62 insertions(+), 4 deletions(-) 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 289a43d..dc74509 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 @@ -20,6 +20,7 @@ public enum ProductMainCategoryEnum { CHAT_CARD(5,"聊天卡"), VIP(6, "会员"), MARRIAGE_BOUNTY(7, "悬赏招亲"), + SITE_ACTIVITY(8, "线下活动"), MATCHMAKER(888,"红娘合伙人"); 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 e06078f..5d1005e 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 @@ -38,6 +38,10 @@ public enum ProductSubCategoryEnum { MARRIAGE_BOUNTY_RESULT_GIFT(902, "悬赏招亲-结果礼金"), + SITE_ACTIVITY_MAN_FEE(1001, "线下活动男性费用"), + + MARRIAGE_BOUNTY_WOMAN_FEE(1002, "线下活动女性费用"), + MATCHMAKER_FRANCHISE_FEE(88801, "红娘合伙人加盟费"); @EnumValue diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/externalproduct/valueobj/ExternalProductRel.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/externalproduct/valueobj/ExternalProductRel.java index f8c6f89..dcc244d 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/externalproduct/valueobj/ExternalProductRel.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/externalproduct/valueobj/ExternalProductRel.java @@ -17,4 +17,10 @@ public class ExternalProductRel extends ValueObject { @ApiModelProperty("产品标识") private Long productId; + public static ExternalProductRel build(Long externalId, Long productId) { + ExternalProductRel rel = new ExternalProductRel(); + rel.setExternalId(externalId); + rel.setProductId(productId); + return rel; + } } 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 fddabc5..51978f0 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,9 +1,16 @@ package com.qniao.dam.application.handler.product; -import com.qniao.dam.domain.aggregate.product.ProductAggregate; +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.productspec.entity.ProductSpec; +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; +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.das.domian.aggregate.siteactivity.event.SiteActivityCreatedMQEvent; import com.qniao.domain.BaseApplicationService; import lombok.extern.slf4j.Slf4j; @@ -15,21 +22,61 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; @Component @Slf4j public class ProductEventHandler extends BaseApplicationService { @Resource - private ProductAggregate productAggregate; + private ProductApplicationService productApplicationService; + @Resource + private ExternalProductRelDao externalProductRelDao; @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 { - Product product = new Product(); - }catch (Exception e){ + 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); } }