From dceeb9c3063ff9bbeb408dc14e036427fef6045f Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 25 八月 2023 11:13:41 +0800
Subject: [PATCH] 新增加司机端接口

---
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java |  107 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 72 insertions(+), 35 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 fb9e6ad..1396d57 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
@@ -1,5 +1,6 @@
 package com.supersavedriving.driver.modular.system.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -15,6 +16,7 @@
 import com.supersavedriving.driver.modular.system.util.MallBook.model.*;
 import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
 import com.supersavedriving.driver.modular.system.util.*;
+import com.supersavedriving.driver.modular.system.util.huawei.OBSUtil;
 import com.supersavedriving.driver.modular.system.util.mongodb.model.Location;
 import com.supersavedriving.driver.modular.system.util.rongyun.RongYunUtil;
 import com.supersavedriving.driver.modular.system.util.weChat.WeChatUtil;
@@ -41,11 +43,15 @@
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.InputStream;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.math.RoundingMode;
 import java.net.InetAddress;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 
 /**
@@ -162,6 +168,10 @@
             }
             driver.setCreateTime(new Date());
             this.insert(driver);
+            String s = wechatMiniProgramORCode(driver.getId());
+            driver.setReferralCode(s);
+            this.updateById(driver);
+
 
             //司机邀请注册奖励
             if(null != driver.getInviterId()){
@@ -190,6 +200,16 @@
     }
 
 
+
+    //生成小程序二维码
+    public String wechatMiniProgramORCode(Integer driverId) throws Exception{
+        InputStream release = weChatUtil.getwxacodeunlimit("pages/index/index", "driverId=" + driverId, "release");
+        String s = OBSUtil.putObjectToBucket(release, "driver_" + driverId + "_" + UUIDUtil.getNumberRandom(5) + ".jpg");
+        return s;
+    }
+
+
+
     /**
      * 组装个人信息
      * @param driver
@@ -198,6 +218,7 @@
      */
     public Driver setDriverParamete(Driver driver, DriverRegisterWarpper driverRegisterWarpper) throws Exception{
         driver.setAvatar(driverRegisterWarpper.getAvatar());
+        driver.setName(driverRegisterWarpper.getName());
         driver.setPhone(driverRegisterWarpper.getPhone());
         driver.setEmergencyContact(driverRegisterWarpper.getEmergencyContact());
         driver.setEmergencyPhone(driverRegisterWarpper.getEmergencyPhone());
@@ -293,6 +314,11 @@
             }
         }
 
+        if(ToolUtil.isEmpty(driver.getReferralCode())){
+            String s = wechatMiniProgramORCode(driver.getId());
+            driver.setReferralCode(s);
+            this.updateById(driver);
+        }
         return ResultUtil.success(tokenWarpper);
     }
 
@@ -481,6 +507,9 @@
             locations.forEach(s -> {
                 int i=0;
                 Driver driver = this.baseMapper.selectById(s.getDriverId());
+                if(null == driver){
+                    return;
+                }
                 i = driver.getServerStatus();
                 if(driver.getServerStatus()==2){
                     List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("driverId", s.getDriverId()).eq("state", 102));
@@ -490,7 +519,7 @@
                 }
                 String value1 = redisUtil.getValue("DRIVER" + s.getDriverId());
                 if(s.getDriverId().compareTo(uid) != 0 && ToolUtil.isNotEmpty(value1)){
-                    list.add(s.getLocation().getX() + "," + s.getLocation().getY()+","+i);
+                    list.add(s.getLocation().getX() + "," + s.getLocation().getY()+","+i+","+driver.getName());
                 }
             });
         }
@@ -502,7 +531,12 @@
         orders.forEach(e-> blue.add(e.getStartLng()+","+e.getStartLat()));
 
         map.put("orderList",blue);
-        List<Order> ordersOne = orderService.selectList(new EntityWrapper<Order>().eq("state",301));
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTimeInMillis(System.currentTimeMillis());
+        calendar.add(Calendar.HOUR_OF_DAY, -2);
+        Date time = calendar.getTime();
+        List<Order> ordersOne = orderService.selectList(new EntityWrapper<Order>().eq("state",301).between("createTime",time,new Date()));
 
         ArrayList<String> red = new ArrayList<>();
         ordersOne.forEach(e-> red.add(e.getStartLng()+","+e.getStartLat()));
