From 7e71f8a20eec43a947c51fb6970f0416dabd0d19 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 16 八月 2023 00:34:57 +0800
Subject: [PATCH] 处理平台分账及记录流水

---
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java |   70 ++++++++++++++++++++++++++++++++---
 1 files changed, 64 insertions(+), 6 deletions(-)

diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
index 0e2ab36..855d7c3 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
@@ -237,6 +237,7 @@
                 }
             }).start();
         }
+        redisUtil.setStrValue("newOrder", "true");
         return ResultUtil.success(order.getState() == 102 ? order.getId() : null);
     }
 
@@ -639,6 +640,7 @@
                             order1.setHallOrder(1);
                             OrderServiceImpl.this.updateById(order1);
                             ExtraPushOrder(order);
+                            redisUtil.setStrValue("lobbyOrder", "true");
                         }
 
 
@@ -648,6 +650,7 @@
                 order.setHallOrder(1);
                 this.updateById(order);
                 ExtraPushOrder(order);
+                redisUtil.setStrValue("lobbyOrder", "true");
             }
             redisUtil.unlock(orderId.toString());
         }catch (Exception e){
@@ -1321,6 +1324,7 @@
         if(null != order.getUserId()){
             pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getStatus());
         }
+        redisUtil.setStrValue("cancelOrder", "true");
         return ResultUtil.success();
     }
 
@@ -1470,6 +1474,7 @@
                     CompanyFundFlow companyFundFlow = new CompanyFundFlow();
                     companyFundFlow.setType(5);
                     companyFundFlow.setObjectType(1);
+                    companyFundFlow.setDriverId(driver.getId());
                     companyFundFlow.setBalance(new BigDecimal(balance));
                     companyFundFlow.setMoney(new BigDecimal(order.getDiscountedPrice()));
                     companyFundFlow.setCreateTime(new Date());
@@ -1598,6 +1603,8 @@
             JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
             Double num2 = jsonObject.getDouble("num2");
             Double num3 = jsonObject.getDouble("num3");
+            Double num4_ = jsonObject.getDouble("num4");
+
             if(order.getOrderMoney() >= num2){//订单金额大于num2才有抽佣金
                 driver = driverService.selectById(order.getDriverId());
                 AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail();
@@ -1997,11 +2004,61 @@
                             }
                         }
                     }
+
+                    //处理平台抽佣
+                    if(num4_ > 0){
+                        //先平台抽佣
+                        num4_ = (num3 >= num4_ ? num4_ : num3);
+                        Double balance = revenueService.queryCompanyBalance();
+                        Revenue revenue = new Revenue();
+                        revenue.setType(2);
+                        revenue.setUserType(4);
+                        revenue.setUserId(null);
+                        revenue.setOrderId(order.getId());
+                        revenue.setAmount(num4_);
+                        revenue.setCreateTime(new Date());
+                        revenueService.insert(revenue);
+
+                        Double num4_1 = num4_;
+                        List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
+                        for (RechargeRecord rechargeRecord : rechargeRecords) {
+                            Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
+                            if(surplusDividedAmount.compareTo(num4_1) >= 0){
+                                ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3);
+                                if(fengzhang.getCode() == 10000){
+                                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    rechargeRecordService.updateById(rechargeRecord);
+                                }
+                                break;
+                            }else{
+                                ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 3);
+                                if(fengzhang.getCode() == 10000){
+                                    rechargeRecord.setSurplusDividedAmount(0d);
+                                    rechargeRecordService.updateById(rechargeRecord);
+                                    num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                }else{
+                                    break;
+                                }
+                            }
+                        }
+
+                        CompanyFundFlow companyFundFlow = new CompanyFundFlow();
+                        companyFundFlow.setType(3);
+                        companyFundFlow.setObjectType(1);
+                        companyFundFlow.setObjectId(null);
+                        companyFundFlow.setBalance(new BigDecimal(balance));
+                        companyFundFlow.setMoney(new BigDecimal(num4_));
+                        companyFundFlow.setCreateTime(new Date());
+                        companyFundFlowService.insert(companyFundFlow);
+                        double v = new BigDecimal(num3).subtract(new BigDecimal(num4_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                        num3 = (num3 >= num4_ ? v : 0);
+                    }
+
                     //处理代理商抽佣
-                    if(num3 > 0){
+                    if(num3 > 0 && null != driver){
                         Double balance = revenueService.queryAgentBalance(driver.getAgentId());
                         Revenue revenue = new Revenue();
-                        revenue.setType(1);
+                        revenue.setType(2);
                         revenue.setUserType(3);
                         revenue.setUserId(driver.getAgentId());
                         revenue.setOrderId(order.getId());
@@ -2010,13 +2067,14 @@
                         revenueService.insert(revenue);
 
                         Agent agent = agentService.selectById(driver.getAgentId());
+                        Double num3_1 = num3;
                         List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                         for (RechargeRecord rechargeRecord : rechargeRecords) {
                             Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
-                            if(surplusDividedAmount.compareTo(num3) >= 0){
-                                ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3, 3);
+                            if(surplusDividedAmount.compareTo(num3_1) >= 0){
+                                ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                                 if(fengzhang.getCode() == 10000){
-                                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     rechargeRecordService.updateById(rechargeRecord);
                                 }
                                 break;
@@ -2025,7 +2083,7 @@
                                 if(fengzhang.getCode() == 10000){
                                     rechargeRecord.setSurplusDividedAmount(0d);
                                     rechargeRecordService.updateById(rechargeRecord);
-                                    num3 = new BigDecimal(num3).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                    num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                 }else{
                                     break;
                                 }

--
Gitblit v1.7.1