Browse Source

基础配置

master
张彭杰 1 year ago
parent
commit
369c1afaa5
3 changed files with 62 additions and 11 deletions
  1. 23
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java
  2. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java
  3. 43
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java

23
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java

@ -1,6 +1,7 @@
package com.qniao.dam.application.service.order;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Tuple;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qniao.dam.api.command.order.user.response.UserSubmitOrderVo;
import com.qniao.dam.application.service.product.ProductApplicationService;
@ -19,9 +20,11 @@ import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum;
import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityProductDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao;
import com.qniao.dam.infrastructure.utils.CompareEntityUtil;
import com.qniao.dam.infrastructure.utils.SnowFlakeUtil;
import com.qniao.dam.query.matchmaker.MatchmakerQueryService;
import com.qniao.dam.query.order.OrderQueryService;
import com.qniao.dam.query.product.ProductQueryService;
import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation;
import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker;
import com.qniao.framework.exception.BizException;
@ -33,6 +36,7 @@ import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
public class OrderApplicationService {
@ -54,6 +58,8 @@ public class OrderApplicationService {
@Resource
private MatchmakerQueryService matchmakerQueryService;
@Resource
private ProductQueryService productQueryService;
@Resource
private ProductApplicationService productApplicationService;
@Value("${marriage_bounty_meeting_quantity:5}")
@ -146,7 +152,7 @@ public class OrderApplicationService {
*/
public UserSubmitOrderVo submitMarriageBountyOrder(Order order, List<Product> productList) {
//1. 提交产品信息
productList.forEach(product -> productApplicationService.create(product, product.getProductSpecList()));
productList.forEach(product -> handleProduct(product, product.getProductSpecList()));
//2. 填充订单信息
fillMarriageBountyOrderInfo(order, productList);
//3. 订单金额计算
@ -159,6 +165,21 @@ public class OrderApplicationService {
return new UserSubmitOrderVo(order.getId(), paymentOrder.getId());
}
private void handleProduct(Product product,
List<ProductSpec> productSpecList) {
Product existProduct = productQueryService.queryBy(product.getUserId(), product.getMiId(), product.getSubCategory());
if (Objects.isNull(existProduct)) {
productApplicationService.create(product, productSpecList);
} else {
product.setId(existProduct.getId());
List<ProductSpec> existProductSpecList = productQueryService.listProductSpecBy(existProduct.getId());
for (int i = 0; i < existProductSpecList.size() - 1; i++) {
productSpecList.get(i).setId(existProductSpecList.get(0).getId());
}
productApplicationService.edit(product, productSpecList);
}
}
private void fillMarriageBountyOrderInfo(Order order, List<Product> productList) {
order.setOrderBelonging(OrderBelongingEnum.CUSTOMER);
MarriageInformation marriageInformation = marriageInformationDao.selectById(order.getMiId());

7
dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java

@ -5,7 +5,10 @@ import com.qniao.dam.api.query.product.user.request.UserPageProductByCustomerQue
import com.qniao.dam.api.query.product.user.request.UserPageProductByMatchmakerQueryParam;
import com.qniao.dam.api.query.product.user.request.UserPageProductByOperatorQueryParam;
import com.qniao.dam.api.query.product.user.response.*;
import com.qniao.dam.domain.aggregate.product.entity.Product;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum;
import com.qniao.framework.utils.PageUtil;
@ -23,4 +26,8 @@ public interface ProductQueryService {
List<UserPageProductByCustomerGroupVo> getPageProductByCustomer();
IPage<UserPageProductByMatchmakerVo> pageProductByMatchmaker(PageUtil pageUtil, UserPageProductByMatchmakerQueryParam queryParam);
Product queryBy(Long userId, Long miId, ProductSubCategoryEnum subCategory);
List<ProductSpec> listProductSpecBy(Long productId);
}

43
dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java

@ -10,6 +10,7 @@ import com.qniao.dam.api.query.product.user.response.*;
import com.qniao.dam.domain.aggregate.product.entity.Product;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermUnitEnum;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductDao;
@ -78,7 +79,29 @@ public class ProductQueryServiceImpl implements ProductQueryService {
@Override
public IPage<UserPageProductByMatchmakerVo> pageProductByMatchmaker(PageUtil pageUtil, UserPageProductByMatchmakerQueryParam queryParam) {
return productViewDao.pageProductByMatchmaker(pageUtil.toPageWithoutOrders(),queryParam);
return productViewDao.pageProductByMatchmaker(pageUtil.toPageWithoutOrders(), queryParam);
}
@Override
public Product queryBy(Long userId, Long miId, ProductSubCategoryEnum subCategory) {
return productDao.selectOne(new LambdaQueryWrapper<Product>()
.eq(Product::getUserId, userId)
.eq(Product::getMiId, miId)
.eq(Product::getSubCategory, subCategory)
.last("limit 1"));
}
@Override
public List<ProductSpec> listProductSpecBy(Long productId) {
List<ProductSpec> productSpecList = productSpecDao.selectList(new LambdaQueryWrapper<ProductSpec>()
.eq(ProductSpec::getProductId, productId));
if (CollUtil.isNotEmpty(productSpecList)) {
productSpecList.forEach(productSpec -> {
productSpec.setProductSpecTermList(productSpecTermDao.selectList(new LambdaQueryWrapper<ProductSpecTerm>()
.eq(ProductSpecTerm::getProductSpecId, productSpec.getId())));
});
}
return productSpecList;
}
@Override
@ -98,20 +121,20 @@ public class ProductQueryServiceImpl implements ProductQueryService {
@Override
public List<UserPageProductByCustomerGroupVo> getPageProductByCustomer() {
List<UserPageProductByCustomerGroupVo> groupVoList = new ArrayList<>();
List<UserPageProductByCustomerExtendVo> extendVos = productViewDao.selectProductByCustomerList();
Map<Long,List<UserPageProductByCustomerExtendVo>> extMap = extendVos.stream().collect(Collectors.groupingBy(UserPageProductByCustomerExtendVo::getId));
extMap.forEach((k,v)->{
List<UserPageProductByCustomerExtendVo> extendVos = productViewDao.selectProductByCustomerList();
Map<Long, List<UserPageProductByCustomerExtendVo>> extMap = extendVos.stream().collect(Collectors.groupingBy(UserPageProductByCustomerExtendVo::getId));
extMap.forEach((k, v) -> {
UserPageProductByCustomerExtendVo extendVo = v.get(0);
if(extendVo.getGroupType() == 0){
if (extendVo.getGroupType() == 0) {
extendVo.setProductName(extendVo.getProductTitle());
}
BigDecimal unitOriginalPrice = v.stream().map(UserPageProductByCustomerExtendVo::getUnitOriginalPrice).reduce(BigDecimal.ZERO,BigDecimal::add);
BigDecimal unitSellingPrice = v.stream().map(UserPageProductByCustomerExtendVo::getUnitSellingPrice).reduce(BigDecimal.ZERO,BigDecimal::add);
UserPageProductByCustomerGroupVo vo = TypeConvertUtils.convert(extendVo,UserPageProductByCustomerGroupVo.class);
BigDecimal unitOriginalPrice = v.stream().map(UserPageProductByCustomerExtendVo::getUnitOriginalPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal unitSellingPrice = v.stream().map(UserPageProductByCustomerExtendVo::getUnitSellingPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
UserPageProductByCustomerGroupVo vo = TypeConvertUtils.convert(extendVo, UserPageProductByCustomerGroupVo.class);
vo.setActivityId(extendVo.getId());
vo.setUnitSellingPrice(unitSellingPrice);
vo.setUnitOriginalPrice(unitOriginalPrice);
vo.setProductList(TypeConvertUtils.convert(v,UserPageProductByCustomerVo.class));
vo.setProductList(TypeConvertUtils.convert(v, UserPageProductByCustomerVo.class));
groupVoList.add(vo);
});
return groupVoList;
@ -152,7 +175,7 @@ public class ProductQueryServiceImpl implements ProductQueryService {
return unitEnum;
}
private ProductSpec queryProductSpecByProductId(Long productId) {
public ProductSpec queryProductSpecByProductId(Long productId) {
ProductSpec productSpec = productSpecDao.selectOne(new LambdaQueryWrapper<ProductSpec>()
.eq(ProductSpec::getProductId, productId)
.last("limit 1"));

Loading…
Cancel
Save