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/DriverServiceImpl.java |   65 ++++++++++++++++++++++++--------
 1 files changed, 49 insertions(+), 16 deletions(-)

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);
+
     }
 
 

--
Gitblit v1.7.1