From d02ea504ec952cdc920be3f7ddb6b79dccd24f56 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期日, 30 七月 2023 05:03:09 +0800
Subject: [PATCH] 添加企业流水记录

---
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java               |   23 +++
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java                                |    6 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverOnlineTimeService.java            |   11 +
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java |   28 +++
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CompanyFundFlowServiceImpl.java     |   15 ++
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java             |   21 +++
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java              |   65 +++++++--
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/RevenueMapper.java                           |   15 ++
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IRevenueService.java                     |   16 ++
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/CompanyFundFlowMapper.xml            |   15 ++
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverOnlineTimeServiceImpl.java    |   15 ++
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/CompanyFundFlow.java                       |   54 +++++++
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/DriverOnlineTime.java                      |   39 +++++
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/RevenueMapper.xml                    |   25 +++
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/DriverOnlineTimeMapper.java                  |   11 +
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ICompanyFundFlowService.java             |   11 +
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/CompanyFundFlowMapper.java                   |   11 +
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/DriverOnlineTimeMapper.xml           |   12 +
 18 files changed, 372 insertions(+), 21 deletions(-)

diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/CompanyFundFlowMapper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/CompanyFundFlowMapper.java
new file mode 100644
index 0000000..027a7cc
--- /dev/null
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/CompanyFundFlowMapper.java
@@ -0,0 +1,11 @@
+package com.supersavedriving.driver.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.supersavedriving.driver.modular.system.model.CompanyFundFlow;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/30 3:05
+ */
+public interface CompanyFundFlowMapper extends BaseMapper<CompanyFundFlow> {
+}
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/DriverOnlineTimeMapper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/DriverOnlineTimeMapper.java
new file mode 100644
index 0000000..a189a2e
--- /dev/null
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/DriverOnlineTimeMapper.java
@@ -0,0 +1,11 @@
+package com.supersavedriving.driver.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.supersavedriving.driver.modular.system.model.DriverOnlineTime;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/30 2:23
+ */
+public interface DriverOnlineTimeMapper extends BaseMapper<DriverOnlineTime> {
+}
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/RevenueMapper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/RevenueMapper.java
index 9a35336..4d05a16 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/RevenueMapper.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/RevenueMapper.java
@@ -28,4 +28,19 @@
      */
     List<PerformanceRankingWarpper> queryDriverRank(@Param("type") Integer type, @Param("time") String time,
                                                     @Param("dayType") Integer dayType);
+
+
+    /**
+     * 获取代理商账户余额
+     * @param companyId
+     * @return
+     */
+    Double queryAgentBalance(@Param("companyId") Integer companyId);
+
+
+    /**
+     * 获取平台账户余额
+     * @return
+     */
+    Double queryCompanyBalance();
 }
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/CompanyFundFlowMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/CompanyFundFlowMapper.xml
new file mode 100644
index 0000000..f8ea348
--- /dev/null
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/CompanyFundFlowMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.supersavedriving.driver.modular.system.dao.CompanyFundFlowMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.supersavedriving.driver.modular.system.model.CompanyFundFlow">
+        <id column="id" property="id"/>
+        <result column="type" property="type"/>
+        <result column="objectType" property="objectType"/>
+        <result column="objectId" property="objectId"/>
+        <result column="balance" property="balance"/>
+        <result column="money" property="money"/>
+        <result column="createTime" property="createTime"/>
+    </resultMap>
+</mapper>
\ No newline at end of file
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/DriverOnlineTimeMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/DriverOnlineTimeMapper.xml
new file mode 100644
index 0000000..bdfc6f4
--- /dev/null
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/DriverOnlineTimeMapper.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.supersavedriving.driver.modular.system.dao.DriverOnlineTimeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.supersavedriving.driver.modular.system.model.DriverOnlineTime">
+        <id column="id" property="id"/>
+        <result column="driverId" property="driverId"/>
+        <result column="day" property="day"/>
+        <result column="onlineTime" property="onlineTime"/>
+    </resultMap>
+</mapper>
\ No newline at end of file
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/RevenueMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/RevenueMapper.xml
index 8dec2cb..c442367 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/RevenueMapper.xml
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/RevenueMapper.xml
@@ -57,4 +57,29 @@
         group by a.userId,b.`name`
         ) as aa,( SELECT @ROW := 0 ) AS itable order by aa.number desc
     </select>
