diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/entity/Order.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/entity/Order.java index 4b8a60f16..5b04d27cd 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/entity/Order.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/entity/Order.java @@ -76,7 +76,7 @@ public class Order extends BaseAudit { @Excel(name = "支付方式:0->未支付;1->支付宝;2->微信") private Integer payType; - @Schema(description = "订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单") + @Schema(description = "订单状态:0->待支付;1->支付中;2->已支付;3->已关闭;4->已退款;10->无效订单") @Excel(name = "订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单") private Integer status; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/emum/OrderStatusEnum.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/emum/OrderStatusEnum.java index a0a0bfa4c..ebd855f5b 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/emum/OrderStatusEnum.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/emum/OrderStatusEnum.java @@ -1,13 +1,14 @@ package com.wzj.soopin.order.emum; /** - * 订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单 + * 订单状态:0->待支付;1->支付中;2->已支付;3->已关闭;4->已退款;10->无效订单 */ public enum OrderStatusEnum { UNPAID(0, "待支付"), PAYMENT(1, "支付中"), PAID(2, "已支付"), CLOSED(3, "已关闭"), + REFUNDED(4, "已退款"), INVALID(10, "无效订单"); private final Integer value; diff --git a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/domain/po/PayOrder.java b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/domain/po/PayOrder.java index 2d12c8965..b7b99a1c3 100644 --- a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/domain/po/PayOrder.java +++ b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/domain/po/PayOrder.java @@ -61,6 +61,13 @@ public class PayOrder extends BaseAudit { @Schema(description = "完成支付日期") private Date endTransDate; + /** + * 退款日期 + */ + @TableField(value = "refund_date") + @Schema(description = "退款日期") + private Date refundDate; + /** * 易生生成后上送渠道的订单号 */ diff --git a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/EasypayServiceImpl.java b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/EasypayServiceImpl.java index da5444081..d790cebcc 100644 --- a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/EasypayServiceImpl.java +++ b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/EasypayServiceImpl.java @@ -467,17 +467,17 @@ public class EasypayServiceImpl implements IEasypayService { TradeQueryRespBody tradeQueryRespBody = BeanUtil.toBean(easyPayRequest.getReqBody(), TradeQueryRespBody.class); RespStateInfo respStateInfo = tradeQueryRespBody.getRespStateInfo(); if (StrUtil.equals(RSP_BODY_RESP_OK, respStateInfo.getRespCode())) { - // 支付完成 进入终态 - if (StrUtil.equalsAny(respStateInfo.getTransState(), RSP_BODY_TRANS_OK, RSP_BODY_TRANS_OK_WETCAT, RSP_BODY_TRANS_PARTIALLY_OK)) { - TradeQueryRespOrderInfo respOrderInfo = tradeQueryRespBody.getRespOrderInfo(); - PayOrder payOrder = payOrderMapper.selectById(String.valueOf(respOrderInfo.getOrgTrace())); - if (payOrder != null) { - Order order = orderMapper.selectById(payOrder.getOrderId()); - if (order != null) { + TradeQueryRespOrderInfo respOrderInfo = tradeQueryRespBody.getRespOrderInfo(); + PayOrder payOrder = payOrderMapper.selectById(String.valueOf(respOrderInfo.getOrgTrace())); + if (payOrder != null) { + Order order = orderMapper.selectById(payOrder.getOrderId()); + if (order != null) { + // 支付完成 进入终态 + if (StrUtil.equalsAny(respStateInfo.getTransState(), RSP_BODY_TRANS_OK, RSP_BODY_TRANS_OK_WETCAT, RSP_BODY_TRANS_PARTIALLY_OK)) { // 更新支付订单信息 payOrderMapper.updateById(PayOrder.builder() .id(payOrder.getId()) - .endTransDate(DateUtil.parse(StrBuilder.create(respOrderInfo.getDateEnd()).append(respOrderInfo.getTimeEnd()), toString())) + .endTransDate(DateUtil.parse(StrBuilder.create(respOrderInfo.getDateEnd()).append(respOrderInfo.getTimeEnd()).toString())) .easypayTrace(respOrderInfo.getOutTrace()) .pcTrace(respOrderInfo.getPcTrace()) .unTrace(respOrderInfo.getUnTrace()) @@ -490,13 +490,17 @@ public class EasypayServiceImpl implements IEasypayService { .paymentTime(LocalDateTimeUtil.parse(StrBuilder.create(respOrderInfo.getDateEnd()).append(respOrderInfo.getTimeEnd()).toString(), "yyyyMMddHHmmss")) .payType(PayType.getByValue(payOrder.getPayType()).getChannel()) .build()); - } else { - log.warn("回调通知的支付订单不存在:{}", respOrderInfo.getOrgTrace()); + }else{ + // 支付失败,支付状态重置为待支付 + payOrderMapper.updateById(PayOrder.builder().id(payOrder.getId()).transState(TransState.PENDING.getCode()).build()); } } else { log.warn("回调通知的支付订单不存在:{}", respOrderInfo.getOrgTrace()); } + } else { + log.warn("回调通知的支付订单不存在:{}", respOrderInfo.getOrgTrace()); } + } else { log.warn("回调通知支付结果异常:{}", respStateInfo.getRespDesc()); } @@ -548,7 +552,8 @@ public class EasypayServiceImpl implements IEasypayService { if (StrUtil.equals(RSP_BODY_RESP_OK, respStateInfo.getRespCode())) { if (StrUtil.equalsAny(respStateInfo.getTransState(), RSP_BODY_TRANS_OK)) { // 更新支付单退款状态 - payOrderMapper.updateById(PayOrder.builder().id(payOrder.getId()).transState(TransState.REFUNDED.getCode()).build()); + payOrderMapper.updateById(PayOrder.builder().id(payOrder.getId()).transState(TransState.REFUNDED.getCode()).refundDate(new Date()).build()); + orderMapper.updateById(Order.builder().id(order.getId()).status(OrderStatusEnum.REFUNDED.getValue()).build()); } } else { log.error("易生退款失败:{}", respStateInfo.getRespDesc()); @@ -577,7 +582,7 @@ public class EasypayServiceImpl implements IEasypayService { if (payOrder.getTransState() == TransState.REFUNDED.getCode()) { return easypayTransResultVO; } - Assert.isTrue(payOrder.getTransState() == TransState.PAID.getCode() || payOrder.getTransState() == TransState.REFUND_PENDING.getCode(), () -> new ServiceException("订单未支付")); + Assert.isTrue(payOrder.getTransState() == TransState.PAID.getCode() || payOrder.getTransState() == TransState.REFUND_PENDING.getCode(), () -> new ServiceException("订单未支付或退款中")); EasyPayRequestHeader reqHeader = generateEasyPayRequestHeader(); RefundApplyReqBody refundApplyReqBody = RefundApplyReqBody.builder() .reqInfo(ReqInfo.builder().mchtCode(easypayConfig.getMchtCode()).build())