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); } }