From 1c40baaf9ca0183945b9881d11ceed5aeebc8290 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 23 十月 2025 11:35:44 +0800
Subject: [PATCH] 修改bug
---
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 690 ++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 482 insertions(+), 208 deletions(-)
diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
index af01a12..41f0151 100644
--- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
+++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
@@ -1,24 +1,35 @@
package com.stylefeng.guns.modular.system.service.impl;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.core.common.constant.JwtConstants;
import com.stylefeng.guns.core.shiro.ShiroKit;
import com.stylefeng.guns.core.shiro.ShiroUser;
import com.stylefeng.guns.core.util.JwtTokenUtil;
import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.crossCity.dao.OrderCrossCityMapper;
+import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
+import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper;
+import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
import com.stylefeng.guns.modular.system.dao.*;
import com.stylefeng.guns.modular.system.model.*;
+import com.stylefeng.guns.modular.system.model.vo.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
+import com.stylefeng.guns.modular.system.util.qianyuntong.SMSUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.UserUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.QYTUserInfo;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.SendSmsRequest;
import com.stylefeng.guns.modular.system.warpper.ActivityWarpper;
import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
import com.stylefeng.guns.modular.system.warpper.LoginWarpper;
import com.stylefeng.guns.modular.system.warpper.RegisteredWarpper;
+import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
+import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
+import io.rong.models.response.TokenResult;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
@@ -26,13 +37,16 @@
import org.apache.shiro.util.ByteSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
+import java.time.LocalDate;
import java.util.*;
+import java.util.concurrent.TimeUnit;
@Service
@@ -41,8 +55,6 @@
@Resource
private DriverMapper driverMapper;
- @Resource
- private CompanyCityMapper companyCityMapper;
@Resource
private UserActivityInviteMapper userActivityInviteMapper;
@@ -61,46 +73,45 @@
@Resource
private CompanyMapper companyMapper;
-
+
@Resource
private DriverActivityRegisteredMapper driverActivityRegisteredMapper;
-
+
@Resource
private DriverActivityOrderMapper driverActivityOrderMapper;
-
+
@Resource
private DriverActivityOnlineMapper driverActivityOnlineMapper;
-
+
@Resource
private DriverActivityHistoryMapper driverActivityHistoryMapper;
-
+
@Resource
private UserCouponRecordMapper userCouponRecordMapper;
-
+
@Resource
private DriverOrdersMapper driverOrdersMapper;
-
- @Autowired
- private RedisUtil redisUtil;
-
- @Autowired
- private ALiSendSms aLiSendSms;
-
+
+ @Resource
+ private RedisTemplate<String, Object> redisTemplate;
+
@Autowired
private ICompanyCityService companyCityService;
-
+ @Autowired
+ private IOpenCityService openCityService;
+
@Autowired
private GDFalconUtil gdFalconUtil;
-
+
@Autowired
private IOrderService orderService;
-
+
@Autowired
private ISmsrecordService smsrecordService;
-
+
@Autowired
private ICarService carService;
-
+
@Autowired
private IReassignService reassignService;
@@ -120,9 +131,6 @@
private CarServiceMapper carServiceMapper;
@Autowired
- private PushUtil pushUtil;
-
- @Autowired
private IOrderLogisticsService orderLogisticsService;
@Value("${pushMinistryOfTransport}")
@@ -130,8 +138,52 @@
private String salt = "SA;d5#";
+ @Resource
+ private OrderPrivateCarMapper orderPrivateCarMapper;
+
+ @Resource
+ private OrderCrossCityMapper orderCrossCityMapper;
+
+ @Resource
+ private OrderTaxiMapper orderTaxiMapper;
+
+ @Autowired
+ private GeodesyUtil geodesyUtil;
+ @Override
+ public List<Driver> queryIdleDriver(Integer type, Double lon, Double lat, Double distance, Integer companyId) throws Exception {
+ List<Driver> drivers = driverMapper.queryIdleDriver(type, companyId);
+ List<Driver> list = new ArrayList<>();
+ for(Driver driver : drivers){
+ String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + String.valueOf(driver.getId()));
+ if(null != value){
+ Map<String, Double> distance1 = geodesyUtil.getDistance(lon + "," + lat, value);
+ double d = Double.valueOf(distance1.get("WGS84")).doubleValue();
+ if(d < (distance * 1000)){
+ list.add(driver);
+ }
+ }
+ }
+ return list;
+ }
+
+ @Override
+ public List<Driver> queryIdleDriver(Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId) throws Exception {
+ List<Driver> drivers = driverMapper.queryIdleDriver_(type, serverCarModelId, companyId);
+ List<Driver> list = new ArrayList<>();
+ for(Driver driver : drivers){
+ String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + String.valueOf(driver.getId()));
+ if(null != value){
+ Map<String, Double> distance1 = geodesyUtil.getDistance(lon + "," + lat, value);
+ double d = Double.valueOf(distance1.get("WGS84")).doubleValue();
+ if(d < (distance * 1000)){
+ list.add(driver);
+ }
+ }
+ }
+ return list;
+ }
/**
* 获取短信验证码
@@ -143,36 +195,44 @@
public ResultUtil queryCaptcha(String phone, Integer type) throws Exception {
Random random = new Random();
StringBuffer sb = new StringBuffer();
- for(int i = 0; i < 4; i++){
+ for (int i = 0; i < 4; i++) {
sb.append((int) (random.nextDouble() * 10));
}
String authCode = sb.toString();
- String sms = "短信验证码【" + authCode + "】已发到您的手机,验证码将在5分钟后失效,请及时登录!";
-
- //发送验证码短信
- redisUtil.setStrValue(phone, authCode, 5 * 60);//设置五分钟过期
- String templateCode = "";
- switch (type){
- case 1:
- templateCode = "SMS_154775435";//身份验证
- break;
- case 2:
- templateCode = "SMS_154775434";//登录确认
- break;
- case 3:
- templateCode = "SMS_154775432";//用户注册
- break;
- case 4:
- templateCode = "SMS_154775431";//修改密码
- break;
- }
- String sData = aLiSendSms.sendSms(phone, "SMS_229715276", "{\"code\":\"" + authCode + "\"}");
- JSONObject jsonObject = JSON.parseObject(sData);
- String message = jsonObject.getString("Message");
- if(!"OK".equals(message)){
- return ResultUtil.error("");
- }
- System.out.println(sms);
+// //发送验证码短信
+// redisTemplate.opsForValue().set(phone, authCode, 5, TimeUnit.MINUTES);//设置五分钟过期
+// String templateCode = "";
+// switch (type) {
+// case 1:
+// templateCode = "SMS_154775435";//身份验证
+// break;
+// case 2:
+// templateCode = "SMS_154775434";//登录确认
+// break;
+// case 3:
+// templateCode = "SMS_154775432";//用户注册
+// break;
+// case 4:
+// templateCode = "SMS_154775431";//修改密码
+// break;
+// }
+// String sData = aLiSendSms.sendSms(phone, "SMS_229715276", "{\"code\":\"" + authCode + "\"}");
+// JSONObject jsonObject = JSON.parseObject(sData);
+// String message = jsonObject.getString("Message");
+// if(!"OK".equals(message)){
+// return ResultUtil.error("");
+// }
+// System.out.println(sms);
+ SendSmsRequest request = new SendSmsRequest();
+ request.setDestAddress(phone);
+ request.setTemplateId("TPL202410290001");
+ Map<String, String> templateParams = new HashMap<>();
+ templateParams.put("code", authCode);
+ request.setTemplateParams(templateParams);
+ request.setCode("code");
+ request.setSpId("T8d5hdfg");
+ SMSUtil.sendSms(request);
+ redisTemplate.opsForValue().set(phone, authCode, 5, TimeUnit.MINUTES);//设置五分钟过期
return ResultUtil.success();
}
@@ -186,7 +246,7 @@
*/
@Override
public boolean checkCaptcha(String phone, String code) throws Exception {
- Object value = redisUtil.getValue(phone);
+ Object value = redisTemplate.opsForValue().get(phone);
if("1234".equals(code)){
return true;
}
@@ -332,28 +392,25 @@
@Override
public ResultUtil updateDriver(RegisteredWarpper registeredWarpper, Integer uid) throws Exception {
Driver driver = this.selectById(uid);
+ //调用中台接口校验实名信息
+ Boolean auth = UserUtil.idCardAuth(registeredWarpper.getName(), registeredWarpper.getIdCard());
+ if(!auth){
+ return ResultUtil.error("实名认证失败,请输入正确的姓名和身份证号码");
+ }
driver.setName(registeredWarpper.getName());
driver.setSex(registeredWarpper.getSex());
driver.setIdCard(registeredWarpper.getIdCard());
- String code = registeredWarpper.getPlaceOfEmployment();
- Company query = companyCityService.query(code);
- if(null == query){
- return ResultUtil.error("选择从业地暂未开通业务");
- }
- if(null != query){
- switch (query.getType()){
- case 1://平台
- driver.setCompanyId(query.getId());
- break;
- case 2://分公司
- driver.setCompanyId(query.getId());
- break;
- case 3://加盟商
- driver.setCompanyId(query.getSuperiorId());
- driver.setFranchiseeId(query.getId());
- break;
- }
+
+ driver.setArea(registeredWarpper.getArea());
+ driver.setAreaCode(registeredWarpper.getPlaceOfEmployment());
+ driver.setCity(registeredWarpper.getCity());
+ driver.setCityCode(registeredWarpper.getCityCode());
+ driver.setProvince(registeredWarpper.getProvince());
+ driver.setProvinceCode(registeredWarpper.getProvinceCode());
+ driver.setCompanyId(registeredWarpper.getCompanyId());
+ if(registeredWarpper.getCompanyId()==null){
+ return ResultUtil.error("请选择服务商");
}
driver.setHeadImgUrl(registeredWarpper.getHeadImgUrl());
driver.setIdCardImgUrl1(registeredWarpper.getIdCardImgUrl1());
@@ -383,7 +440,7 @@
boolean b = true;
for(String t : split){
for(DriverService driverService : list){
- if(driverService.getType() == Integer.valueOf(t)){
+ if(driverService.getType().equals(Integer.valueOf(t))){
b = false;
break;
}
@@ -434,14 +491,14 @@
*/
@Override
public Map<String, Object> queryPhone(String code) throws Exception {
- Company query = companyCityService.query(code);
Map<String, Object> map = new HashMap<>();
- if(null == query){
- map.put("phone", "");
- }else{
- Phone phone = phoneMapper.queryInfo(query.getId(), 2);
- map.put("phone", null != phone ? phone.getPhone() : "");
+ if(ToolUtil.isEmpty(code)){
+ map.put("phone","400-995-1700");
+ return map;
}
+ OpenCity openCity = openCityService.openCity1(code);
+ Phone phone = phoneMapper.queryInfo(openCity.getId(), 2, 2);
+ map.put("phone", null != phone ? phone.getPhone() : "");
return map;
}
@@ -456,38 +513,47 @@
@Override
public ResultUtil<LoginWarpper> driverLogin(String phone, String password) throws Exception {
Driver driver = driverMapper.queryByPhone(phone);
- if(null == driver){
+ if (null == driver) {
return ResultUtil.error("账号未注册");
}
- if(ToolUtil.isNotEmpty(driver.getIdCard()) && driver.getAuthState() == 1){
+ Company company = companyMapper.selectById(driver.getCompanyId());
+ //查询中台员工数据
+// List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(driver.getPhone(), company.getEnterCode());
+// if (null == userInfoByPhone || userInfoByPhone.size() == 0) {
+// return ResultUtil.error("账号未注册");
+// }
+
+ if (ToolUtil.isNotEmpty(driver.getIdCard()) && driver.getAuthState() == 1) {
return ResultUtil.error("账号正在审核中,请耐心等待");
}
- if(driver.getAuthState() == 3){
+ if (driver.getAuthState() == 3) {
return ResultUtil.error("账号已被冻结,请联系管理员");
}
- if(!driver.getPassword().equals(ShiroKit.md5(password, salt))){
+ if (!driver.getPassword().equals(ShiroKit.md5(password, salt))) {
return ResultUtil.error("密码错误");
}
-
- String value = redisUtil.getValue("DEVICE_" + driver.getId());
- if(ToolUtil.isNotEmpty(value)){
+
+ String value = (String) redisTemplate.opsForValue().get("DEVICE_" + driver.getId());
+ if (ToolUtil.isNotEmpty(value)) {
return ResultUtil.error("当前账户正在车载端登录");
}
-
+
//调用单点登录逻辑
this.singlePointLogin(driver.getId());
-
+
String token = this.getToken(driver, password);
LoginWarpper loginWarpper = new LoginWarpper();
loginWarpper.setId(driver.getId());
loginWarpper.setToken(token);
loginWarpper.setAppid(UUIDUtil.getRandomCode());
loginWarpper.setState(ToolUtil.isEmpty(driver.getIdCard()) ? 1 : 0);
+ TokenResult token1 = RongCloudUtil.getToken(driver.getId().toString(), driver.getName(), driver.getHeadImgUrl());
+ loginWarpper.setRongYunToken(token1.getToken());
//创建高德猎鹰的终端数据
- String tid = gdFalconUtil.createTerminal(phone);
- loginWarpper.setServerId(gdFalconUtil.getServerId());
- loginWarpper.setTerminalId(tid);
+// String tid = gdFalconUtil.createTerminal(phone);
+// loginWarpper.setServerId(gdFalconUtil.getServerId());
+// loginWarpper.setTerminalId(tid);
return ResultUtil.success(loginWarpper);
}
@@ -524,7 +590,7 @@
}else{
key = requestHeader;
}
- String value = redisUtil.getValue(key);
+ String value = (String) redisTemplate.opsForValue().get(key);
return null != value ? Integer.valueOf(value) : null;
}else{
return null;
@@ -556,6 +622,10 @@
driverWorkMapper.updateById(driverWork);
driver.setState(1);
+ // 更新车辆使用状态
+ carService.updateUseState(uid);
+
+
new Thread(new Runnable() {
@Override
public void run() {
@@ -572,6 +642,21 @@
return ResultUtil.error("车辆正在使用中");
}
}
+ //专车业务需要校验
+ if(0 == driver.getIsSynchronous() && (type.contains("1") || type.contains("3"))){
+ return ResultUtil.error("请先开通钱包");
+ }
+ //判断车辆是否正在使用中
+ Car car = carService.selectById(driver.getCarId());
+ if(car.getUseDriverId() != null && !car.getUseDriverId().equals(uid)){
+ return ResultUtil.error("当前绑定车辆正在使用中,请更换车辆");
+ }else if(car.getUseDriverId()==null){
+ car.setUseDriverId(uid);
+ carService.updateById(car);
+ }
+
+
+
driverWork = new DriverWork();
driverWork.setState(1);
driverWork.setDriverId(uid);
@@ -619,6 +704,9 @@
driverWorkMapper.updateById(driverWork);
driver.setState(1);
+ // 更新车辆使用状态
+ carService.updateUseState(uid);
+
new Thread(new Runnable() {
@Override
public void run() {
@@ -628,6 +716,18 @@
}
}).start();
}else{
+
+ //判断车辆是否正在使用中
+ Car car = carService.selectById(driver.getCarId());
+ if(car.getUseDriverId() != null && !car.getUseDriverId().equals(uid)){
+ return ResultUtil.error("当前绑定车辆正在使用中,请更换车辆");
+ }else if(car.getUseDriverId()==null){
+ car.setUseDriverId(uid);
+ carService.updateById(car);
+ }
+
+
+
driverWork = new DriverWork();
driverWork.setState(1);
driverWork.setDriverId(uid);
@@ -757,18 +857,24 @@
@Override
public ResultUtil updatePhone(String phone, String code, Integer uid) throws Exception {
Driver driver = driverMapper.queryByPhone(phone);
- if(null != driver){
+ if (null != driver) {
return ResultUtil.error("电话号码已被注册");
}
boolean b = this.checkCaptcha(phone, code);
- if(!b){
+ if (!b) {
return ResultUtil.error("验证码无效");
}
Driver driver1 = this.selectById(uid);
+ Company company = companyMapper.selectById(driver1.getCompanyId());
+ List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(driver1.getPhone(), company.getEnterCode());
+ if (null == userInfoByPhone || userInfoByPhone.size() == 0) {
+ return ResultUtil.error("账号未注册");
+ }
+
driver1.setAccount(phone);
driver1.setPhone(phone);
this.updateById(driver1);
-
+
smsrecordService.saveData(7, phone, code, "短信验证码【" + code + "】已发到您的手机,验证码将在5分钟后失效,请及时登录!");
return ResultUtil.success();
}
@@ -813,10 +919,23 @@
if(driver.getState() == 3){
return ResultUtil.error("还在服务中,不能更换");
}
-// boolean idle = carService.idle(carId);
-// if(!idle){
-// return ResultUtil.error("车辆已被绑定了");
-// }
+ // 修改是否别司机在使用
+ boolean idle = carService.useState(carId,uid);
+ if(idle){
+ return ResultUtil.error("当前车辆已经有其他司机在使用,请更换车辆");
+ }
+ List<Driver> drivers = this.selectList(new EntityWrapper<Driver>().eq("carId", carId)
+ .eq("authState", 2).ne("flag", 3));
+ drivers.forEach(d->{
+ d.setCarId(null);
+ });
+ if(drivers.size() > 0){
+ this.updateAllColumnBatchById(drivers);
+ }
+
+ Car car = carService.selectById(carId);
+ car.setUseDriverId(uid);
+ carService.updateById( car);
driver.setCarId(carId);
this.updateById(driver);
return ResultUtil.success();
@@ -830,47 +949,31 @@
* @throws Exception
*/
@Override
- public Map<String, Object> queryPhone(Integer uid) throws Exception {
+ public Map<String, Object> queryPhone(Integer uid, String code) throws Exception {
Driver driver = this.selectById(uid);
- Company company = companyMapper.selectById(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : (
- driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1));
+ OpenCity openCity = openCityService.openCity1(code);
+ Company company = companyMapper.selectById(driver.getCompanyId());
Map<String, Object> map = new HashMap<>();
if(company.getType() == 3){//加盟商
- Phone phone = phoneMapper.queryInfo(company.getId(), 2);
+ map.put("branch", "");
+ Phone phone = phoneMapper.queryInfo(openCity.getId(), 2, 2);
map.put("franchisee", null != phone ? phone.getPhone() : "");
- company = companyMapper.selectById(company.getSuperiorId());
- if(null != company){
- phone = phoneMapper.queryInfo(company.getId(), 2);
- map.put("branch", null != phone ? phone.getPhone() : "");
- }else{
- map.put("branch", "");
- }
- company = companyMapper.selectById(company.getSuperiorId());
- if(null != company){
- phone = phoneMapper.queryInfo(company.getId(), 2);
- map.put("platform", null != phone ? phone.getPhone() : "");
- }else{
- map.put("platform", "");
- }
+ phone = phoneMapper.queryInfo(openCity.getId(), 2, 1);
+ map.put("platform",null != phone ? phone.getPhone() : "");
return map;
}
if(company.getType() == 2){//分公司
map.put("franchisee", "");
- Phone phone = phoneMapper.queryInfo(company.getId(), 2);
+ Phone phone = phoneMapper.queryInfo(openCity.getId(), 2, 2);
map.put("branch", null != phone ? phone.getPhone() : "");
- company = companyMapper.selectById(company.getSuperiorId());
- if(null != company){
- phone = phoneMapper.queryInfo(company.getId(), 2);
- map.put("platform",null != phone ? phone.getPhone() : "");
- }else{
- map.put("platform", "");
- }
+ phone = phoneMapper.queryInfo(openCity.getId(), 2, 1);
+ map.put("platform",null != phone ? phone.getPhone() : "");
return map;
}
if(company.getType() == 1){//平台
map.put("franchisee", "");
map.put("branch", "");
- Phone phone = phoneMapper.queryInfo(company.getId(), 2);
+ Phone phone = phoneMapper.queryInfo(company.getId(), 2, 1);
map.put("platform", null != phone ? phone.getPhone() : "");
return map;
}
@@ -1187,7 +1290,7 @@
driverOrdersMapper.insert(query);
}
DriverWork driverWork = driverWorkMapper.queryNewWork(driver.getId(), 2, 1);
- if(null == driverWork){
+ if (null == driverWork) {
driverWork = new DriverWork();
driverWork.setStartTime(new Date());
driverWork.setDriverId(driver.getId());
@@ -1195,22 +1298,22 @@
driverWork.setType("2");
driverWorkMapper.insert(driverWork);
}
- if(driver.getState() == 1){
+ if (driver.getState() == 1) {
driver.setState(2);
driverMapper.updateById(driver);
}
-
-
+
+
//调用单点登录清除缓存数据
this.singlePointLogin(driver.getId());
-
+
//封装请求账号密码为shiro可验证的token
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(driver.getPhone(), jobNum.toCharArray());
String credentials = ShiroKit.md5(driver.getJobNumber(), salt);
ByteSource credentialsSalt = new Md5Hash(salt);
SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(
new ShiroUser(), credentials, credentialsSalt, "");
-
+
//校验用户账号密码
HashedCredentialsMatcher md5CredentialsMatcher = new HashedCredentialsMatcher();
md5CredentialsMatcher.setHashAlgorithmName(ShiroKit.hashAlgorithmName);
@@ -1218,20 +1321,20 @@
boolean passwordTrueFlag = md5CredentialsMatcher.doCredentialsMatch(
usernamePasswordToken, simpleAuthenticationInfo);
String s = JwtTokenUtil.generateToken(String.valueOf(driver.getId()));
- redisUtil.setStrValue(s.substring(s.length() - 32), String.valueOf(driver.getId()), 7 * 24 * 60 * 60);
- redisUtil.setStrValue(driver.getPhone(), s.substring(s.length() - 32));
- redisUtil.setStrValue("DRIVER_" + driver.getId(), s);
-
-
+ redisTemplate.opsForValue().set(s.substring(s.length() - 32), String.valueOf(driver.getId()), 7, TimeUnit.DAYS);
+ redisTemplate.opsForValue().set(driver.getPhone(), s.substring(s.length() - 32));
+ redisTemplate.opsForValue().set("dache:DRIVER_" + driver.getId(), s);
+
+
LoginWarpper loginWarpper = new LoginWarpper();
loginWarpper.setId(driver.getId());
loginWarpper.setToken(s);
loginWarpper.setAppid(UUIDUtil.getRandomCode());
-
+
//创建高德猎鹰的终端数据
- String tid = gdFalconUtil.createTerminal(driver.getPhone());
- loginWarpper.setServerId(gdFalconUtil.getServerId());
- loginWarpper.setTerminalId(tid);
+// String tid = gdFalconUtil.createTerminal(driver.getPhone());
+// loginWarpper.setServerId(gdFalconUtil.getServerId());
+// loginWarpper.setTerminalId(tid);
return ResultUtil.success(loginWarpper);
}
@@ -1285,7 +1388,7 @@
driverOrdersMapper.insert(query);
}
DriverWork driverWork = driverWorkMapper.queryNewWork(driver.getId(), 2, 1);
- if(null == driverWork){
+ if (null == driverWork) {
driverWork = new DriverWork();
driverWork.setStartTime(new Date());
driverWork.setDriverId(driver.getId());
@@ -1293,20 +1396,20 @@
driverWork.setType("2");
driverWorkMapper.insert(driverWork);
}
- if(driver.getState() == 1){
+ if (driver.getState() == 1) {
driver.setState(2);
driverMapper.updateById(driver);
}
-
+
this.singlePointLogin(driver.getId());//清除缓存实现单点登录
-
+
//封装请求账号密码为shiro可验证的token
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(driver.getPhone(), identification.toCharArray());
String credentials = ShiroKit.md5(driver.getIdCard(), salt);
ByteSource credentialsSalt = new Md5Hash(salt);
SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(
new ShiroUser(), credentials, credentialsSalt, "");
-
+
//校验用户账号密码
HashedCredentialsMatcher md5CredentialsMatcher = new HashedCredentialsMatcher();
md5CredentialsMatcher.setHashAlgorithmName(ShiroKit.hashAlgorithmName);
@@ -1314,20 +1417,20 @@
boolean passwordTrueFlag = md5CredentialsMatcher.doCredentialsMatch(
usernamePasswordToken, simpleAuthenticationInfo);
String s = JwtTokenUtil.generateToken(String.valueOf(driver.getId()));
- redisUtil.setStrValue(s.substring(s.length() - 32), String.valueOf(driver.getId()), 7 * 24 * 60 * 60);
- redisUtil.setStrValue(driver.getPhone(), s.substring(s.length() - 32));
- redisUtil.setStrValue("DRIVER_" + driver.getId(), s);
-
-
+ redisTemplate.opsForValue().set(s.substring(s.length() - 32), String.valueOf(driver.getId()), 7, TimeUnit.DAYS);
+ redisTemplate.opsForValue().set(driver.getPhone(), s.substring(s.length() - 32));
+ redisTemplate.opsForValue().set("dache:DRIVER_" + driver.getId(), s);
+
+
LoginWarpper loginWarpper = new LoginWarpper();
loginWarpper.setId(driver.getId());
loginWarpper.setToken(s);
loginWarpper.setAppid(UUIDUtil.getRandomCode());
-
+
//创建高德猎鹰的终端数据
- String tid = gdFalconUtil.createTerminal(driver.getPhone());
- loginWarpper.setServerId(gdFalconUtil.getServerId());
- loginWarpper.setTerminalId(tid);
+// String tid = gdFalconUtil.createTerminal(driver.getPhone());
+// loginWarpper.setServerId(gdFalconUtil.getServerId());
+// loginWarpper.setTerminalId(tid);
return ResultUtil.success(loginWarpper);
}
@@ -1371,7 +1474,7 @@
driverOrdersMapper.insert(query);
}
DriverWork driverWork = driverWorkMapper.queryNewWork(driver.getId(), 2, 1);
- if(null == driverWork){
+ if (null == driverWork) {
driverWork = new DriverWork();
driverWork.setStartTime(new Date());
driverWork.setDriverId(driver.getId());
@@ -1379,20 +1482,20 @@
driverWork.setType("2");
driverWorkMapper.insert(driverWork);
}
- if(driver.getState() == 1){
+ if (driver.getState() == 1) {
driver.setState(2);
driverMapper.updateById(driver);
}
-
+
this.singlePointLogin(driver.getId());//清除缓存实现单点登录
-
+
//封装请求账号密码为shiro可验证的token
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(driver.getPhone(), taxiAptitudeCard.toCharArray());
String credentials = ShiroKit.md5(driver.getTaxiAptitudeCard(), salt);
ByteSource credentialsSalt = new Md5Hash(salt);
SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(
new ShiroUser(), credentials, credentialsSalt, "");
-
+
//校验用户账号密码
HashedCredentialsMatcher md5CredentialsMatcher = new HashedCredentialsMatcher();
md5CredentialsMatcher.setHashAlgorithmName(ShiroKit.hashAlgorithmName);
@@ -1400,20 +1503,20 @@
boolean passwordTrueFlag = md5CredentialsMatcher.doCredentialsMatch(
usernamePasswordToken, simpleAuthenticationInfo);
String s = JwtTokenUtil.generateToken(String.valueOf(driver.getId()));
- redisUtil.setStrValue(s.substring(s.length() - 32), String.valueOf(driver.getId()), 7 * 24 * 60 * 60);
- redisUtil.setStrValue(driver.getPhone(), s.substring(s.length() - 32));
- redisUtil.setStrValue("DRIVER_" + driver.getId(), s);
-
-
+ redisTemplate.opsForValue().set(s.substring(s.length() - 32), String.valueOf(driver.getId()), 7, TimeUnit.DAYS);
+ redisTemplate.opsForValue().set(driver.getPhone(), s.substring(s.length() - 32));
+ redisTemplate.opsForValue().set("dache:DRIVER_" + driver.getId(), s);
+
+
LoginWarpper loginWarpper = new LoginWarpper();
loginWarpper.setId(driver.getId());
loginWarpper.setToken(s);
loginWarpper.setAppid(UUIDUtil.getRandomCode());
-
+
//创建高德猎鹰的终端数据
- String tid = gdFalconUtil.createTerminal(driver.getPhone());
- loginWarpper.setServerId(gdFalconUtil.getServerId());
- loginWarpper.setTerminalId(tid);
+// String tid = gdFalconUtil.createTerminal(driver.getPhone());
+// loginWarpper.setServerId(gdFalconUtil.getServerId());
+// loginWarpper.setTerminalId(tid);
return ResultUtil.success(loginWarpper);
}
@@ -1426,12 +1529,12 @@
public void taskOffWork() throws Exception {
List<Driver> drivers = driverMapper.selectList(new EntityWrapper<Driver>().eq("authState", 2).ne("state", 3));
Long now = Long.valueOf(System.currentTimeMillis());
- for(Driver driver : drivers){
- String value = redisUtil.getValue("DEVICE_" + driver.getId());
- if(ToolUtil.isNotEmpty(value) && now.compareTo(Long.valueOf(value) + (60 * 60 * 1000)) > 0){
+ for (Driver driver : drivers) {
+ String value = (String) redisTemplate.opsForValue().get("DEVICE_" + driver.getId());
+ if (ToolUtil.isNotEmpty(value) && now.compareTo(Long.valueOf(value) + (60 * 60 * 1000)) > 0) {
driver.setState(1);
driverMapper.updateById(driver);
- redisUtil.remove("DEVICE_" + driver.getId());
+ redisTemplate.delete("DEVICE_" + driver.getId());
}
}
}
@@ -1508,40 +1611,220 @@
public ResultUtil loginOut(Integer id) throws Exception {
//开始清除redis中无效的数据
Driver driver = driverMapper.selectById(id);
- String key = redisUtil.getValue(driver.getPhone());
- redisUtil.remove(key);//删除个人信息数据
- redisUtil.remove("DRIVER_" + driver.getPhone());//删除后台冻结相关缓存
- redisUtil.remove("DRIVER_" + id);//清除存储的token
- redisUtil.remove("DEVICE_" + id);//清除车载端登录的标识
+ String key = (String) redisTemplate.opsForValue().get(driver.getPhone());
+ redisTemplate.delete(key);//删除个人信息数据
+ redisTemplate.delete("dache:DRIVER_" + driver.getPhone());//删除后台冻结相关缓存
+ redisTemplate.delete("dache:DRIVER_" + id);//清除存储的token
+ redisTemplate.delete("dache:DEVICE_" + id);//清除车载端登录的标识
return ResultUtil.success();
}
+ @Override
+ public DriverIndexVo queryHomeDataFromDriver(Integer uid) {
+ DriverIndexVo driverIndexVo = new DriverIndexVo();
+ // 获取快车订单
+ List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().in("state", Arrays.asList(7, 8, 9)).eq("driverId", uid).like("insertTime", LocalDate.now().toString()));
+ // 跨城订单
+ List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().in("state", Arrays.asList(7, 8, 9)).eq("driverId", uid).like("insertTime", LocalDate.now().toString()));
+ // 出租车订单
+ List<OrderTaxi> orderTaxis = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().in("state", Arrays.asList(7, 8, 9)).eq("driverId", uid).like("insertTime", LocalDate.now().toString()));
+ driverIndexVo.setTodayOrderNum(orderPrivateCars.size() + orderCrossCities.size() + orderTaxis.size());
- /**
- * 获取编号
- * @return
- */
- public String getCode(){
- int count = driverMapper.getCount();
- String code = String.valueOf(1000001 + count);
- return "D" + code.substring(1);
+
+//
+// double sum1 = orderCrossCities.stream().mapToDouble(OrderCrossCity::getOrderMoney).sum();
+// double sum2 = orderTaxis.stream().filter(e->e.getOrderMoney()!=null).mapToDouble(OrderTaxi::getOrderMoney).sum();
+//
+
+ List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("objectId", uid).eq("userType", 2).eq("type", 2).like("insertTime", LocalDate.now().toString()));
+ double sum = incomes.stream().mapToDouble(Income::getMoney).sum();
+
+ driverIndexVo.setTodayOrderMoney(new BigDecimal(sum));
+
+
+ BigDecimal reduce = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().eq("promotionDriverId", uid).like("insertTime", LocalDate.now().toString())).stream().map(OrderPrivateCar::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal reduce1 = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().eq("promotionDriverId", uid).like("insertTime", LocalDate.now().toString())).stream().map(OrderCrossCity::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal reduce2 = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().eq("promotionDriverId", uid).like("insertTime", LocalDate.now().toString())).stream().map(OrderTaxi::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ driverIndexVo.setTodayPromotionMoney(reduce.add(reduce1).add(reduce2));
+ return driverIndexVo;
+ };
+
+
+
+ @Override
+ public DriverOrderDataVo queryOrderDataFromDriver(String time, Page<DriverOrderDataNextVo> driverOrderDataVoPage, Integer uid) {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM");
+ // 总的订单数
+ List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().ne("state", 10).eq("driverId", uid));
+ // 跨城订单
+ List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().ne("state", 10).eq("driverId", uid));
+ // 出租车订单
+ List<OrderTaxi> orderTaxis = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().ne("state", 10).eq("driverId", uid));
+ DriverOrderDataVo driverOrderDataVo = new DriverOrderDataVo();
+ driverOrderDataVo.setAllOrderNum(orderPrivateCars.size() + orderCrossCities.size() + orderTaxis.size());
+ long count = orderPrivateCars.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).count();
+ long count1 = orderCrossCities.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).count();
+ long count2 = orderTaxis.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).count();
+ driverOrderDataVo.setTodayOrderNum((int) (count+count1+count2));
+
+ Date date = new Date();
+ String month = simpleDateFormat1.format(date);
+ long count3 = orderPrivateCars.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).count();
+ long count4 = orderCrossCities.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).count();
+ long count5 = orderTaxis.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).count();
+ driverOrderDataVo.setMonthOrderNum((int) (count3+count4+count5));
+
+ String sTime=null;
+ String eTime=null;
+ if(ToolUtil.isNotEmpty( time)){
+ sTime=time.split(" - ")[0]+" 00:00:00";
+ eTime=time.split(" - ")[1]+" 23:59:59";
+ }
+ List<DriverOrderDataNextVo> driverOrderDataNextVoPage = driverServiceMapper.queryOrderDataFromDriver(sTime, eTime, driverOrderDataVoPage, uid);
+ driverOrderDataVoPage.setRecords(driverOrderDataNextVoPage);
+ driverOrderDataVo.setDriverOrderDataNextVos(driverOrderDataVoPage);
+ return driverOrderDataVo;
+ }
+
+
+
+ @Override
+ public DriverOrderMoneyDataVo queryOrderMoneyFromDriver(String time, Page<DriverOrderDataNextVo> driverOrderDataVoPage, Integer uid) {
+ DriverOrderMoneyDataVo driverOrderDataVo = new DriverOrderMoneyDataVo();
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM");
+// // 总的订单数
+// List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().in("state",Arrays.asList(8,9)).eq("driverId", uid));
+// // 跨城订单
+// List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().in("state",Arrays.asList(8,9)).eq("driverId", uid));
+// // 出租车订单
+// List<OrderTaxi> orderTaxis = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().in("state",Arrays.asList(8,9)).eq("driverId", uid));
+
+
+ List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("objectId", uid).eq("userType", 2).eq("type", 2));
+
+
+// double sum = orderPrivateCars.stream().mapToDouble(OrderPrivateCar::getOrderMoney).sum();
+// double sum1 = orderCrossCities.stream().mapToDouble(OrderCrossCity::getOrderMoney).sum();
+// double sum2 = orderTaxis.stream().mapToDouble(OrderTaxi::getOrderMoney).sum();
+ double sum4 = incomes.stream().mapToDouble(Income::getMoney).sum();
+ driverOrderDataVo.setAllOrderMoney(new BigDecimal(sum4));
+
+
+
+ double count = incomes.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).mapToDouble(Income::getMoney).sum();
+// double count1 = orderCrossCities.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).mapToDouble(OrderCrossCity::getOrderMoney).sum();
+// double count2 = orderTaxis.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).mapToDouble(OrderTaxi::getOrderMoney).sum();
+ driverOrderDataVo.setTodayOrderMoney(new BigDecimal(count));
+
+
+ Date date = new Date();
+ String month = simpleDateFormat1.format(date);
+ double count3 = incomes.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).mapToDouble(Income::getMoney).sum();
+// double count4 = orderCrossCities.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).mapToDouble(OrderCrossCity::getOrderMoney).sum();
+// double count5 = orderTaxis.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).mapToDouble(OrderTaxi::getOrderMoney).sum();
+ driverOrderDataVo.setMonthOrderMoney(new BigDecimal(count3));
+
+ String sTime=null;
+ String eTime=null;
+ if(ToolUtil.isNotEmpty( time)){
+ sTime=time.split(" - ")[0]+" 00:00:00";
+ eTime=time.split(" - ")[1]+" 23:59:59";
+ }
+ List<DriverOrderDataNextVo> driverOrderDataNextVoPage = driverServiceMapper.queryOrderMoneyDataFromDriver(sTime, eTime, driverOrderDataVoPage, uid);
+ List<DriverOrderDataNextVo> driverOrderDataNextVoPage1 = driverServiceMapper.queryOrderMoneyDataFromDriverAll(sTime, eTime, uid);
+ double sum3 = driverOrderDataNextVoPage1.stream().mapToDouble(DriverOrderDataNextVo::getOrderMoney).sum();
+ driverOrderDataVo.setSearchMoney(new BigDecimal(sum3));
+ driverOrderDataVoPage.setRecords(driverOrderDataNextVoPage);
+ driverOrderDataVo.setDriverOrderDataNextVos(driverOrderDataVoPage);
+ return driverOrderDataVo;
+ }
+ @Override
+ public DriverOrderPromotionDataVo queryOrderPromotionFromDriver(String time, Page<DriverOrderDataNextVo> driverOrderDataVoPage, Integer uid) {
+ DriverOrderPromotionDataVo driverOrderDataVo = new DriverOrderPromotionDataVo();
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM");
+ // 总的订单数
+ List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().in("state",Arrays.asList(8,9)).eq("promotionDriverId", uid).isNotNull("successTime"));
+ // 跨城订单
+ List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().in("state",Arrays.asList(8,9)).eq("promotionDriverId", uid).isNotNull("successTime"));
+ // 出租车订单
+ List<OrderTaxi> orderTaxis = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().in("state",Arrays.asList(8,9)).eq("promotionDriverId", uid).isNotNull("successTime"));
+
+
+ BigDecimal sum = orderPrivateCars.stream().map(OrderPrivateCar::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal sum1 = orderCrossCities.stream().map(OrderCrossCity::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal sum2 = orderTaxis.stream().map(OrderTaxi::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ driverOrderDataVo.setAllOrderMoney(sum.add(sum1).add(sum2));
+
+
+
+ BigDecimal count = orderPrivateCars.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).map(OrderPrivateCar::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal count1 = orderCrossCities.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).map(OrderCrossCity::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal count2 = orderTaxis.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).map(OrderTaxi::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ driverOrderDataVo.setTodayOrderMoney(count.add(count1).add(count2));
+
+
+ Date date = new Date();
+ String month = simpleDateFormat1.format(date);
+ BigDecimal count3 = orderPrivateCars.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).map(OrderPrivateCar::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal count4 = orderCrossCities.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).map(OrderCrossCity::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal count5 = orderTaxis.stream().filter(e -> simpleDateFormat1.format(e.getInsertTime()).equals(month)).map(OrderTaxi::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+ driverOrderDataVo.setMonthOrderMoney(count3.add(count4).add(count5));
+
+ String sTime=null;
+ String eTime=null;
+ if(ToolUtil.isNotEmpty( time)){
+ sTime=time.split(" - ")[0]+" 00:00:00";
+ eTime=time.split(" - ")[1]+" 23:59:59";
+ }
+ List<DriverOrderDataNextVo> driverOrderDataNextVoPage = driverServiceMapper.queryOrderPromotionFromDriver(sTime, eTime, driverOrderDataVoPage, uid);
+ List<DriverOrderDataNextVo> driverOrderDataNextVoPage1 =driverServiceMapper.queryOrderPromotionFromDriverAll(sTime, eTime, uid);
+ double sum3 = driverOrderDataNextVoPage1.stream().mapToDouble(DriverOrderDataNextVo::getOrderMoney).sum();
+ driverOrderDataVo.setSearchMoney(new BigDecimal(sum3));
+
+ driverOrderDataVoPage.setRecords(driverOrderDataNextVoPage);
+ driverOrderDataVo.setDriverOrderDataNextVos(driverOrderDataVoPage);
+ return driverOrderDataVo;
}
/**
+ * 单点登录
+ *
+ * @param id
+ */
+ private void singlePointLogin(Integer id) {
+ //开始验证当前账号是否在别处登录
+ String value = (String) redisTemplate.opsForValue().get("dache:DRIVER_" + id);
+ if (ToolUtil.isNotEmpty(value)) {//将另外设备上的强迫下线(如果是车载端不需要下线)
+ //开始清除redis中无效的数据
+ Driver driver = driverMapper.selectById(id);
+ String key = (String) redisTemplate.opsForValue().get("dache:DRIVER_" + driver.getPhone());
+ if(ToolUtil.isNotEmpty(key)){
+ redisTemplate.delete(key);//删除个人信息数据
+ }
+ redisTemplate.delete("dache:DRIVER_" + driver.getPhone());//删除后台冻结相关缓存
+ redisTemplate.delete("dache:DRIVER_" + id);//清除存储的token
+ }
+ }
+
+ /**
* 获取token
+ *
* @param driver
* @param password
* @return
*/
- private String getToken(Driver driver, String password){
+ private String getToken(Driver driver, String password) {
//封装请求账号密码为shiro可验证的token
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(driver.getPhone(), password.toCharArray());
String credentials = driver.getPassword();
ByteSource credentialsSalt = new Md5Hash(salt);
SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(
new ShiroUser(), credentials, credentialsSalt, "");
-
+
//校验用户账号密码
HashedCredentialsMatcher md5CredentialsMatcher = new HashedCredentialsMatcher();
md5CredentialsMatcher.setHashAlgorithmName(ShiroKit.hashAlgorithmName);
@@ -1549,30 +1832,21 @@
boolean passwordTrueFlag = md5CredentialsMatcher.doCredentialsMatch(
usernamePasswordToken, simpleAuthenticationInfo);
String s = JwtTokenUtil.generateToken(String.valueOf(driver.getId()));
- redisUtil.setStrValue(s.substring(s.length() - 32), String.valueOf(driver.getId()), 7 * 24 * 60 * 60);
- redisUtil.setStrValue("DRIVER_" + driver.getPhone(), s.substring(s.length() - 32));
- redisUtil.setStrValue("DRIVER_" + driver.getId(), s);
+ redisTemplate.opsForValue().set(s.substring(s.length() - 32), String.valueOf(driver.getId()), 7, TimeUnit.DAYS);
+ redisTemplate.opsForValue().set("dache:DRIVER_" + driver.getPhone(), s.substring(s.length() - 32));
+ redisTemplate.opsForValue().set("dache:DRIVER_" + driver.getId(), s);
return s;
}
-
-
-
-
+
/**
- * 单点登录
- * @param id
+ * 获取编号
+ *
+ * @return
*/
- private void singlePointLogin(Integer id){
- //开始验证当前账号是否在别处登录
- String value = redisUtil.getValue("DRIVER_" + id);
- if(ToolUtil.isNotEmpty(value)){//将另外设备上的强迫下线(如果是车载端不需要下线)
- //开始清除redis中无效的数据
- Driver driver = driverMapper.selectById(id);
- String key = redisUtil.getValue("DRIVER_" + driver.getPhone());
- redisUtil.remove(key);//删除个人信息数据
- redisUtil.remove("DRIVER_" + driver.getPhone());//删除后台冻结相关缓存
- redisUtil.remove("DRIVER_" + id);//清除存储的token
- }
+ public String getCode() {
+ int count = driverMapper.getCount();
+ String code = String.valueOf(1000001 + count);
+ return "D" + code.substring(1);
}
-
+
}
--
Gitblit v1.7.1