From e52227b01983146f2e3c81dc575141d8b9889497 Mon Sep 17 00:00:00 2001
From: yanghb <yanghb>
Date: 星期五, 21 四月 2023 10:16:30 +0800
Subject: [PATCH] 代码调整

---
 DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java |   92 ++++++++++++++++++++-------------------------
 1 files changed, 41 insertions(+), 51 deletions(-)

diff --git a/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java b/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
index 48d2ea3..b848f35 100644
--- a/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
+++ b/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
@@ -26,6 +26,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 
@@ -94,7 +95,6 @@
      */
     @Override
     public ResultUtil saveData(Reassign reassign, Integer uid, Integer type) throws Exception {
-        type = null == type ? 2 : type;//现目前微信只支持小程序支付
         String content = reassign.getRemark();
         if(ToolUtil.isNotEmpty(content)){
             List<SensitiveWords> sensitiveWords = sensitiveWordsMapper.selectList(null);
@@ -105,14 +105,8 @@
         reassign.setRemark(content);
         ResultUtil resultUtil = ResultUtil.success();
         Driver driver = driverService.selectById(uid);
-        // TODO: 2020/11/12 司机端不控制重复提交(如果重复提交且未支付,直接将之前的数据删除)
-//        Reassign query = reassignMapper.query(uid, null, null, null, 1);
-//        if(null != query){
-//            return ResultUtil.error("有未完成支付的改派申请");
-//        }
         Reassign query = reassignMapper.query(uid, null, reassign.getOrderId(), reassign.getOrderType(), 1);
         if(null != query){
-//            return ResultUtil.error("不能重复提交申请");
             reassignMapper.deleteById(query.getId());
         }
         query = reassignMapper.query(uid, null, reassign.getOrderId(), reassign.getOrderType(), 2);
@@ -128,20 +122,23 @@
         reassign.setInsertTime(new Date());
         this.insert(reassign);
 
-        systemNoticeService.addSystemNotice(2, "您的改派申请已成功提交,我们会尽快为你处理!", uid, 1);
+        systemNoticeService.addSystemNotice(2, "您的改派申请已成功提交,我们会尽快为你处理!", uid);
 
         //开始支付
         if(null != reassign.getPayType()){
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+            String out_trade_no = sdf.format(new Date()) + reassign.getOrderType() + reassign.getId();
+
             if(reassign.getPayType() == 1){//微信支付
                 reassign.setState(1);
-
-                resultUtil = payMoneyUtil.weixinpay("改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), aDouble.toString(), "/base/wxReassign", "APP");
-                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 1, aDouble, "", 1);//添加预支付数据
+                String appletsOpenId = "";
+                String tradeType = "APP";
+                resultUtil = payMoneyUtil.weixinpay("改派订单", "", out_trade_no,  aDouble.toString(), callbackPath + "/base/wxReassign", tradeType, appletsOpenId, "");
             }
             if(reassign.getPayType() == 2){//支付宝
                 reassign.setState(1);
-                resultUtil = payMoneyUtil.alipay("改派订单", "改派订单", "", reassign.getId() + "_" + reassign.getOrderType() + "_" + UUIDUtil.getRandomCode(5), aDouble.toString(), "/base/aliReassign");
-                paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 2, aDouble, "", 1);//添加预支付数据
+                resultUtil = payMoneyUtil.alipay("改派订单", "支付订单", out_trade_no, aDouble.toString(), callbackPath + "/base/aliReassign");
             }
             if(reassign.getPayType() == 3){//余额
                 reassign.setState(2);
@@ -209,7 +206,7 @@
                         break;
                 }
 
-                systemNoticeService.addSystemNotice(2, "您已使用余额成功支付改派申请费用!", uid, 1);
+                systemNoticeService.addSystemNotice(2, "您已使用余额成功支付改派申请费用!", uid);
                 //开始推送调度单
                 Map<String, String> map = new HashMap<>();
                 map.put("orderId", reassign.getOrderId().toString());
@@ -276,45 +273,32 @@
             ids += reassign.getId() + ",";
         }
         ids = ids.substring(0, ids.length() - 1);
-        systemNoticeService.addSystemNotice(2, "您的改派申请已成功提交,我们会尽快为你处理!", uid, 1);
+        systemNoticeService.addSystemNotice(2, "您的改派申请已成功提交,我们会尽快为你处理!", uid);
 
         //开始支付
         if(null != reassign.getPayType()){
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+            String out_trade_no = sdf.format(new Date()) + 3 + ids;
+
             if(reassign.getPayType() == 1){//微信支付
                 String[] split1 = ids.split(",");
-
-                resultUtil = payMoneyUtil.weixinpay("改派订单", "", ids + "_3_" + UUIDUtil.getRandomCode(5), totalMoney.toString(), "/base/wxReassign", "APP");
-                for(String id : split1){
-                    paymentRecordService.saveData(1, uid, 2, Integer.valueOf(id), 3, 1, aDouble, "", 1);//添加预支付数据
+                String appletsOpenId = "";
+                String tradeType = "APP";
+                resultUtil = payMoneyUtil.weixinpay("改派订单", "", out_trade_no,  totalMoney.toString(), callbackPath + "/base/wxReassign", tradeType, appletsOpenId, "");
+                if(resultUtil.getCode() == 200){
+                    for(String id : split1){
+                        paymentRecordService.saveData(1, uid, 2, Integer.valueOf(id), 3, 1, aDouble, "", 1);//添加预支付数据
+                    }
                 }
-
-//                Map<String, String> map = icbcPayUtil.placeAnOrder(ids + "_3", 9, 5, uid.toString(), "改派订单", totalMoney, callbackPath + "/base/wxReassign", "", type, driver.getAppletsOpenId());
-//                if(map.get("code").equals("200")){
-//                    for(String id : split1){
-//                        paymentRecordService.saveData(1, uid, 2, Integer.valueOf(id), 3, 1, aDouble, map.get("order_id"), 1);//添加预支付数据
-//                    }
-//                    resultUtil = ResultUtil.success(map.get("data"));
-//                }else{
-//                    resultUtil = ResultUtil.error(map.get("msg"), "");
-//                }
             }
             if(reassign.getPayType() == 2){//支付宝
                 String[] split1 = ids.split(",");
-                resultUtil = payMoneyUtil.alipay("改派订单", "改派订单", "", ids + "_3_" + UUIDUtil.getRandomCode(5), totalMoney.toString(), "/base/aliReassign");
-                for(String id : split1){
-                    paymentRecordService.saveData(1, uid, 2, Integer.valueOf(id), 3, 2, aDouble, "", 1);//添加预支付数据
+                resultUtil = payMoneyUtil.alipay("改派订单", "支付订单", out_trade_no, totalMoney.toString(), callbackPath + "/base/aliReassign");
+                if(resultUtil.getCode() == 200){
+                    for(String id : split1){
+                        paymentRecordService.saveData(1, uid, 2, Integer.valueOf(id), 3, 2, aDouble, "", 1);//添加预支付数据
+                    }
                 }
-
-
-//                Map<String, String> map = icbcPayUtil.placeAnOrder(ids + "_3", 10, 5, uid.toString(), "改派订单", totalMoney, callbackPath + "/base/aliReassign", "", 2, "");
-//                if(map.get("code").equals("200")){
-//                    for(String id : split1){
-//                        paymentRecordService.saveData(1, uid, 2, Integer.valueOf(id), 3, 2, aDouble, map.get("order_id"), 1);//添加预支付数据
-//                    }
-//                    resultUtil = ResultUtil.success(map.get("data"));
-//                }else{
-//                    resultUtil = ResultUtil.error(map.get("msg"), "");
-//                }
             }
             if(reassign.getPayType() == 3){//余额
                 for(String id : split){
@@ -326,8 +310,15 @@
                     transactionDetailsService.saveData(uid, "司机改派支付", aDouble, 2, 1, 2, 3, Integer.valueOf(id));
                 }
                 Double balance = driver.getBalance();
+                Double laveBusinessMoney = driver.getLaveBusinessMoney();
+                Double laveActivityMoney = driver.getLaveActivityMoney();
                 if(null == balance || balance < totalMoney){
                     throw new SystemException("账户余额不足");
+                }
+                if(null != laveBusinessMoney && laveBusinessMoney.compareTo(totalMoney) >= 0){
+                    driver.setLaveBusinessMoney(new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(totalMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+                }else if(null != laveActivityMoney && laveActivityMoney.compareTo(totalMoney) >= 0){
+                    driver.setLaveActivityMoney(new BigDecimal(laveActivityMoney).subtract(new BigDecimal(totalMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                 }
                 driver.setBalance(new BigDecimal(balance).subtract(new BigDecimal(totalMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                 driverService.updateById(driver);
@@ -344,7 +335,7 @@
                     //添加已收入明细
                     incomeService.saveData(1, orderCrossCity.getCompanyId(), 4, orderCrossCity.getId(), 3, reassign.getMoney());
                 }
-                systemNoticeService.addSystemNotice(2, "您已使用余额成功支付改派申请费用!", uid, 1);
+                systemNoticeService.addSystemNotice(2, "您已使用余额成功支付改派申请费用!", uid);
                 //开始推送调度单
                 Map<String, String> map = new HashMap<>();
                 map.put("orderId", reassign.getOrderId().toString());
@@ -384,10 +375,9 @@
      * @throws Exception
      */
     @Override
-    public void payReassign(String id, String order_id, Integer type) throws Exception {
-        String[] s = id.split("_");
-        if(Integer.valueOf(s[1]) == 3){//跨城订单
-            String[] split = s[0].split(",");
+    public void payReassign(String id, Integer orderType, String order_id, Integer type) throws Exception {
+        String[] split = id.split(",");
+        if(orderType == 3){//跨城订单
             List<Reassign> reassigns = this.selectBatchIds(Arrays.asList(split));
             Driver driver = driverService.selectById(reassigns.get(0).getOriginalDriverId());
             for(String key : split){
@@ -424,7 +414,7 @@
                         //添加已收入明细
                         incomeService.saveData(1, orderCrossCity1.getCompanyId(), 4, orderCrossCity1.getId(), 3, reassign.getMoney());
                     }
-                    systemNoticeService.addSystemNotice(2, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功支付改派申请费用!", reassigns.get(0).getOriginalDriverId(), 1);
+                    systemNoticeService.addSystemNotice(2, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功支付改派申请费用!", reassigns.get(0).getOriginalDriverId());
 
                 }else{
                     System.err.println("预支付数据异常(orderId = "  + id + ")");
@@ -433,7 +423,7 @@
 
 
         }else{//其他订单
-            Reassign reassign = this.selectById(s[0]);
+            Reassign reassign = this.selectById(split[0]);
             Driver driver = driverService.selectById(reassign.getOriginalDriverId());
             PaymentRecord query = paymentRecordService.query(1, driver.getId(), 2, reassign.getOrderId(), reassign.getOrderType(), type, 1);
             if(null != query){
@@ -491,7 +481,7 @@
                         incomeService.saveData(1, orderLogistics1.getCompanyId(), 4, orderLogistics1.getId(), 5, reassign.getMoney());
                         break;
                 }
-                systemNoticeService.addSystemNotice(2, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功支付改派申请费用!", reassign.getOriginalDriverId(), 1);
+                systemNoticeService.addSystemNotice(2, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功支付改派申请费用!", reassign.getOriginalDriverId());
                 //开始推送调度单
                 Map<String, String> map = new HashMap<>();
                 map.put("orderId", reassign.getOrderId().toString());

--
Gitblit v1.7.1