From aaeee781444acdc19d7a81fbc5c42d694e520b87 Mon Sep 17 00:00:00 2001 From: Derran Date: Tue, 30 Apr 2024 15:28:50 +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 --- ...MarriageBountyOrderApplicationService.java | 3 +- .../order/OrderApplicationService.java | 75 ++++++++++++++----- .../MarriageBountyOrderQueryService.java | 3 +- .../MarriageBountyOrderQueryServiceImpl.java | 4 +- 4 files changed, 64 insertions(+), 21 deletions(-) diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java index c248cb6..2aeede6 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java @@ -9,6 +9,7 @@ import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrde import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.order.repository.OrderRepository; import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; +import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecDao; import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; @@ -33,7 +34,7 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic public void save(Long orderId) { Order order = orderRepository.load(orderId); - MarriageBountyOrder marriageBountyOrder = marriageBountyOrderQueryService.queryBy(order.getUserId(), order.getMiId()); + MarriageBountyOrder marriageBountyOrder = marriageBountyOrderQueryService.queryBy(order.getUserId(), order.getMiId(), MarriageBountyOrderStatusEnum.MATCHMAKING); if (Objects.isNull(marriageBountyOrder)) { //新的悬赏招亲 marriageBountyOrder = MarriageBountyOrder.build(order.getUserId(), order.getMiId()); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java index 2dd824d..459dcfb 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java @@ -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 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 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 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 orderRewardList = marriageBountyOrder.getOrderRewardList(); + List 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); } } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/MarriageBountyOrderQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/MarriageBountyOrderQueryService.java index 42332db..a8d5c44 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/MarriageBountyOrderQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/MarriageBountyOrderQueryService.java @@ -1,7 +1,8 @@ package com.qniao.dam.query.marriagebounty; import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; +import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum; public interface MarriageBountyOrderQueryService { - MarriageBountyOrder queryBy(Long userId, Long miId); + MarriageBountyOrder queryBy(Long userId, Long miId, MarriageBountyOrderStatusEnum status); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java index dfc450a..eaae3f5 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java @@ -21,11 +21,11 @@ public class MarriageBountyOrderQueryServiceImpl implements MarriageBountyOrderQ private MarriageBountyOrderRewardDao marriageBountyOrderRewardDao; @Override - public MarriageBountyOrder queryBy(Long userId, Long miId) { + public MarriageBountyOrder queryBy(Long userId, Long miId,MarriageBountyOrderStatusEnum status) { MarriageBountyOrder marriageBountyOrder = marriageBountyOrderDao.selectOne(new LambdaQueryWrapper() .eq(MarriageBountyOrder::getUserId, userId) .eq(MarriageBountyOrder::getMiId, miId) - .eq(MarriageBountyOrder::getStatus, MarriageBountyOrderStatusEnum.MATCHMAKING) + .eq(MarriageBountyOrder::getStatus, status) .orderByDesc(MarriageBountyOrder::getCreateTime) .last("limit 1")); if (Objects.nonNull(marriageBountyOrder)) {