From e52227b01983146f2e3c81dc575141d8b9889497 Mon Sep 17 00:00:00 2001
From: yanghb <yanghb>
Date: 星期五, 21 四月 2023 10:16:30 +0800
Subject: [PATCH] 代码调整

---
 DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java |  101 ++++++++++++++++++++++++++++++++------------------
 1 files changed, 65 insertions(+), 36 deletions(-)

diff --git a/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
index 77cf33b..1190f4b 100644
--- a/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
+++ b/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
@@ -15,6 +15,7 @@
 import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.*;
+import com.stylefeng.guns.modular.system.util.LiuZhouBank.PayUtil;
 import com.stylefeng.guns.modular.system.warpper.ActivityWarpper;
 import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
 import com.stylefeng.guns.modular.system.warpper.LoginWarpper;
@@ -131,6 +132,10 @@
 
     private String salt = "SA;d5#";
 
+    private Map<String, Long> loginTime = new HashMap<>();//登录时间
+
+    private Map<String, Integer> loginFailures = new HashMap<>();//登录失败次数
+
 
 
 
@@ -141,7 +146,9 @@
      * @throws Exception
      */
     @Override
-    public ResultUtil queryCaptcha(String phone, Integer type) throws Exception {
+    public ResultUtil queryCaptcha(String checkCaptcha, Integer type) throws Exception {
+        checkCaptcha = AESUtil.decrypt(checkCaptcha);
+
         Random random = new Random();
         StringBuffer sb = new StringBuffer();
         for(int i = 0; i < 4; i++){
@@ -151,7 +158,7 @@
         String sms = "短信验证码【" + authCode + "】已发到您的手机,验证码将在5分钟后失效,请及时登录!";
 
         //发送验证码短信
-        redisUtil.setStrValue(phone, authCode, 5 * 60);//设置五分钟过期
+        redisUtil.setStrValue(checkCaptcha, authCode, 5 * 60);//设置五分钟过期
         String templateCode = "";
         switch (type){
             case 1:
@@ -167,7 +174,7 @@
                 templateCode = "SMS_154775431";//修改密码
                 break;
         }
-        String sData = aLiSendSms.sendSms(phone, "SMS_229715276", "{\"code\":\"" + authCode + "\"}");
+        String sData = aLiSendSms.sendSms(checkCaptcha, templateCode, "{\"code\":\"" + authCode + "\"}");
         JSONObject jsonObject = JSON.parseObject(sData);
         String message = jsonObject.getString("Message");
         if(!"OK".equals(message)){
@@ -206,6 +213,7 @@
      */
     @Override
     public ResultUtil registeredDriver(String phone, String code, String password, Integer uid, Integer type, Integer userType) throws Exception {
+        phone = AESUtil.decrypt(phone);
         ResultUtil<LoginWarpper> result = this.registeredDriver(phone, code, password);
         if(result.getCode() == 200 && null != uid){
             if(type == 2){
@@ -218,9 +226,9 @@
                         incomeService.saveData(2, driver.getId(), 1, Integer.valueOf(String.valueOf(map.get("id"))), null, Double.valueOf(String.valueOf(map.get("money"))));
                     }
                 }
-                driver.setActivityMoney(bigDecimal.add(new BigDecimal(null == driver.getActivityMoney() ? 0 : driver.getActivityMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-                driver.setLaveActivityMoney(bigDecimal.add(new BigDecimal(null == driver.getLaveActivityMoney() ? 0 : driver.getLaveActivityMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-                driver.setBalance(bigDecimal.add(new BigDecimal(null == driver.getBalance() ? 0 : driver.getBalance())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+                driver.setActivityMoney(bigDecimal.add(new BigDecimal(driver.getActivityMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+                driver.setLaveActivityMoney(bigDecimal.add(new BigDecimal(driver.getLaveActivityMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+                driver.setBalance(bigDecimal.add(new BigDecimal(driver.getBalance())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                 driverMapper.updateById(driver);
 
                 Map<String, Date> date = dateUtil.getStartAndEndDate(new Date());
@@ -278,6 +286,7 @@
             return ResultUtil.error("验证码无效");
         }
 
+        phone = AESUtil.encrypt(phone);
         Driver driver1 = driverMapper.queryByPhone_(phone, 4);//获取审核不通过的数据
         if(null != driver1){
             driver1.setAuthState(1);
@@ -411,11 +420,13 @@
      */
     @Override
     public ResultUtil resetPassword(String phone, String code, String password) throws Exception {
+        phone = AESUtil.decrypt(phone);
         boolean b = this.checkCaptcha(phone, code);
         if(!b){
             return ResultUtil.error("验证码无效");
         }
-        Driver driver = driverMapper.queryByPhone(phone);
+        String encrypt = AESUtil.encrypt(phone);
+        Driver driver = driverMapper.queryByPhone(encrypt);
         if(null == driver){
             return ResultUtil.error("电话号码未注册");
         }
@@ -456,17 +467,35 @@
      */
     @Override
     public ResultUtil<LoginWarpper> driverLogin(String phone, String password) throws Exception {
-        Driver driver = driverMapper.queryByPhone(phone);
+        System.err.println("前端原始加密数据---》" + phone);
+        phone = AESUtil.decrypt(phone);
+        System.err.println("后端解密数据---》" + phone);
+        Integer frequency = loginFailures.get(phone);
+        Long time = loginTime.get(phone);
+        if(null != time && System.currentTimeMillis() < (time + 1800000) && null != frequency && frequency >= 5){
+            return ResultUtil.error("暂时无法登录,请30分钟后重试!");
+        }
+        if(null != time && System.currentTimeMillis() >= (time + 1800000)){
+            frequency = 0;
+            loginFailures.put(phone, frequency);
+        }
+        String encrypt = AESUtil.encrypt(phone);
+        Driver driver = driverMapper.queryByPhone(encrypt);
         if(null == driver){
             return ResultUtil.error("账号未注册");
         }
-        if(ToolUtil.isNotEmpty(driver.getIdCard()) && driver.getAuthState() == 1){
+        if(driver.getAuthState() == 1){
             return ResultUtil.error("账号正在审核中,请耐心等待");
         }
         if(driver.getAuthState() == 3){
             return ResultUtil.error("账号已被冻结,请联系管理员");
         }
         if(!driver.getPassword().equals(ShiroKit.md5(password, salt))){
+            frequency = (null == frequency ? 0 : frequency) + 1;
+            loginFailures.put(phone, frequency);
+            if(frequency == 1){
+                loginTime.put(phone, System.currentTimeMillis());
+            }
             return ResultUtil.error("密码错误");
         }
 
@@ -483,7 +512,6 @@
         loginWarpper.setId(driver.getId());
         loginWarpper.setToken(token);
         loginWarpper.setAppid(UUIDUtil.getRandomCode());
-        loginWarpper.setState(ToolUtil.isEmpty(driver.getIdCard()) ? 1 : 0);
 
         //创建高德猎鹰的终端数据
         String tid = gdFalconUtil.createTerminal(phone);
@@ -501,7 +529,7 @@
      */
     @Override
     public Map<String, Object> queryHomeData(Integer uid) throws Exception {
-        Map<String, Object> map = this.baseMapper.queryHomeData(uid);
+        Map<String, Object> map = driverMapper.queryHomeData(uid);
         int size = this.queryMyActivity(uid, new Date()).size();
         map.put("activity", size);
         return map;
@@ -563,13 +591,6 @@
                 }
             }).start();
         }else{
-            List<Driver> drivers = this.selectList(new EntityWrapper<Driver>().eq("carId", driver.getCarId()).eq("authState", 2).ne("flag", 3).ne("id", uid));
-            for (Driver d : drivers){
-                driverWork = driverWorkMapper.queryNewWork(d.getId(), null, 1);
-                if(null != driverWork){
-                    return ResultUtil.error("车辆正在使用中");
-                }
-            }
             driverWork = new DriverWork();
             driverWork.setState(1);
             driverWork.setDriverId(uid);
@@ -677,7 +698,6 @@
     @Override
     public Map<String, Object> queryHomeNum(Integer uid) throws Exception {
         Map<String, Object> map = new HashMap<>();
-        //出租车
         List<Map<String, Object>> list = orderTaxiService.queryOrderList(1, uid);
         map.put("service", list.size());//服务中
         list = orderTaxiService.queryOrderList(2, uid);
@@ -701,26 +721,23 @@
         List<DriverService> list = driverServiceMapper.queryMyBusiness(uid);
         List<BaseWarpper> maps = new ArrayList<>();
         for (DriverService d : list){
-            if(d.getType() == 6){
-                continue;
-            }
             BaseWarpper baseWarpper = new BaseWarpper();
             baseWarpper.setId(d.getType());
             switch (d.getType()){
                 case 1:
-                    baseWarpper.setName("快车/专车");
+                    baseWarpper.setName("专车");
                     break;
                 case 2:
                     baseWarpper.setName("出租车");
                     break;
                 case 3:
-                    baseWarpper.setName("机场专线");
+                    baseWarpper.setName("跨城出行");
                     break;
-                case 7:
-                    baseWarpper.setName("景区直通车");
+                case 4:
+                    baseWarpper.setName("同城小件物流");
                     break;
-                case 8:
-                    baseWarpper.setName("公务出行");
+                case 5:
+                    baseWarpper.setName("跨城小件物流");
                     break;
             }
             maps.add(baseWarpper);
@@ -755,13 +772,15 @@
         if(null != driver){
             return ResultUtil.error("电话号码已被注册");
         }
+        phone = AESUtil.decrypt(phone);
         boolean b = this.checkCaptcha(phone, code);
         if(!b){
             return ResultUtil.error("验证码无效");
         }
+        String encrypt = AESUtil.encrypt(phone);
         Driver driver1 = this.selectById(uid);
-        driver1.setAccount(phone);
-        driver1.setPhone(phone);
+        driver1.setAccount(encrypt);
+        driver1.setPhone(encrypt);
         this.updateById(driver1);
 
         smsrecordService.saveData(7, phone, code, "短信验证码【" + code + "】已发到您的手机,验证码将在5分钟后失效,请及时登录!");
@@ -803,15 +822,15 @@
      * @throws Exception
      */
     @Override
-    public synchronized ResultUtil replaceCar(Integer carId, Integer uid) throws Exception {
+    public ResultUtil replaceCar(Integer carId, Integer uid) throws Exception {
         Driver driver = this.selectById(uid);
         if(driver.getState() == 3){
             return ResultUtil.error("还在服务中,不能更换");
         }
-//        boolean idle = carService.idle(carId);
-//        if(!idle){
-//            return ResultUtil.error("车辆已被绑定了");
-//        }
+        boolean idle = carService.idle(carId);
+        if(!idle){
+            return ResultUtil.error("车辆已被绑定了");
+        }
         driver.setCarId(carId);
         this.updateById(driver);
         return ResultUtil.success();
@@ -953,7 +972,7 @@
                     }
                     switch (driverActivityOnline.getType()){
                         case 1:
-                            sb.append("快车");
+                            sb.append("专车");
                             break;
                         case 2:
                             sb.append("出租车");
@@ -1502,6 +1521,16 @@
     }
 
 
+    @Override
+    public ResultUtil getMoneyReceivingQRCode(Integer driverId) throws Exception {
+        Driver driver = this.selectById(driverId);
+        if(ToolUtil.isEmpty(driver.getMchtNo())){
+            return ResultUtil.error("请先开通收款账户");
+        }
+        String path = "https://okyueche.com:8443/h5/index.html?driverid=" + driverId;
+        return ResultUtil.success(path);
+    }
+
     /**
      * 获取编号
      * @return

--
Gitblit v1.7.1