Browse Source

基础配置

master
张彭杰 1 year ago
parent
commit
a96a5c656e
1 changed files with 62 additions and 36 deletions
  1. 98
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/product/ProductEventHandler.java

98
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<Product> 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<ExternalProductRel>().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<ExternalProductRel> existExternalProductRelList = externalProductRelDao.selectList(new LambdaQueryWrapper<ExternalProductRel>()
.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<ProductSpec> productSpecList = productQueryService.listProductSpecBy(product.getId());
for (ProductSpec productSpec : productSpecList) {
productSpec.setUnitOriginalPrice(unitSellingPrice);
productSpec.setUnitSellingPrice(unitSellingPrice);
}
editProductDomainService.handle(product, productSpecList);
}
} else {
List<Product> 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);

Loading…
Cancel
Save