From 48effdca685a209c19dd2a0ccd456470a895784b Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 11 十月 2024 18:01:18 +0800
Subject: [PATCH] Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/IgoTravel into 2.0

---
 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java |  100 ++++++++++++++++++-------------------------------
 1 files changed, 37 insertions(+), 63 deletions(-)

diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java
index b85b63c..8d23b98 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java
@@ -22,6 +22,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.IOException;
@@ -132,6 +133,7 @@
      * @return
      */
     @Override
+    @Transactional
     public ResultUtil paymentSettlementAmount(Integer driverId, Integer payType, Integer bankCardId, Integer language) throws Exception {
         Driver driver1 = driverService.selectById(driverId);
         QuerySettlementAmount querySettlementAmount = querySettlementAmount(language, driverId);
@@ -172,7 +174,7 @@
         ResultUtil resultUtil = ResultUtil.success("");
         if(payType == 1){//手机支付
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
-            String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1;
+            String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1.getId();
             CheckoutRequest checkoutRequest = new CheckoutRequest();
             checkoutRequest.setMsisdn(Long.valueOf(driver1.getPhone()));
             checkoutRequest.setCustomerEmail(driver1.getEmail());
@@ -196,7 +198,7 @@
         if(payType == 2){//银行卡支付
             BankCard bankCard = bankCardService.selectById(bankCardId);
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
-            String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1;
+            String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1.getId();
             CheckoutRequest checkoutRequest = new CheckoutRequest();
             checkoutRequest.setMsisdn(Long.valueOf(bankCard.getCode()));
             checkoutRequest.setCustomerEmail(driver1.getEmail());
@@ -224,76 +226,48 @@
 
             Double laveActivityMoney = driver1.getLaveActivityMoney();
             Double laveBusinessMoney = driver1.getLaveBusinessMoney();
-            //活动余额小于结算金额
-            if(null != laveActivityMoney && 0 < laveActivityMoney && laveActivityMoney.compareTo(payMoney) < 0){
-                driver1.setLaveActivityMoney(0D);
-                for (SettlementRecord settlementRecord : settlementRecords) {
-                    Double payMoney1 = settlementRecord.getPayMoney();
-                    if(laveActivityMoney >= payMoney1){
-                        settlementRecord.setPayMoney(payMoney1);
+    
+            for (SettlementRecord settlementRecord : settlementRecords) {
+                Double payMoney1 = settlementRecord.getPayMoney();
+                if(laveActivityMoney >= payMoney1){
+                    settlementRecord.setPayMoney(payMoney1);
+                    settlementRecord.setPaymentStatus(2);
+                    settlementRecord.setPayType(payType);
+                    settlementRecord.setBalanceType(1);
+                    settlementRecord.setPayTime(new Date());
+                    this.updateById(settlementRecord);
+                    balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, payMoney1, settlementRecord.getType() + 2);
+                    laveActivityMoney = new BigDecimal(laveActivityMoney).subtract(new BigDecimal(payMoney1)).doubleValue();
+                }else{
+                    if(laveActivityMoney > 0){
+                        settlementRecord.setPayMoney(laveActivityMoney);
                         settlementRecord.setPaymentStatus(2);
                         settlementRecord.setPayType(payType);
                         settlementRecord.setBalanceType(1);
                         settlementRecord.setPayTime(new Date());
                         this.updateById(settlementRecord);
-                        balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, payMoney1, settlementRecord.getType() + 2);
-                        laveActivityMoney = new BigDecimal(laveActivityMoney).subtract(new BigDecimal(payMoney1)).doubleValue();
-                    }else{
-                        Double m = payMoney1;
-                        if(laveActivityMoney > 0){
-                            settlementRecord.setPayMoney(laveActivityMoney);
-                            settlementRecord.setPaymentStatus(2);
-                            settlementRecord.setPayType(payType);
-                            settlementRecord.setBalanceType(1);
-                            settlementRecord.setPayTime(new Date());
-                            this.updateById(settlementRecord);
-                            balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, laveActivityMoney, settlementRecord.getType() + 2);
-                            laveActivityMoney = 0D;
-                            m = new BigDecimal(payMoney1).subtract(new BigDecimal(laveActivityMoney)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
-                        }
-                        
-                        SettlementRecord settlementRecord1 = new SettlementRecord();
-                        BeanUtils.copyProperties(settlementRecord, settlementRecord1);
-                        settlementRecord1.setId(null);
-                        settlementRecord1.setPayMoney(m.doubleValue());
-                        settlementRecord1.setBalanceType(2);
-                        this.insert(settlementRecord1);
-                        balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, m.doubleValue(), settlementRecord.getType() + 2);
-                        laveBusinessMoney = new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(m)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+                        balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, laveActivityMoney, settlementRecord.getType() + 2);
+                        laveActivityMoney = 0D;
+                        payMoney1 = new BigDecimal(payMoney1).subtract(new BigDecimal(laveActivityMoney)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                     }
-                }
-                driver1.setLaveBusinessMoney(laveBusinessMoney);
-            }
-            //活动余额大于结算金额
-            if(null != laveActivityMoney && 0 < laveActivityMoney && laveActivityMoney.compareTo(payMoney) >= 0){
-                driver1.setLaveActivityMoney(new BigDecimal(laveActivityMoney).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-                for (SettlementRecord settlementRecord : settlementRecords) {
-                    settlementRecord.setPaymentStatus(2);
-                    settlementRecord.setPayType(payType);
-                    settlementRecord.setBalanceType(1);
-                    settlementRecord.setPayTime(new Date());
-                    this.updateById(settlementRecord);
-                    balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, payMoney, settlementRecord.getType() + 2);
-                }
-            }
-            if(null == laveActivityMoney || 0 == laveActivityMoney){
-                driver1.setLaveActivityMoney(0D);
-                driver1.setLaveBusinessMoney(new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-                for (SettlementRecord settlementRecord : settlementRecords) {
-                    settlementRecord.setPaymentStatus(2);
-                    settlementRecord.setPayType(payType);
-                    settlementRecord.setBalanceType(1);
-                    settlementRecord.setPayTime(new Date());
-                    this.updateById(settlementRecord);
-                    balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, payMoney, settlementRecord.getType() + 2);
-                }
-            }
             
-            driver1.setBalance(new BigDecimal(driver1.getBalance()).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-
+                    SettlementRecord settlementRecord1 = new SettlementRecord();
+                    BeanUtils.copyProperties(settlementRecord, settlementRecord1);
+                    settlementRecord1.setId(null);
+                    settlementRecord1.setPayMoney(payMoney1.doubleValue());
+                    settlementRecord1.setBalanceType(2);
+                    this.insert(settlementRecord1);
+                    balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, payMoney1.doubleValue(), settlementRecord.getType() + 2);
+                    laveBusinessMoney = new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(payMoney1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+                }
+            }
+            driver1.setLaveBusinessMoney(laveBusinessMoney);
+            driver1.setLaveActivityMoney(laveActivityMoney);
+            driver1.setBalance(new BigDecimal(laveBusinessMoney).add(new BigDecimal(laveActivityMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+            driverService.updateById(driver1);
             //添加交易明细
             transactionDetailsService.saveData(driverId, "支付结算费用", payMoney, 2, 1, 2, null, null);
-            driverService.updateById(driver1);
+            
             return ResultUtil.success("");
         }
         return resultUtil;

--
Gitblit v1.7.1