@@ -510,6 +544,7 @@
         map.put("cancelOrder",red);
         return ResultUtil.success(map);
     }
+
 
 
     /**
@@ -561,13 +596,19 @@
     @Override
     public PromotionWarpper queryPromotionQRCode(Integer uid) throws Exception {
         PromotionWarpper promotionWarpper = new PromotionWarpper();
-        promotionWarpper.setUrl("https://chaoshengdaijia.com/share/driverShare/index.html?inviterId=" + uid);
+        Driver driver1 = this.selectById(uid);
+        if(ToolUtil.isEmpty(driver1.getReferralCode())){
+            String s = wechatMiniProgramORCode(driver1.getId());
+            driver1.setReferralCode(s);
+            this.updateById(driver1);
+        }
+//        promotionWarpper.setUrl("https://chaoshengdaijia.com/share/driverShare/index.html?inviterId=" + uid);
+        promotionWarpper.setUrl(driver1.getReferralCode());
         int user = appUserService.selectCount(new EntityWrapper<AppUser>().eq("inviterType", 2).eq("inviterId", uid).eq("status", 1));
         int driver = this.selectCount(new EntityWrapper<Driver>().eq("inviterType", 2).eq("inviterId", uid).eq("approvalStatus", 2).eq("status", 1));
         promotionWarpper.setTotal(user + driver);
         promotionWarpper.setUser(user);
         promotionWarpper.setDriver(driver);
-        Driver driver1 = this.selectById(uid);
         promotionWarpper.setAvatar(driver1.getAvatar());
         promotionWarpper.setName(driver1.getName());
         return promotionWarpper;
@@ -589,7 +630,15 @@
         Integer num3 = jsonObject.getInteger("num3");//每小时增加积分
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         long start = sdf.parse(sdf1.format(new Date()) + " " + num1 + ":00").getTime();
-        long end = sdf.parse(sdf1.format(new Date()) + " " + num2 + ":00").getTime();
+        Date e = sdf.parse(sdf1.format(new Date()) + " " + num2 + ":00");
+        long end = e.getTime();
+        if(start > end){
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(e);
+            calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+            end = calendar.getTimeInMillis();
+        }
+
         long l = System.currentTimeMillis();
         if(start <= l && end > l){
             Driver driver = this.selectById(driverId);
@@ -600,24 +649,25 @@
             }
             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);
+
+            //修改在线时长记录
+            DriverOnlineTime driverOnlineTime = driverOnlineTimeService.selectOne(new EntityWrapper<DriverOnlineTime>().eq("driverId", driverId).last(" and DATE_FORMAT(`day`, '%Y-%m-%d') = DATE_FORMAT(now(), '%Y-%m-%d')"));
+            if(null != driverOnlineTime){
+                driverOnlineTime.setOnlineTime(driverOnlineTime.getOnlineTime().add(new BigInteger("5")));
+                driverOnlineTime.setOnlineTime(new BigInteger(s[0]));
+                driverOnlineTimeService.updateById(driverOnlineTime);
+            }else{
+                driverOnlineTime = new DriverOnlineTime();
+                driverOnlineTime.setDriverId(driverId);
+                driverOnlineTime.setDay(new Date());
+                driverOnlineTime.setOnlineTime(new BigInteger("0"));
+                driverOnlineTimeService.insert(driverOnlineTime);
                 redisUtil.setStrValue("ONLINE" + driverId, "0_" + sdf1.format(new Date()) + "_0", 25 * 60 * 60);
                 return;
             }
+            driver.setOnlineTime(driver.getOnlineTime().add(new BigInteger("5")));
+            this.updateById(driver);
+
             Integer second = Integer.valueOf(s[0]) + 5;
             Integer time = Integer.valueOf(s[2]);
 
@@ -636,19 +686,6 @@
                 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);
         }
@@ -1082,8 +1119,8 @@
         int orderNum = orderService.selectCount(wrapper);
         map.put("orderNum",orderNum);
         // 有效时长
-        int okTime =  this.baseMapper.getTime(sTime,eTime,uid);
-        map.put("okTime",okTime);
+        Integer okTime =  this.baseMapper.getTime(sTime,eTime,uid);
+        map.put("okTime",okTime==null?0:okTime);
         wrapperOne.eq("inviterType",2);
         wrapperOne.eq("inviterId",uid);
         int userNum = appUserService.selectCount(wrapperOne);

--
Gitblit v1.7.1