+
+
+    <select id="queryAgentBalance" resultType="double">
+        select
+        sum(aa.income) - sum(aa.disburse) as balance
+        from (
+        select sum(amount) as income, 0 as disburse from t_revenue where userType = 3 and userId = #{companyId}
+        union all
+        select 0 as ncome, sum(amount) as disburse from t_settlement_record where type = 2 and objectId = #{companyId}
+        ) as aa
+    </select>
+
+
+
+    <select id="queryCompanyBalance" resultType="double">
+        select
+        sum(aa.income) - sum(aa.disburse) + sum(aa.recharge) as balance
+        from (
+        select sum(amount) as income, 0 as disburse, 0 as recharge from t_revenue where userType = 4
+        union all
+        select 0 as ncome, sum(amount) as disburse, 0 as recharge from t_settlement_record where type = 1
+        union all
+        select 0 as ncome, 0 as disburse, sum(surplusDividedAmount) as recharge from t_recharge_record where type = 4 and payStatus = 2
+        ) as aa
+    </select>
 </mapper>
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/CompanyFundFlow.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/CompanyFundFlow.java
new file mode 100644
index 0000000..6b9f662
--- /dev/null
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/CompanyFundFlow.java
@@ -0,0 +1,54 @@
+package com.supersavedriving.driver.modular.system.model;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/30 3:02
+ */
+@Data
+@TableName("t_company_fund_flow")
+public class CompanyFundFlow {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 变动类型(1=充值,2=提现,3=佣金收入,4=保险收入)
+     */
+    @TableField("type")
+    private Integer type;
+    /**
+     * 对象类型(1=平台,2=代理商)
+     */
+    @TableField("objectType")
+    private Integer objectType;
+    /**
+     * 代理商id
+     */
+    @TableField("objectId")
+    private Integer objectId;
+    /**
+     * 历史账户余额
+     */
+    @TableField("balance")
+    private BigDecimal balance;
+    /**
+     * 变动金额
+     */
+    @TableField("money")
+    private BigDecimal money;
+    /**
+     * 变动时间
+     */
+    @TableField("createTime")
+    private Date createTime;
+}
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java
index 63b141a..dcbad55 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.enums.IdType;
 import lombok.Data;
 
+import java.math.BigInteger;
 import java.util.Date;
 
 /**
@@ -128,6 +129,11 @@
     @TableField("backgroundBalance")
     private Double backgroundBalance;
     /**
+     * 司机在线时长
+     */
+    @TableField("onlineTime")
+    private BigInteger onlineTime;
+    /**
      * 优惠券余额(订单优惠券支付的金额)
      */
     @TableField("couponBalance")
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/DriverOnlineTime.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/DriverOnlineTime.java
new file mode 100644
index 0000000..6040dd0
--- /dev/null
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/DriverOnlineTime.java
@@ -0,0 +1,39 @@
+package com.supersavedriving.driver.modular.system.model;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import lombok.Data;
+
+import java.math.BigInteger;
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/30 1:31
+ */
+@Data
+@TableName("t_driver_online_time")
+public class DriverOnlineTime {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 司机id
+     */
+    @TableField("driverId")
+    private Integer driverId;
+    /**
+     * 统计日期
+     */
+    @TableField("day")
+    private Date day;
+    /**
+     * 在线时长(秒)
+     */
+    @TableField("onlineTime")
+    private BigInteger onlineTime;
+}
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ICompanyFundFlowService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ICompanyFundFlowService.java
new file mode 100644
index 0000000..63d0af5
--- /dev/null
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/ICompanyFundFlowService.java
@@ -0,0 +1,11 @@
+package com.supersavedriving.driver.modular.system.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.supersavedriving.driver.modular.system.model.CompanyFundFlow;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/30 3:09
+ */
+public interface ICompanyFundFlowService extends IService<CompanyFundFlow> {
+}
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverOnlineTimeService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverOnlineTimeService.java
new file mode 100644
index 0000000..5fb99c3
--- /dev/null
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IDriverOnlineTimeService.java
@@ -0,0 +1,11 @@
+package com.supersavedriving.driver.modular.system.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.supersavedriving.driver.modular.system.model.DriverOnlineTime;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/30 2:24
+ */
+public interface IDriverOnlineTimeService extends IService<DriverOnlineTime> {
+}
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IRevenueService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IRevenueService.java
index fcd2779..4a83721 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IRevenueService.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IRevenueService.java
@@ -39,4 +39,20 @@
      * @return
      */
     List<PerformanceRankingWarpper> queryDriverRank(Integer type, String time, Integer dayType);
