From c2367f763fef28d60f6c74d81a4eaab781588c4d Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 7 Jun 2021 17:36:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=94=AF=E4=BB=98=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E4=B8=BA0=E6=97=B6=E9=97=AE=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/impl/OrderStatusHandlerExecute.java | 31 +++++++++++++++++++ .../java/cn/lili/common/enums/ResultCode.java | 1 + .../modules/order/order/entity/dos/Order.java | 2 ++ .../modules/payment/kit/CashierSupport.java | 24 +++++++++----- 4 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 consumer/src/main/java/cn/lili/event/impl/OrderStatusHandlerExecute.java diff --git a/consumer/src/main/java/cn/lili/event/impl/OrderStatusHandlerExecute.java b/consumer/src/main/java/cn/lili/event/impl/OrderStatusHandlerExecute.java new file mode 100644 index 00000000..8d99bace --- /dev/null +++ b/consumer/src/main/java/cn/lili/event/impl/OrderStatusHandlerExecute.java @@ -0,0 +1,31 @@ +package cn.lili.event.impl; + +import cn.lili.event.TradeEvent; +import cn.lili.modules.order.cart.entity.dto.TradeDTO; +import cn.lili.modules.order.order.service.TradeService; +import cn.lili.modules.payment.kit.enums.PaymentMethodEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 订单状态处理类 + * + * @author Chopper + * @date 2020-07-03 11:20 + **/ +@Service +public class OrderStatusHandlerExecute implements TradeEvent { + + + @Autowired + private TradeService tradeService; + + @Override + public void orderCreate(TradeDTO tradeDTO) { + //如果订单需要支付金额为0,则将订单步入到下一个流程 + if (tradeDTO.getPriceDetailDTO().getFlowPrice() <= 0) { + tradeService.payTrade(tradeDTO.getSn(), PaymentMethodEnum.BANK_TRANSFER.name(), "-1"); + } + + } +} diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index bf09e875..1dd7c69a 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -141,6 +141,7 @@ public enum ResultCode { /** * 支付 */ + PAY_UN_WANTED(32000, "当前订单不需要付款,返回订单列表等待系统订单出库即可"), PAY_SUCCESS(32001, "支付成功"), PAY_INCONSISTENT_ERROR(32002, "付款金额和应付金额不一致"), PAY_DOUBLE_ERROR(32003, "订单已支付,不能再次进行支付"), diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java index c0f2ac75..a1418dca 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/Order.java @@ -220,6 +220,8 @@ public class Order extends BaseEntity { } } } + + //设置默认支付状态 this.setOrderStatus(OrderStatusEnum.UNPAID.name()); this.setPayStatus(PayStatusEnum.UNPAID.name()); this.setDeliverStatus(DeliverStatusEnum.UNDELIVERED.name()); diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java b/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java index edb46b81..a8dfeb19 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/CashierSupport.java @@ -145,20 +145,28 @@ public class CashierSupport { public CashierParam cashierParam(PayParam payParam) { for (CashierExecute paramInterface : cashierExecuteList) { CashierParam cashierParam = paramInterface.getPaymentParams(payParam); - if (cashierParam != null) { - cashierParam.setSupport(support(payParam.getClientType())); - cashierParam.setWalletValue(memberWalletService.getMemberWallet(UserContext.getCurrentUser().getId()).getMemberWallet()); - OrderSetting orderSetting = JSONUtil.toBean(settingService.get(SettingEnum.ORDER_SETTING.name()).getSettingValue(), OrderSetting.class); - Integer minute = orderSetting.getAutoCancel(); - cashierParam.setAutoCancel(cashierParam.getCreateTime().getTime() + minute * 1000 * 60); - return cashierParam; + //如果订单不需要付款,则抛出异常,直接返回 + if (cashierParam.getPrice() <= 0) { + throw new ServiceException(ResultCode.PAY_UN_WANTED); } + cashierParam.setSupport(support(payParam.getClientType())); + cashierParam.setWalletValue(memberWalletService.getMemberWallet(UserContext.getCurrentUser().getId()).getMemberWallet()); + OrderSetting orderSetting = JSONUtil.toBean(settingService.get(SettingEnum.ORDER_SETTING.name()).getSettingValue(), OrderSetting.class); + Integer minute = orderSetting.getAutoCancel(); + cashierParam.setAutoCancel(cashierParam.getCreateTime().getTime() + minute * 1000 * 60); + return cashierParam; } - log.error("错误的支付请求:{}", payParam.toString()); throw new ServiceException(ResultCode.PAY_CASHIER_ERROR); } + + /** + * 支付结果 + * + * @param payParam + * @return + */ public Boolean paymentResult(PayParam payParam) { for (CashierExecute cashierExecute : cashierExecuteList) { if (cashierExecute.cashierEnum().name().equals(payParam.getOrderType())) {