|
|
|
@ -6,6 +6,8 @@ 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; |
|
|
|
import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct; |
|
|
|
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; |
|
|
|
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrderReward; |
|
|
|
import com.qniao.dam.domain.aggregate.order.entity.Order; |
|
|
|
import com.qniao.dam.domain.aggregate.order.entity.OrderItem; |
|
|
|
import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder; |
|
|
|
@ -14,14 +16,17 @@ import com.qniao.dam.domain.aggregate.product.repository.ProductRepository; |
|
|
|
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; |
|
|
|
import com.qniao.dam.domain.aggregate.productspec.repository.ProductSpecRepository; |
|
|
|
import com.qniao.dam.domain.service.order.SubmitOrderDomainService; |
|
|
|
import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; |
|
|
|
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.MarriageBountyOrderDao; |
|
|
|
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.marriagebounty.MarriageBountyOrderQueryService; |
|
|
|
import com.qniao.dam.query.matchmaker.MatchmakerQueryService; |
|
|
|
import com.qniao.dam.query.order.OrderQueryService; |
|
|
|
import com.qniao.dam.query.product.ProductQueryService; |
|
|
|
@ -35,7 +40,9 @@ import javax.annotation.Resource; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Objects; |
|
|
|
import java.util.function.Function; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
@Service |
|
|
|
@ -61,6 +68,8 @@ public class OrderApplicationService { |
|
|
|
private ProductQueryService productQueryService; |
|
|
|
@Resource |
|
|
|
private ProductApplicationService productApplicationService; |
|
|
|
@Resource |
|
|
|
private MarriageBountyOrderQueryService marriageBountyOrderQueryService; |
|
|
|
|
|
|
|
@Value("${marriage_bounty_meeting_quantity:5}") |
|
|
|
private Integer marriageBountyMeetingQuantity; |
|
|
|
@ -181,30 +190,62 @@ public class OrderApplicationService { |
|
|
|
} |
|
|
|
|
|
|
|
private void fillMarriageBountyOrderInfo(Order order, List<Product> productList) { |
|
|
|
MarriageBountyOrder marriageBountyOrder = marriageBountyOrderQueryService.queryBy(order.getUserId(), order.getMiId(), MarriageBountyOrderStatusEnum.MATCHMAKING); |
|
|
|
order.setOrderBelonging(OrderBelongingEnum.CUSTOMER); |
|
|
|
MarriageInformation marriageInformation = marriageInformationDao.selectById(order.getMiId()); |
|
|
|
order.setOrderBelongName(marriageInformation.getNickName()); |
|
|
|
order.setOrderType(OrderTypeEnum.MARRIAGE_BOUNTY); |
|
|
|
if (CollUtil.isNotEmpty(productList)) { |
|
|
|
List<OrderItem> orderItemList = new ArrayList<>(); |
|
|
|
for (Product product : productList) { |
|
|
|
ProductSpec productSpec = product.getProductSpecList().get(0); |
|
|
|
OrderItem orderItem = new OrderItem(); |
|
|
|
orderItem.setProductId(product.getId()); |
|
|
|
orderItem.setProductSpecId(productSpec.getId()); |
|
|
|
orderItem.setProductType(product.getProductType()); |
|
|
|
orderItem.setMainCategory(product.getMainCategory()); |
|
|
|
orderItem.setSubCategory(product.getSubCategory()); |
|
|
|
orderItem.setProductTitle(product.getProductTitle()); |
|
|
|
orderItem.setProductDesc(product.getProductDesc()); |
|
|
|
orderItem.setUnitSettlementPrice(productSpec.getUnitSellingPrice()); |
|
|
|
orderItem.setQuantity(1); |
|
|
|
if (ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE.equals(product.getSubCategory())) { |
|
|
|
orderItem.setQuantity(marriageBountyMeetingQuantity); |
|
|
|
if (Objects.isNull(marriageBountyOrder)) { |
|
|
|
List<OrderItem> orderItemList = new ArrayList<>(); |
|
|
|
for (Product product : productList) { |
|
|
|
ProductSpec productSpec = product.getProductSpecList().get(0); |
|
|
|
OrderItem orderItem = new OrderItem(); |
|
|
|
orderItem.setProductId(product.getId()); |
|
|
|
orderItem.setProductSpecId(productSpec.getId()); |
|
|
|
orderItem.setProductType(product.getProductType()); |
|
|
|
orderItem.setMainCategory(product.getMainCategory()); |
|
|
|
orderItem.setSubCategory(product.getSubCategory()); |
|
|
|
orderItem.setProductTitle(product.getProductTitle()); |
|
|
|
orderItem.setProductDesc(product.getProductDesc()); |
|
|
|
orderItem.setUnitSettlementPrice(productSpec.getUnitSellingPrice()); |
|
|
|
orderItem.setQuantity(1); |
|
|
|
if (ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE.equals(product.getSubCategory())) { |
|
|
|
orderItem.setQuantity(marriageBountyMeetingQuantity); |
|
|
|
} |
|
|
|
orderItemList.add(orderItem); |
|
|
|
} |
|
|
|
order.setOrderItemList(orderItemList); |
|
|
|
} else { |
|
|
|
List<MarriageBountyOrderReward> orderRewardList = marriageBountyOrder.getOrderRewardList(); |
|
|
|
List<OrderItem> orderItemList = new ArrayList<>(); |
|
|
|
for (Product product : productList) { |
|
|
|
ProductSpec productSpec = product.getProductSpecList().get(0); |
|
|
|
Integer quantity = 0; |
|
|
|
BigDecimal unitSettlementPrice = BigDecimal.ZERO; |
|
|
|
for (MarriageBountyOrderReward orderReward : orderRewardList) { |
|
|
|
if (product.getSubCategory().equals(orderReward.getRewardCategory()) && !orderReward.getIsReceive()) { |
|
|
|
quantity++; |
|
|
|
unitSettlementPrice = productSpec.getUnitSellingPrice().subtract(orderReward.getRewardAmount()); |
|
|
|
} |
|
|
|
} |
|
|
|
if (unitSettlementPrice.compareTo(BigDecimal.ZERO) <= 0) { |
|
|
|
throw new BizException("悬赏价格修改差价不能小于0"); |
|
|
|
} |
|
|
|
OrderItem orderItem = new OrderItem(); |
|
|
|
orderItem.setProductId(product.getId()); |
|
|
|
orderItem.setProductSpecId(productSpec.getId()); |
|
|
|
orderItem.setProductType(product.getProductType()); |
|
|
|
orderItem.setMainCategory(product.getMainCategory()); |
|
|
|
orderItem.setSubCategory(product.getSubCategory()); |
|
|
|
orderItem.setProductTitle(product.getProductTitle()); |
|
|
|
orderItem.setProductDesc(product.getProductDesc()); |
|
|
|
orderItem.setUnitSettlementPrice(unitSettlementPrice); |
|
|
|
orderItem.setQuantity(quantity); |
|
|
|
orderItemList.add(orderItem); |
|
|
|
} |
|
|
|
orderItemList.add(orderItem); |
|
|
|
order.setOrderItemList(orderItemList); |
|
|
|
} |
|
|
|
order.setOrderItemList(orderItemList); |
|
|
|
} |
|
|
|
} |
|
|
|
} |