puzhibing
2023-08-16 7e71f8a20eec43a947c51fb6970f0416dabd0d19
处理平台分账及记录流水
3个文件已修改
76 ■■■■■ 已修改文件
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/CompanyFundFlow.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/CompanyFundFlow.java
@@ -37,6 +37,11 @@
    @TableField("objectId")
    private Integer objectId;
    /**
     * 司机id
     */
    @TableField("driverId")
    private Integer driverId;
    /**
     * 历史账户余额
     */
    @TableField("balance")
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
@@ -208,6 +208,7 @@
            CompanyFundFlow companyFundFlow = new CompanyFundFlow();
            companyFundFlow.setType(4);
            companyFundFlow.setObjectType(1);
            companyFundFlow.setDriverId(driver.getId());
            companyFundFlow.setBalance(new BigDecimal(balance1));
            companyFundFlow.setMoney(new BigDecimal(num1));
            companyFundFlow.setCreateTime(new Date());
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;
                                }