+
+
+    /**
+     * 获取代理商账户余额
+     * @param companyId
+     * @return
+     */
+    Double queryAgentBalance(Integer companyId);
+
+
+
+    /**
+     * 获取平台账户余额
+     * @return
+     */
+    Double queryCompanyBalance();
 }
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
index 41c7c86..2fb86c8 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
@@ -5,10 +5,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.supersavedriving.driver.modular.system.dao.AccountChangeDetailMapper;
-import com.supersavedriving.driver.modular.system.model.AccountChangeDetail;
-import com.supersavedriving.driver.modular.system.model.Driver;
-import com.supersavedriving.driver.modular.system.model.RechargeRecord;
-import com.supersavedriving.driver.modular.system.model.SystemConfig;
+import com.supersavedriving.driver.modular.system.model.*;
 import com.supersavedriving.driver.modular.system.service.*;
 import com.supersavedriving.driver.modular.system.util.ResultUtil;
 import com.supersavedriving.driver.modular.system.util.UUIDUtil;
@@ -43,6 +40,12 @@
 
     @Autowired
     private IOrderService orderService;
+
+    @Autowired
+    private IRevenueService revenueService;
+
+    @Autowired
+    private ICompanyFundFlowService companyFundFlowService;
 
 
 
@@ -127,6 +130,7 @@
         Double num1 = jsonObject.getDouble("num1");
         List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("status", 1));
         for (Driver driver : drivers) {
+            Double balance1 = revenueService.queryCompanyBalance();
             Double backgroundBalance = driver.getBackgroundBalance();
             Double balance = driver.getBalance();
             double all = backgroundBalance + balance;
@@ -168,6 +172,13 @@
                     accountChangeDetail.setCreateTime(new Date());
                     this.insert(accountChangeDetail);
 
+                    Revenue revenue = new Revenue();
+                    revenue.setType(3);
+                    revenue.setUserType(4);
+                    revenue.setAmount(d);
+                    revenue.setCreateTime(new Date());
+                    revenueService.insert(revenue);
+
                     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();
@@ -192,8 +203,15 @@
 
                 }
             }
-
             driverService.updateById(driver);
+
+            CompanyFundFlow companyFundFlow = new CompanyFundFlow();
+            companyFundFlow.setType(4);
+            companyFundFlow.setObjectType(1);
+            companyFundFlow.setBalance(new BigDecimal(balance1));
+            companyFundFlow.setMoney(new BigDecimal(num1));
+            companyFundFlow.setCreateTime(new Date());
+            companyFundFlowService.insert(companyFundFlow);
         }
     }
 }
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CompanyFundFlowServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CompanyFundFlowServiceImpl.java
new file mode 100644
index 0000000..2795d23
--- /dev/null
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CompanyFundFlowServiceImpl.java
@@ -0,0 +1,15 @@
+package com.supersavedriving.driver.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.supersavedriving.driver.modular.system.dao.CompanyFundFlowMapper;
+import com.supersavedriving.driver.modular.system.model.CompanyFundFlow;
+import com.supersavedriving.driver.modular.system.service.ICompanyFundFlowService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/30 3:10
+ */
+@Service
+public class CompanyFundFlowServiceImpl extends ServiceImpl<CompanyFundFlowMapper, CompanyFundFlow> implements ICompanyFundFlowService {
+}
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverOnlineTimeServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverOnlineTimeServiceImpl.java
new file mode 100644
index 0000000..85a41cb
--- /dev/null
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverOnlineTimeServiceImpl.java
@@ -0,0 +1,15 @@
+package com.supersavedriving.driver.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.supersavedriving.driver.modular.system.dao.DriverOnlineTimeMapper;
+import com.supersavedriving.driver.modular.system.model.DriverOnlineTime;
+import com.supersavedriving.driver.modular.system.service.IDriverOnlineTimeService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/7/30 2:25
+ */
+@Service
+public class DriverOnlineTimeServiceImpl extends ServiceImpl<DriverOnlineTimeMapper, DriverOnlineTime> implements IDriverOnlineTimeService {
+}
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java
index e91a032..fffe3d4 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java
@@ -42,6 +42,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.math.RoundingMode;
 import java.net.InetAddress;
 import java.text.SimpleDateFormat;
