From ee42441178c21d5731b04de03e6596c38d9378df Mon Sep 17 00:00:00 2001 From: SjS Date: Tue, 6 May 2025 19:50:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=AE=8C=E5=96=84=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E9=80=80=E6=AC=BE=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/bst/order/domain/OrderVO.java | 9 ++++ .../bst/order/domain/dto/OrderRefundDTO.java | 2 +- .../ruoyi/bst/order/mapper/OrderMapper.xml | 45 ++++++++++++------- .../order/service/impl/OrderServiceImpl.java | 16 ++++--- 4 files changed, 50 insertions(+), 22 deletions(-) diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderVO.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderVO.java index 2fbfcfb..c08fed1 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderVO.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/OrderVO.java @@ -11,10 +11,19 @@ public class OrderVO extends Order{ // 支付 @ApiModelProperty("支付单号") private String payNo; + @ApiModelProperty("已支付金额") + private BigDecimal payedAmount; @ApiModelProperty("支付已退款金额") private BigDecimal payRefunded; @ApiModelProperty("支付退款中金额") private BigDecimal payRefunding; + + // 用户 + @ApiModelProperty("用户名称") + private String userName; + @ApiModelProperty("用户手机号") + private String userPhone; + } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/dto/OrderRefundDTO.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/dto/OrderRefundDTO.java index 04c23cd..c9e62fa 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/dto/OrderRefundDTO.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/domain/dto/OrderRefundDTO.java @@ -22,7 +22,7 @@ public class OrderRefundDTO implements LogBizParam { private BigDecimal amount; @ApiModelProperty("退款次数") - @NotNull(message = "退款次数") + @NotNull(message = "退款次数不能为空") @Min(value = 0, message = "退款次数不允许小于0") private Integer number; diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml index 952b483..548eab0 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml @@ -20,6 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -33,14 +34,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bo.pay_amount, bo.mark, bo.status, + bo.refund_num, bo.create_time, bo.suit_id, bo.suit_num, bo.suit_amount, bo.cancel_remark, bo.pay_expire_time, - bp.refunded, - bp.refunding + bp.refunded as pay_refunded, + bp.refunding as pay_refunding, + bp.no as pay_no, + bp.amount as payed_amount, + su.nick_name as user_name, + su.user_name as user_phone from @@ -52,20 +58,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - and order_no = #{query.orderNo} - and id = #{query.id} - and store_id = #{query.storeId} - and store_name like concat('%', #{query.storeName}, '%') - and user_id = #{query.userId} - and pay_id = #{query.payId} - and pay_amount = #{query.payAmount} - and mark = #{query.mark} - and status = #{query.status} - and suit_id = #{query.suitId} - and suit_num = #{query.suitNum} - and suit_amount = #{query.suitAmount} - and cancel_remark = #{query.cancelRemark} - and pay_expire_time = #{query.payExpireTime} ${@com.ruoyi.framework.util.DataScopeUtil@create(query.scope) + and bo.order_no = #{query.orderNo} + and bo.id = #{query.id} + and bo.store_id = #{query.storeId} + and bo.store_name like concat('%', #{query.storeName}, '%') + and bo.user_id = #{query.userId} + and bo.pay_id = #{query.payId} + and bp.no like concat('%', #{query.payNo}, '%') + and bo.pay_amount = #{query.payAmount} + and bo.mark = #{query.mark} + and bo.status = #{query.status} + and bo.suit_id = #{query.suitId} + and bo.suit_num = #{query.suitNum} + and bo.suit_amount = #{query.suitAmount} + and bo.cancel_remark = #{query.cancelRemark} + and bo.pay_expire_time = #{query.payExpireTime} ${@com.ruoyi.framework.util.DataScopeUtil@create(query.scope) .userSetAlias("bs.user_id") .build() } @@ -99,6 +106,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + update bst_order + set refund_num = refund_num + #{number} + where pay_id = #{id} and suit_num >= refund_num + #{number} + insert into bst_order diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java index 80f4a09..26b14e6 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java @@ -9,6 +9,7 @@ import java.util.concurrent.TimeUnit; import com.github.pagehelper.PageHelper; import com.ruoyi.bst.changeRecord.domain.ChangeRecord; +import com.ruoyi.bst.changeRecord.domain.enums.ChangeRecordBstType; import com.ruoyi.bst.changeRecord.service.ChangeRecordService; import com.ruoyi.bst.lightingNum.domain.LightingNum; import com.ruoyi.bst.lightingNum.domain.LightingNumQuery; @@ -279,6 +280,11 @@ public class OrderServiceImpl implements OrderService return this.refund(order, dto.getAmount(), dto.getNumber(),dto.getReason(), dto.getUserId(), dto.getUserName()); } + @Override + public int addRefundNum(Long id, Integer number) { + return orderMapper.addRefundNum(id,number); + } + /** * 退款 @@ -293,15 +299,15 @@ public class OrderServiceImpl implements OrderService private int refund(OrderVO order, BigDecimal amount,Integer number, String reason, Long userId, String userName) { ServiceUtil.assertion(order == null, "参数错误,order不允许为空"); ServiceUtil.assertion(!OrderStatus.canRefund().contains(order.getStatus()), "ID为%s的订单当前状态不允许退款", order.getId()); - ServiceUtil.assertion(amount == null || amount.compareTo(BigDecimal.ZERO) <= 0, "参数错误,退款金额不允许为空且必须大于0"); - ServiceUtil.assertion(number == null || number <= 0, "参数错误,退款次数不允许为空且必须大于0"); + ServiceUtil.assertion(amount == null || amount.compareTo(BigDecimal.ZERO) < 0, "参数错误,退款金额不允许为空且"); + ServiceUtil.assertion(number == null || number < 0, "参数错误,退款次数不允许为空且不允许小于0"); BigDecimal canRefundAmount = OrderUtil.calcCanRefundAmount(order); ServiceUtil.assertion(canRefundAmount.compareTo(amount) < 0, "ID为%s的订单可退款金额不足,当前可退款金额为%s元", order.getId(), canRefundAmount); // 退款原因 String refundReason = null; - refundReason = String.format("%s:订单%s退款%s元 %s次", userName, order.getOrderNo(), amount ,number); + refundReason = String.format("%s:订单%s退款", userName, order.getOrderNo()); if (StringUtils.isNotBlank(reason)) { refundReason += ":" + reason; } @@ -322,7 +328,7 @@ public class OrderServiceImpl implements OrderService lightingNumService.reduceLightingNumByQuery(data,query); // 生成次数变化记录表 ChangeRecord changeRecord = new ChangeRecord(); - changeRecord.setBstType(PayBstType.ORDER.getType()); + changeRecord.setBstType(ChangeRecordBstType.REFUND.getCode()); changeRecord.setBstId(order.getId()); changeRecord.setUserId(order.getUserId()); changeRecord.setStoreId(order.getStoreId()); @@ -340,7 +346,7 @@ public class OrderServiceImpl implements OrderService dto.setNumber(number); dto.setUserId(userId); dto.setUserName(userName); - return payService.refund(dto); + return payService.refund(dto); }); return result == null ? 0 : 1;