From c36b79ea63fe43aa77ab74508505b727e4976a01 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 06 十一月 2023 16:01:04 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |   76 +++++++++++++++++++++----------------
 1 files changed, 43 insertions(+), 33 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 edb5db2..c107a78 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
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -1229,7 +1230,12 @@
                 }
                 appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
                 // 小程序微信下单支付
-                createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo,
+//                createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo,
+//                        orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(),
+//                        appPlaceActivityDto.getSpbillCreateIp());
+
+                // 小程序微信下单支付 TODO 更换支付渠道(汇付天下)
+                createWxPayInfo1(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo,
                         orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(),
                         appPlaceActivityDto.getSpbillCreateIp());
                 //生成自动取消订单延时任务
@@ -1507,11 +1513,6 @@
         Order order = this.getById(orderId);
         if (order.getOrderStatus() != 2) {
             throw new ServiceException(AppErrorConstant.VERIFY_USED);
-        }
-        //判断商户是否有分账权限
-        Shop shop = remoteShopService.getShop(shopId).getData();
-        if(shop.getAccountFlag()!=1){
-            throw new ServiceException(AppErrorConstant.SHOP_NO_VERIFY);
         }
         // 根据订单用户ID获取用户信息
         Member member = remoteMemberService.getMember(order.getUserId()).getData();
@@ -1897,10 +1898,14 @@
         }
         this.saveOrUpdate(order);
         // 订单金额大于0时进行分账