@@ -108,6 +109,9 @@
 
     @Autowired
     private WeChatUtil weChatUtil;
+
+    @Autowired
+    private IDriverOnlineTimeService driverOnlineTimeService;
 
     @Value("${callbackPath}")
     private String callbackPath;
@@ -555,20 +559,6 @@
      */
     public void addDurationCredits(Integer driverId) throws Exception {
         SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
-        String value = redisUtil.getValue("ONLINE" + driverId);
-        if(ToolUtil.isEmpty(value)){
-            redisUtil.setStrValue("ONLINE" + driverId, "0_" + sdf1.format(new Date()) + "_0", 25 * 60 * 60);
-            return;
-        }
-        String today = sdf1.format(new Date());
-        String[] s = value.split("_");
-        if(!today.equals(s[1])){
-            redisUtil.setStrValue("ONLINE" + driverId, "0_" + sdf1.format(new Date()) + "_0", 25 * 60 * 60);
-            return;
-        }
-        Integer second = Integer.valueOf(s[0]) + 5;
-        Integer time = Integer.valueOf(s[2]);
-
         SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4));
         if(null == systemConfig){
             return;
@@ -582,9 +572,37 @@
         long end = sdf.parse(sdf1.format(new Date()) + " " + num2 + ":00").getTime();
         long l = System.currentTimeMillis();
         if(start <= l && end > l){
+            Driver driver = this.selectById(driverId);
+            String value = redisUtil.getValue("ONLINE" + driverId);
+            if(ToolUtil.isEmpty(value)){
+                redisUtil.setStrValue("ONLINE" + driverId, "0_" + sdf1.format(new Date()) + "_0", 25 * 60 * 60);
+                return;
+            }
+            String today = sdf1.format(new Date());
+            String[] s = value.split("_");
+            if(!today.equals(s[1])){
+                //修改在线时长记录
+                DriverOnlineTime driverOnlineTime = driverOnlineTimeService.selectOne(new EntityWrapper<DriverOnlineTime>().eq("driverId", driverId).eq("DATE_FORMAT(`day`, '%Y-%m-%d')", s[1]));
+                if(null != driverOnlineTime){
+                    driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
+                    driverOnlineTimeService.updateById(driverOnlineTime);
+                }else{
+                    driverOnlineTime = new DriverOnlineTime();
+                    driverOnlineTime.setDriverId(driverId);
+                    driverOnlineTime.setDay(sdf1.parse(s[1]));
+                    driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
+                    driverOnlineTimeService.insert(driverOnlineTime);
+                }
+                driver.setOnlineTime(new BigInteger(s[0]));
+                this.updateById(driver);
+                redisUtil.setStrValue("ONLINE" + driverId, "0_" + sdf1.format(new Date()) + "_0", 25 * 60 * 60);
+                return;
+            }
+            Integer second = Integer.valueOf(s[0]) + 5;
+            Integer time = Integer.valueOf(s[2]);
+
             int h = Double.valueOf(second / 3600).intValue();
             if(h > 0 && h > time){
-                Driver driver = this.selectById(driverId);
                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                 accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                 accountChangeDetail.setUserType(2);
@@ -595,11 +613,26 @@
                 accountChangeDetail.setNewData(driver.getIntegral().doubleValue());
                 accountChangeDetail.setExplain("在线时长奖励");
                 accountChangeDetailService.saveData(accountChangeDetail);
+                driver.setOnlineTime(new BigInteger(s[0]));
                 this.updateById(driver);
                 time++;
+
+                //修改在线时长记录
+                DriverOnlineTime driverOnlineTime = driverOnlineTimeService.selectOne(new EntityWrapper<DriverOnlineTime>().eq("driverId", driverId).eq("DATE_FORMAT(`day`, '%Y-%m-%d')", s[1]));
+                if(null != driverOnlineTime){
+                    driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
+                    driverOnlineTimeService.updateById(driverOnlineTime);
+                }else{
+                    driverOnlineTime = new DriverOnlineTime();
+                    driverOnlineTime.setDriverId(driverId);
+                    driverOnlineTime.setDay(sdf1.parse(s[1]));
+                    driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
+                    driverOnlineTimeService.insert(driverOnlineTime);
+                }
             }
+            redisUtil.setStrValue("ONLINE" + driverId, second + "_" + s[1] + "_" + time);
         }
-        redisUtil.setStrValue("ONLINE" + driverId, second + "_" + s[1] + "_" + time);
+
     }
 
 
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 52240af..34b1756 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
@@ -114,6 +114,9 @@
     @Autowired
     private IOrderPositionService orderPositionService;
 
