From efaa975d89a6cc2ca16916834eba19f54f0229f8 Mon Sep 17 00:00:00 2001 From: zhanglin8526 <852614290@qq.com> Date: 星期六, 26 八月 2023 16:38:04 +0800 Subject: [PATCH] 分账 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 42 +++++++++++++++++++++++++++++++----------- 1 files changed, 31 insertions(+), 11 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 0971266..fa150de 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.order.service.impl.order; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -21,6 +22,7 @@ import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.utils.CodeFactoryUtil; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.order.config.WxPayConfiguration; import com.ruoyi.order.domain.dto.*; import com.ruoyi.order.domain.pojo.account.OrderPayment; import com.ruoyi.order.domain.pojo.account.OrderRefund; @@ -52,6 +54,7 @@ import com.ruoyi.system.api.domain.poji.member.MemberCoupon; import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord; import com.ruoyi.system.api.domain.poji.shop.Shop; +import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.*; @@ -63,6 +66,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; @@ -1548,9 +1552,10 @@ merVerifyOrderVo.setUserName(member.getRealName()); merVerifyOrderVo.setUserMobile(member.getMobile()); merVerifyOrderVo.setCloseFlag(order.getCloseFlag()); - // + if (order.getOrderFrom() == 2) { - // profitsSharingService.applyProfitSharing(); + // 活动才分账 + submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney()); } //创建支付记录 @@ -1563,12 +1568,11 @@ payRecord.setPayType(merVerifyOrderDto.getPayType()); payRecordService.save(payRecord); } - //submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney()); return merVerifyOrderVo; } - /*private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) { + private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) { String sendMessage = ""; String resultMessage = ""; try { @@ -1591,7 +1595,7 @@ request.setSubMchid(subMchId); request.setTransactionId(transactionId); request.setOutOrderNo(orderNo); - List<Receiver> receiverList = new ArrayList<>(); + List<ProfitSharingRequest.Receiver> receiverList = new ArrayList<>(); String description = "订单:" + orderNo + " 平台抽取佣金"; BigDecimal proportionPercent = shopProportion.getProportionPercent(); @@ -1608,7 +1612,7 @@ log.info("订单分账:{} 分账金额: {}", orderNo, amount); if (amount > 0) { // 分账创建 - Receiver receiver = new Receiver(); + ProfitSharingRequest.Receiver receiver = new ProfitSharingRequest.Receiver(); receiver.setType("MERCHANT_ID"); receiver.setReceiverAccount(platformTyMacId); receiver.setAmount(amount); @@ -1643,7 +1647,7 @@ // 保存分账信息 paymentMessageService.savePaymentMessage("4", orderId, sendMessage, resultMessage); - }*/ + } /** * @param merVerifyCouponDto @@ -3869,9 +3873,9 @@ public void payBack(PartnerTransactionsResult transaction) { // Order order = this.getById(orderId); - // 更新订单状态 订单编号,就是 微信outTradeNo - String orderNo = transaction.getOutTradeNo(); - Order order = this.getByOrderNo(orderNo); + // 更新订单状态 outTradeNo + String outTradeNo = transaction.getOutTradeNo(); + Order order = this.getByOutTradeNo(outTradeNo); String orderId = order.getOrderId(); order.setOrderStatus(2); order.setPayTime(new Date()); @@ -4009,6 +4013,14 @@ public Order getByOrderNo(String orderNo) { LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(Order::getOrderNo, orderNo) + .last(" limit 1 "); + return this.getOne(queryWrapper); + } + + @Override + public Order getByOutTradeNo(String outTradeNo) { + LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(Order::getOutTradeNo, outTradeNo) .last(" limit 1 "); return this.getOne(queryWrapper); } @@ -4166,9 +4178,11 @@ remoteActivityService.changeActivityTotal(activityTotalChangeDto); } + log.info("用户取消订单退款, 检查退款"); // 用户取消订单退款 BigDecimal onlinePayMoney = order.getOnlinePayMoney(); if(BigDecimal.ZERO.compareTo(onlinePayMoney) < 0){ + log.info("订单支付金额大于0,可发起退款"); // 订单支付金额大于0,可发起退款 orderWxApplyRefund(orderId, refundId, onlinePayMoney, orderRefund); } @@ -4187,6 +4201,9 @@ if (null == orderPayment) { return; } + + log.info("调用微信退款---发起退款"); + String subMchId = orderPayment.getSubMchId(); WxPayConfig config = wxService.getConfig(); @@ -4197,7 +4214,8 @@ request.setOutRefundNo(outRefundNo); request.setReason("用户取消订单"); // 订单金额 - int total = payMoney.multiply(new BigDecimal(100)).intValue(); + int total = orderPayment.getPayMoney().multiply(new BigDecimal(100)).intValue(); + RefundsRequest.Amount amount = RefundsRequest.Amount.builder().refund(total).total(total).currency("CNY").build(); request.setAmount(amount); request.setNotifyUrl(config.getNotifyUrl()); @@ -4213,6 +4231,8 @@ // 返回参数 String refundResponseJson = gson.toJson(result); + log.info("调用微信退款返回参数---{}", refundResponseJson); + // 保存支付订单统一下单日志 paymentMessageService.savePaymentMessage("3", orderId, refundRequestJson, refundResponseJson); -- Gitblit v1.7.1