-        if (order.getOnlinePayMoney().compareTo(BigDecimal.ZERO)>0) {
+        OrderPayment orderPayment = orderPaymentService.getOne(new QueryWrapper<OrderPayment>()
+                .eq("order_id", order.getOrderId()).eq("pay_status", 2)
+                .eq("del_flag", 0));
+        BigDecimal bigDecimal = orderPayment.getPayMoney().subtract(orderPayment.getFeeAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+        if (bigDecimal.compareTo(BigDecimal.ZERO)>0) {
             // TODO: 2023/10/17  更换分账渠道(汇付天下)
 //            submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney(),order.getOrderFrom());
-            submitProfitSharing1(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney(),order.getOrderFrom());
+            submitProfitSharing1(orderId, order.getOrderNo(), order.getShopId(), bigDecimal, order.getOrderFrom());
         }
         //创建支付记录
         if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){
@@ -2046,6 +2051,8 @@
             OrderPayment payment = orderPaymentService.getByOrderId(orderId);
             String transactionId = payment.getTransactionId();
             String outTradeNo = payment.getOutTradeNo();
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+            String org_req_date = sdf.format(payment.getCreateTime());
             R<ShopAuthenticationHftxVo> resultMch = remoteShopService.getShopHFTXSubMchId(shopId);
             ShopAuthenticationHftxVo vo = resultMch.getData();
             if (StringUtils.isEmpty(vo.getHuifuId())) {
@@ -2059,7 +2066,11 @@
                 BigDecimal proportionPercent = null;
                 //商户订单获取统一分成 活动订单获取活动分成
                 if(orderFrom==1){
-                    proportionPercent = new BigDecimal(vo.getShareRatio());
+                    if(null == vo.getShareRatio()){
+                        proportionPercent = new BigDecimal(redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION).toString());
+                    }else{
+                        proportionPercent = new BigDecimal(vo.getShareRatio());
+                    }
                 }else{
                     R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId);
                     shopProportion = resultShopProportion.getData();
@@ -2077,7 +2088,7 @@
                     if(proportionPercent.compareTo(BigDecimal.ZERO)>0){
                         PaymentDelaytransHFTXVo result = new PaymentDelaytransHFTXVo();
                         // 计算分成金额
-                        int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue();
+                        int amount = orderMoney.multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).intValue();
                         BigDecimal multiply = orderMoney.multiply(proportionPercent.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_EVEN);
                         log.info("订单分账:{} 分账金额: {}", orderNo, amount);
                         if (amount > 0) {
@@ -2094,16 +2105,22 @@
 
                             //分账对象
                             JSONArray acctInfos = new JSONArray();
-                            JSONObject jsonObject = new JSONObject();
-                            jsonObject.put("div_amt", String.format("%.2f", multiply.doubleValue()));
-                            jsonObject.put("huifu_id", vo.getHuifuId());
+                            if(multiply.compareTo(BigDecimal.ZERO) > 0){
+                                JSONObject jsonObject = new JSONObject();
+                                jsonObject.put("div_amt", String.format("%.2f", multiply.doubleValue()));
+                                jsonObject.put("huifu_id", vo.getHuifuId());
+                                acctInfos.add(jsonObject);
+                            }
                             //平台商户
-                            double pt_amount = orderMoney.subtract(multiply).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
-                            JSONObject jsonObject1 = new JSONObject();
-                            jsonObject1.put("div_amt", String.format("%.2f", pt_amount));
-                            jsonObject1.put("huifu_id", "6666000141216769");
-                            acctInfos.add(jsonObject1);
-                            R<PaymentDelaytransHFTXVo> hftxVoR = HuiFuTianXiaUtil.paymentDelaytrans(request.getOutOrderNo(), outTradeNo, acctInfos);
+                            BigDecimal pt_amount = orderMoney.subtract(multiply).setScale(2, RoundingMode.HALF_EVEN);
+                            if(pt_amount.compareTo(BigDecimal.ZERO) > 0){
+                                JSONObject jsonObject1 = new JSONObject();
+                                jsonObject1.put("div_amt", String.format("%.2f", pt_amount.doubleValue()));
+                                jsonObject1.put("huifu_id", "6666000141216769");
+                                acctInfos.add(jsonObject1);
+                            }
+
+                            R<PaymentDelaytransHFTXVo> hftxVoR = HuiFuTianXiaUtil.paymentDelaytrans(request.getOutOrderNo(), org_req_date, outTradeNo, acctInfos);
                             if(hftxVoR.getCode() != 200){
                                 throw new ServiceException(hftxVoR.getMsg());
                             }
@@ -2124,6 +2141,7 @@
                 log.info(resultMessage);
             }
         } catch (Exception e) {
+            e.printStackTrace();
             resultMessage = String.format("订单分账:%s 分账失败:%s", orderNo, e.getMessage());
             log.info(resultMessage);
             throw new ServiceException(resultMessage);
@@ -5109,7 +5127,7 @@
     @Override
     @Transactional
     @GlobalTransactional(rollbackFor = Exception.class)
-    public void payBack(PartnerTransactionsResult transaction) {
+    public void payBack(PartnerTransactionsResult transaction, BigDecimal feeAmount) {
         log.info("订单支付回调---"+transaction.toString());
         // Order order = this.getById(orderId);
         // 更新订单状态 outTradeNo
@@ -5163,12 +5181,8 @@
             goodsTotalChangeDto.setChangeType(1);
             goodsTotalChangeDto.setChangeNum(orderGoods.getBuyNum());
             goodsTotalChangeDto.setMoney(orderGoods.getGoodsReceivableMoney());
-            Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId());
-            if (bugGoodsNum == null || bugGoodsNum < 1) {
-                goodsTotalChangeDto.setPersonNum(1);
-            }else{
-                goodsTotalChangeDto.setPersonNum(0);
-            }
+            Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(orderGoods.getGoodsId());
+            goodsTotalChangeDto.setPersonNum(bugGoodsNum);
             goodsTotalChangeDtoList.add(goodsTotalChangeDto);
         }
         //更新商品统计
@@ -5243,7 +5257,7 @@
             profitsSharingService.applyProfitSharing(request);*/
         }
         //修改支付记录生成支付记录
-        orderPaymentService.updatePaySuccess(transaction.getOutTradeNo(), transaction.getTransactionId());
+        orderPaymentService.updatePaySuccess(transaction.getOutTradeNo(), feeAmount, transaction.getTransactionId());
         PayRecord payRecord = new PayRecord();
         payRecord.setDelFlag(0);
         payRecord.setOrderId(orderId);
@@ -5374,12 +5388,8 @@
                 goodsTotalChangeDto.setChangeType(2);
                 goodsTotalChangeDto.setChangeNum(orderGoods.getBuyNum());
                 goodsTotalChangeDto.setMoney(orderGoods.getGoodsReceivableMoney());
-                Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId());
-                if (bugGoodsNum == null || bugGoodsNum <= orderGoods.getBuyNum()) {
-                    goodsTotalChangeDto.setPersonNum(1);
-                }else{
-                    goodsTotalChangeDto.setPersonNum(0);
-                }
+                Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(orderGoods.getGoodsId());
+                goodsTotalChangeDto.setPersonNum(bugGoodsNum);
                 goodsTotalChangeDtoList.add(goodsTotalChangeDto);
             }
             remoteGoodsService.changeGoodsTotal(goodsTotalChangeDtoList);

--
Gitblit v1.7.1