+    @Autowired
+    private ICompanyFundFlowService companyFundFlowService;
+
     @Value("${callbackPath}")
     private String callbackPath;//支付回调网关地址
 
@@ -1424,6 +1427,8 @@
                     accountChangeDetailService.insert(accountChangeDetail);
 
                     //补贴中分账
+                    Double balance = revenueService.queryCompanyBalance();//平台账户余额
+
                     Double discountedPrice = order.getDiscountedPrice();
                     List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
                     for (RechargeRecord rechargeRecord : rechargeRecords) {
@@ -1448,6 +1453,14 @@
                             }
                         }
                     }
+
+                    CompanyFundFlow companyFundFlow = new CompanyFundFlow();
+                    companyFundFlow.setType(5);
+                    companyFundFlow.setObjectType(1);
+                    companyFundFlow.setBalance(new BigDecimal(balance));
+                    companyFundFlow.setMoney(new BigDecimal(order.getDiscountedPrice()));
+                    companyFundFlow.setCreateTime(new Date());
+                    companyFundFlowService.insert(companyFundFlow);
                 }
             }
             this.updateById(order);
@@ -1966,6 +1979,7 @@
                     }
                     //处理代理商抽佣
                     if(num3 > 0){
+                        Double balance = revenueService.queryAgentBalance(driver.getAgentId());
                         Revenue revenue = new Revenue();
                         revenue.setType(1);
                         revenue.setUserType(3);
@@ -1997,6 +2011,15 @@
                                 }
                             }
                         }
+
+                        CompanyFundFlow companyFundFlow = new CompanyFundFlow();
+                        companyFundFlow.setType(3);
+                        companyFundFlow.setObjectType(2);
+                        companyFundFlow.setObjectId(driver.getAgentId());
+                        companyFundFlow.setBalance(new BigDecimal(balance));
+                        companyFundFlow.setMoney(new BigDecimal(num3));
+                        companyFundFlow.setCreateTime(new Date());
+                        companyFundFlowService.insert(companyFundFlow);
                     }
                 }
             }
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java
index 7ebd975..4cba21d 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java
@@ -94,4 +94,25 @@
     public List<PerformanceRankingWarpper> queryDriverRank(Integer type, String time, Integer dayType) {
         return this.baseMapper.queryDriverRank(type, time, dayType);
     }
+
+
+    /**
+     * 获取代理商账户余额
+     * @param companyId
+     * @return
+     */
+    @Override
+    public Double queryAgentBalance(Integer companyId) {
+        return this.baseMapper.queryAgentBalance(companyId);
+    }
+
+
+    /**
+     * 获取平台账户余额
+     * @return
+     */
+    @Override
+    public Double queryCompanyBalance() {
+        return this.baseMapper.queryCompanyBalance();
+    }
 }

--
Gitblit v1.7.1