From bc468cc248f3a22b5bc8f9283ffbea7f2dba1c48 Mon Sep 17 00:00:00 2001 From: Derran Date: Mon, 25 Nov 2024 16:48:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A2=E5=A8=98=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/OrderApplicationService.java | 14 +++++++++++ ...PaymentChannelOrderApplicationService.java | 24 ++++++++++++++++--- .../aggregate/order/OrderAggregate.java | 4 ++++ .../dam/query/order/OrderQueryService.java | 5 ++++ .../order/impl/OrderQueryServiceImpl.java | 14 +++++++++++ 5 files changed, 58 insertions(+), 3 deletions(-) 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 787eff1..7d0c831 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 @@ -29,6 +29,7 @@ import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrder import com.qniao.dam.domian.aggregate.marriagebount.constant.PublishIdentityTypeEnum; import com.qniao.dam.domian.aggregate.order.constant.MatchmakerOrderTypeEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; +import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum; 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; @@ -55,6 +56,7 @@ import com.qniao.domain.BaseApplicationService; import com.qniao.domain.BaseDomainEvent; import com.qniao.framework.exception.BizException; import com.qniao.framework.utils.TypeConvertUtils; +import org.checkerframework.checker.units.qual.C; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -469,6 +471,8 @@ public class OrderApplicationService extends BaseApplicationService { MatchmakerOrderTypeEnum matchmakerOrderType) { //1. 填充订单信息 + 同类型权益,不同规格,限制购买和提醒 fillOrderInfo(order); + //2. 结束历史订单 + cancelHisOrder(order); //2. 订单金额计算 countMatchMakerOrderAmount(order, matchmakerOrderType); //3. 设置订单号 @@ -479,6 +483,16 @@ public class OrderApplicationService extends BaseApplicationService { return new UserSubmitOrderVo(order.getId(), paymentOrder.getId(), false); } + private void cancelHisOrder(Order order) { + List orderList = orderQueryService.listHis(order.getUserId(), order.getOrderBelonging(), OrderStatusEnum.UNPAID); + if (CollUtil.isNotEmpty(orderList)) { + orderList.forEach(hsiOrder->{ + hsiOrder.setStatus(OrderStatusEnum.CANCELED); + orderAggregate.save(order); + }); + } + } + private void countMatchMakerOrderAmount(Order order, MatchmakerOrderTypeEnum matchmakerOrderType) { if (CollUtil.isNotEmpty(order.getOrderItemList())) { diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/paymentchannelorder/PaymentChannelOrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/paymentchannelorder/PaymentChannelOrderApplicationService.java index 0d6f95c..777704f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/paymentchannelorder/PaymentChannelOrderApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/paymentchannelorder/PaymentChannelOrderApplicationService.java @@ -2,18 +2,36 @@ package com.qniao.dam.application.service.paymentchannelorder; import com.qniao.dam.api.command.paymentchannelorder.user.request.ThirdPartyField; import com.qniao.dam.application.service.paymentchannelorder.processor.IChannelPayService; +import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.paymentchannelorder.entity.PaymentChannelOrder; +import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder; +import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum; +import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao; +import com.qniao.dam.infrastructure.persistent.dao.domain.PaymentChannelOrderDao; +import com.qniao.dam.infrastructure.persistent.dao.domain.PaymentOrderDao; +import com.qniao.framework.exception.BizException; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; import java.util.List; import java.util.Map; @Service public class PaymentChannelOrderApplicationService { - /* - * todo 旧的付款单失效处理? - */ + + @Resource + private PaymentOrderDao paymentOrderDao; + @Resource + private OrderDao orderDao; + public Map prePay(PaymentChannelOrder paymentChannelOrder, List fieldList, Long appFrom) { IChannelPayService channelPayService = IChannelPayService.getService(paymentChannelOrder.getPaymentMethod()); + //判断是否支付 + PaymentOrder paymentOrder = paymentOrderDao.selectById(paymentChannelOrder.getTxnOrderId()); + Order order = orderDao.selectById(paymentOrder.getOrderId()); + if (OrderStatusEnum.UNPAID.equals(order.getStatus())) { + throw new BizException("订单已失效"); + } return channelPayService.prepay(paymentChannelOrder, fieldList, appFrom); } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/order/OrderAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/order/OrderAggregate.java index c8d615c..d688f12 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/order/OrderAggregate.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/order/OrderAggregate.java @@ -25,4 +25,8 @@ public class OrderAggregate { orderRepository.save(order); return new OrderCompletedEvent(order.getId()); } + + public void save(Order order) { + orderRepository.save(order); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java index e2574d9..ae763bf 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java @@ -8,10 +8,14 @@ import com.qniao.dam.api.query.order.user.response.UserPageOrderByOperatorVo; import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.order.entity.OrderItem; import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; +import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; +import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.domain.QnPage; import com.qniao.framework.utils.PageUtil; +import java.util.List; + public interface OrderQueryService { IPage pageOrderByOperator(PageUtil pageUtil, UserPageOrderByOperatorQueryParam queryParam); @@ -24,4 +28,5 @@ public interface OrderQueryService { Order queryBySubCategory(Long userId,ProductSubCategoryEnum subCategory); + List listHis(Long userId, OrderBelongingEnum orderBelonging, OrderStatusEnum status); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java index 50efd88..6a9b50f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java @@ -1,5 +1,6 @@ package com.qniao.dam.query.order.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.query.order.user.request.UserPageOrderByOperatorQueryParam; import com.qniao.dam.api.query.order.user.response.GetOrderStatisticsByOperatorVo; @@ -14,10 +15,13 @@ import com.qniao.dam.domain.aggregate.productspec.repository.ProductSpecReposito import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm; import com.qniao.dam.domain.aggregate.right.entity.Right; import com.qniao.dam.domain.aggregate.right.entity.RightTerm; +import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; +import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum; import com.qniao.dam.domian.aggregate.right.constant.RightNameEnum; import com.qniao.dam.domian.aggregate.right.constant.RightTypeEnum; +import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao; import com.qniao.dam.infrastructure.persistent.dao.view.OrderViewDao; import com.qniao.dam.query.order.OrderQueryService; import com.qniao.dam.query.product.ProductQueryService; @@ -35,6 +39,8 @@ import java.util.stream.Collectors; @Service public class OrderQueryServiceImpl implements OrderQueryService { + @Resource + private OrderDao orderDao; @Resource private OrderViewDao orderViewDao; @Resource @@ -87,4 +93,12 @@ public class OrderQueryServiceImpl implements OrderQueryService { public Order queryBySubCategory(Long userId, ProductSubCategoryEnum subCategory) { return orderViewDao.queryBySubCategory(userId, subCategory); } + + @Override + public List listHis(Long userId, OrderBelongingEnum orderBelonging, OrderStatusEnum status) { + return orderDao.selectList(new LambdaQueryWrapper() + .eq(Order::getUserId,userId) + .eq(Order::getOrderBelonging,orderBelonging) + .eq(Order::getStatus,status)); + } }