From a661e711cebd9f0b684dc73ab732b239812f076f Mon Sep 17 00:00:00 2001 From: zhibing.pu <393733352@qq.com> Date: 星期日, 28 四月 2024 09:23:08 +0800 Subject: [PATCH] 新增加功能 --- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 4 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java | 8 + UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java | 26 ++-- UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WithdrawalController.java | 22 +++ DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverActivityOnline.java | 15 ++ DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOnlineServiceImpl.java | 212 +++++++++++++++++++++++++---------- UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/WithdrawalMapper.xml | 6 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java | 4 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverOnlineMapper.xml | 4 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverOnlineService.java | 6 + UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IWithdrawalService.java | 2 ManagementIGOTravel/guns-admin/src/main/resources/application-dev.yml | 6 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverOnlineMapper.java | 4 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverOnline.java | 15 ++ UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 4 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/WithdrawalMapper.java | 2 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java | 8 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java | 4 18 files changed, 249 insertions(+), 103 deletions(-) diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java index e858a79..e4da94f 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java @@ -1252,18 +1252,18 @@ case 4: OrderLogistics orderLogistics = orderLogisticsService.selectById(map.get("incomeId").toString()); List<Income> incomes3 = incomeService.queryData(1, null, 2, orderLogistics.getId(), 4); - map1.put("travelMoney", orderLogistics != null ? orderLogistics.getTravelMoney() : 0);//行程费 + map1.put("travelMoney", orderLogistics != null ? orderLogistics.getOrderMoney() : 0);//行程费 map1.put("parkMoney", 0);//停车费 - map1.put("tipMoney", orderLogistics != null ? orderLogistics.getTipMoney() : 0);//小费 + map1.put("tipMoney", 0);//小费 map1.put("roadTollMoney", 0);//过路费 map1.put("rakeMoney", incomes3.size() > 0 ? incomes3.get(0).getMoney() : 0);//抽成 break; case 5: OrderLogistics orderLogistics1 = orderLogisticsService.selectById(map.get("incomeId").toString()); List<Income> incomes4 = incomeService.queryData(1, null, 2, orderLogistics1.getId(), 5); - map1.put("travelMoney", orderLogistics1 != null ? orderLogistics1.getTravelMoney() : 0);//行程费 + map1.put("travelMoney", orderLogistics1 != null ? orderLogistics1.getOrderMoney() : 0);//行程费 map1.put("parkMoney", 0);//停车费 - map1.put("tipMoney", orderLogistics1 != null ? orderLogistics1.getTipMoney() : 0);//小费 + map1.put("tipMoney", 0);//小费 map1.put("roadTollMoney", 0);//过路费 map1.put("rakeMoney", incomes4.size() > 0 ? incomes4.get(0).getMoney() : 0);//抽成 break; diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverOnlineMapper.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverOnlineMapper.java index a9fa7fc..3fc4b48 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverOnlineMapper.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverOnlineMapper.java @@ -15,7 +15,7 @@ * @param driverId * @return */ - DriverOnline query(@Param("driverId") Integer driverId, @Param("day") String day, @Param("assessment") Integer assessment); + DriverOnline query(@Param("driverId") Integer driverId, @Param("day") String day, @Param("type") Integer type, @Param("assessment") Integer assessment); /** @@ -31,5 +31,5 @@ - List<DriverOnline> queryList(@Param("day") String day, @Param("duration") Long duration); + List<DriverOnline> queryList(@Param("day") String day, @Param("type") Integer type, @Param("duration") Long duration); } diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverOnlineMapper.xml b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverOnlineMapper.xml index 5cff6bc..c4d4597 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverOnlineMapper.xml +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverOnlineMapper.xml @@ -19,7 +19,7 @@ `date` as `date`, duration as duration, assessment as assessment - from t_driver_online where driverId = #{driverId} and DATE_FORMAT(`date`, '%Y-%m-%d') = #{day} and assessment = #{assessment} + from t_driver_online where driverId = #{driverId} and DATE_FORMAT(`date`, '%Y-%m-%d') = #{day} and type = #{type} and assessment = #{assessment} </select> @@ -47,6 +47,6 @@ `date` as `date`, duration as duration, assessment as assessment - from t_driver_online where DATE_FORMAT(`date`, '%Y-%m-%d') = #{day} and duration >= #{duration} + from t_driver_online where DATE_FORMAT(`date`, '%Y-%m-%d') = #{day} and type = #{type} and duration >= #{duration} </select> </mapper> \ No newline at end of file diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverActivityOnline.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverActivityOnline.java index d641bca..19ad35c 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverActivityOnline.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverActivityOnline.java @@ -44,6 +44,11 @@ @TableField("money") private Double money; /** + * 自动下班时间 + */ + @TableField("offlineTime") + private Double offlineTime; + /** * 活动开始时间 */ @TableField("startTime") @@ -98,7 +103,15 @@ public void setMoney(Double money) { this.money = money; } - + + public Double getOfflineTime() { + return offlineTime; + } + + public void setOfflineTime(Double offlineTime) { + this.offlineTime = offlineTime; + } + public Date getStartTime() { return startTime; } diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverOnline.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverOnline.java index 87a9422..3d9dff7 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverOnline.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverOnline.java @@ -24,6 +24,11 @@ @TableField("driverId") private Integer driverId; /** + * 获取业务类型(1=专车,2=出租车,3=城际,4=小件物流) + */ + @TableField("type") + private Integer type; + /** * 在线日期 */ @TableField("date") @@ -55,7 +60,15 @@ public void setDriverId(Integer driverId) { this.driverId = driverId; } - + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + public Date getDate() { return date; } diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverOnlineService.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverOnlineService.java index ef66b3b..5756c30 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverOnlineService.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverOnlineService.java @@ -25,4 +25,10 @@ * @return */ Integer querySumTime(Integer driverId, Integer assessment, Date start, Date end); + + + /** + * 定时检测司机是否连续接单 + */ + void deductionDuration(); } diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOnlineServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOnlineServiceImpl.java index c2af891..9c60452 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOnlineServiceImpl.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOnlineServiceImpl.java @@ -3,22 +3,29 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; +import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; +import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; +import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; +import com.stylefeng.guns.modular.system.dao.DriverActivityHistoryMapper; +import com.stylefeng.guns.modular.system.dao.DriverActivityOnlineMapper; import com.stylefeng.guns.modular.system.dao.DriverOnlineMapper; -import com.stylefeng.guns.modular.system.model.Driver; -import com.stylefeng.guns.modular.system.model.DriverAssessment; -import com.stylefeng.guns.modular.system.model.DriverOnline; -import com.stylefeng.guns.modular.system.model.DriverWork; +import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.IDriverAssessmentService; import com.stylefeng.guns.modular.system.service.IDriverOnlineService; import com.stylefeng.guns.modular.system.service.IDriverService; import com.stylefeng.guns.modular.system.service.IDriverWorkService; +import com.stylefeng.guns.modular.system.util.PushUtil; import com.stylefeng.guns.modular.system.util.RedisUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; @Service public class DriverOnlineServiceImpl extends ServiceImpl<DriverOnlineMapper, DriverOnline> implements IDriverOnlineService { @@ -37,6 +44,24 @@ @Autowired private IDriverService driverService; + + @Resource + private DriverActivityOnlineMapper driverActivityOnlineMapper; + + @Resource + private DriverActivityHistoryMapper driverActivityHistoryMapper; + + @Autowired + private IOrderPrivateCarService orderPrivateCarService; + + @Autowired + private IOrderLogisticsService orderLogisticsService; + + @Autowired + private PushUtil pushUtil; + + + /** @@ -48,68 +73,74 @@ public void addDriverOnline(Integer driverId) throws Exception { DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driverId).eq("state", 1)); if(null == driverWork){//非上班状态不记录 - redisUtil.remove("ONLINE_" + driverId); + for (int i = 1; i < 5; i++) { + redisUtil.remove("ONLINE_" + i + "_" + driverId); + } return; } - - //查询数据及条件判断 - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DriverOnline query = driverOnlineMapper.query(driverId, sdf.format(new Date()), 0);//正常记录数据 - DriverOnline query1 = null;//考勤范围内的数据 - DriverAssessment driverAssessment = driverAssessmentService.selectOne(new EntityWrapper<DriverAssessment>() - .eq("companyId", driverService.selectById(driverId).getCompanyId())); - Date s = null; - Date e = null; - long now = System.currentTimeMillis(); - if(null != driverAssessment){//在考勤范围内记录数据 - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String[] split = driverAssessment.getAssessment().split(" - "); - s = sdf1.parse(sdf.format(new Date()) + " " + split[0]); - e = sdf1.parse(sdf.format(new Date()) + " " + split[1]); - if(now > s.getTime() && now <= e.getTime()){ - query1 = driverOnlineMapper.query(driverId, sdf.format(new Date()), 1); - } - } - - //开始修改数据 - if(query != null){ - String value = redisUtil.getValue("ONLINE_" + driverId); - if(ToolUtil.isEmpty(value)){ - redisUtil.setStrValue("ONLINE_" + driverId, String.valueOf(now / 1000));//存入秒 - return; - } - Long ss = (now / 1000) - Long.valueOf(value); - if(ss.longValue() >= 600){//间隔时间大于10分钟则为离线 - redisUtil.remove("ONLINE_" + driverId); - return; - } - - query.setDuration(query.getDuration() + ss); - driverOnlineMapper.updateById(query); - - //记录考勤范围内的数据 - if(null != s && null != e && now > s.getTime() && now <= e.getTime()){ - if(null != query1){ - query1.setDuration(query1.getDuration() + ss); - driverOnlineMapper.updateById(query1); - }else{ - query1 = new DriverOnline(); - query1.setDriverId(driverId); - query1.setDate(new Date()); - query1.setAssessment(1); - query1.setDuration(ss); - driverOnlineMapper.insert(query1); + String[] split1 = driverWork.getType().split(","); + for (String ty : split1) { + //查询数据及条件判断 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DriverOnline query = driverOnlineMapper.query(driverId, sdf.format(new Date()), Integer.valueOf(ty), 0);//正常记录数据 + DriverOnline query1 = null;//考勤范围内的数据 + DriverAssessment driverAssessment = driverAssessmentService.selectOne(new EntityWrapper<DriverAssessment>() + .eq("companyId", driverService.selectById(driverId).getCompanyId())); + Date s = null; + Date e = null; + long now = System.currentTimeMillis(); + if(null != driverAssessment){//在考勤范围内记录数据 + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String[] split = driverAssessment.getAssessment().split(" - "); + s = sdf1.parse(sdf.format(new Date()) + " " + split[0]); + e = sdf1.parse(sdf.format(new Date()) + " " + split[1]); + if(now > s.getTime() && now <= e.getTime()){ + query1 = driverOnlineMapper.query(driverId, sdf.format(new Date()), Integer.valueOf(ty), 1); } } - }else{ - DriverOnline driverOnline = new DriverOnline(); - driverOnline.setDriverId(driverId); - driverOnline.setDate(new Date()); - driverOnline.setAssessment(0); - driverOnline.setDuration(0L); - driverOnlineMapper.insert(driverOnline); + + //开始修改数据 + if(query != null){ + String value = redisUtil.getValue("ONLINE_" + ty + "_" + driverId); + if(ToolUtil.isEmpty(value)){ + redisUtil.setStrValue("ONLINE_" + ty + "_" + driverId, String.valueOf(now / 1000));//存入秒 + return; + } + Long ss = (now / 1000) - Long.valueOf(value); + if(ss.longValue() >= 600){//间隔时间大于10分钟则为离线 + redisUtil.remove("ONLINE_" + ty + "_" + driverId); + return; + } + + query.setDuration(query.getDuration() + ss); + driverOnlineMapper.updateById(query); + + //记录考勤范围内的数据 + if(null != s && null != e && now > s.getTime() && now <= e.getTime()){ + if(null != query1){ + query1.setDuration(query1.getDuration() + ss); + driverOnlineMapper.updateById(query1); + }else{ + query1 = new DriverOnline(); + query1.setDriverId(driverId); + query1.setType(Integer.valueOf(ty)); + query1.setDate(new Date()); + query1.setAssessment(1); + query1.setDuration(ss); + driverOnlineMapper.insert(query1); + } + } + }else{ + DriverOnline driverOnline = new DriverOnline(); + driverOnline.setDriverId(driverId); + driverOnline.setType(Integer.valueOf(ty)); + driverOnline.setDate(new Date()); + driverOnline.setAssessment(0); + driverOnline.setDuration(0L); + driverOnlineMapper.insert(driverOnline); + } + redisUtil.setStrValue("ONLINE_" + ty + "_" + driverId, String.valueOf(now / 1000));//存入秒 } - redisUtil.setStrValue("ONLINE_" + driverId, String.valueOf(now / 1000));//存入秒 } @@ -125,4 +156,63 @@ public Integer querySumTime(Integer driverId, Integer assessment, Date start, Date end) { return driverOnlineMapper.querySumTime(driverId, assessment, start, end); } + + + /** + * 定时检测司机是否连续接单 + */ + @Override + public void deductionDuration() { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String format = sdf.format(new Date()); + List<DriverActivityHistory> driverActivityHistories = driverActivityHistoryMapper.selectList(new EntityWrapper<DriverActivityHistory>().eq("DATE_FORMAT(date, '%Y-%m-%d')", format).eq("type", 3).eq("carryOut", 1)); + List<Integer> collect = driverActivityHistories.stream().map(DriverActivityHistory::getDriverId).collect(Collectors.toList()); + if(collect.size() == 0){ + return; + } + for (DriverActivityHistory driverActivityHistory : driverActivityHistories) { + DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driverActivityHistory.getDriverId()).eq("state", 1)); + if(null == driverWork){ + continue; + } + DriverActivityOnline driverActivityOnline = driverActivityOnlineMapper.selectById(driverActivityHistory.getActivityId()); + DriverOnline driverOnline = this.selectOne(new EntityWrapper<DriverOnline>().eq("DATE_FORMAT(date, '%Y-%m-%d')", format) + .eq("driverId", driverActivityHistory.getDriverId()).eq("type", driverActivityOnline.getType())); + if(null == driverOnline){ + continue; + } + Integer driverId = driverOnline.getDriverId(); + long m = Double.valueOf(driverActivityOnline.getOfflineTime() * 3600000L).longValue(); + + //找出最后一次接单的时间 + long mm = 0L; + OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectOne(new EntityWrapper<OrderPrivateCar>().eq("driverId", driverId).eq("isDelete", 1).ne("state", 10)); + Date snatchOrderTime = null; + if(null != orderPrivateCar){ + snatchOrderTime = orderPrivateCar.getSnatchOrderTime(); + mm = snatchOrderTime.getTime(); + } + OrderLogistics orderLogistics = orderLogisticsService.selectOne(new EntityWrapper<OrderLogistics>().eq("driverId", driverId).eq("isDelete", 1).ne("state", 10)); + if(null != orderLogistics && snatchOrderTime.before(orderLogistics.getSnatchOrderTime())){ + mm = orderLogistics.getSnatchOrderTime().getTime(); + } + + //超时不接单,直接将之前的在线时长清零 + //推送司机下班提醒 + if(mm >= m){ + this.deleteById(driverOnline.getId()); + driverWork.setState(2); + driverWork.setEndTime(new Date()); + driverWorkService.updateById(driverWork); + Driver driver = driverService.selectById(driverWork.getDriverId()); + driver.setState(1); + driverService.updateById(driver); + // TODO 待翻译 + pushUtil.pushOffline(driverOnline.getDriverId(), 2, "您已连续" + driverActivityOnline.getOfflineTime() + "小时未接单,系统将强制更改您的状态为:下班"); + } + + } + + + } } diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java index 69436f8..f471517 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java @@ -1699,7 +1699,7 @@ activityWarpper.setId(driverActivityOnline.getId()); StringBuffer sb = new StringBuffer(language == 1 ? "今日" : language == 2 ? "Today, stay online receiving orders of " : "Aujourd’hui, reste en ligne à recevoir des commandes "); - DriverOnline query = driverOnlineMapper.query(uid, sdf1.format(new Date()), 0); + DriverOnline query = driverOnlineMapper.query(uid, sdf1.format(new Date()), driverActivityOnline.getType(), 0); Integer hour = 0; if(null != query){ hour = Long.valueOf(query.getDuration() / 3600).intValue(); @@ -2262,7 +2262,7 @@ continue; } Long duration = Long.valueOf(dao.getOnline() * 3600); - List<DriverOnline> driverOnlines = driverOnlineMapper.queryList(sdf.format(new Date()), duration); + List<DriverOnline> driverOnlines = driverOnlineMapper.queryList(sdf.format(new Date()), dao.getType(), duration); for (DriverOnline driverOnline : driverOnlines) { if(dah.getDriverId().compareTo(driverOnline.getDriverId()) == 0){ dah.setCarryOut(2);//完成状态 diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java index 187a24e..9fe8e77 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java @@ -421,12 +421,12 @@ * @param id * @param type */ - public void pushOffline(Integer id, Integer type){ + public void pushOffline(Integer id, Integer type, Object object){ JSONObject msg = new JSONObject(); msg.put("code", 200); msg.put("msg", "SUCCESS"); msg.put("method", "OFFLINE"); - msg.put("data", new Object()); + msg.put("data", object); //调用推送 HttpHeaders headers = new HttpHeaders(); diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java index e551fa9..f22157b 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java @@ -1,5 +1,6 @@ package com.stylefeng.guns.modular.system.util; +import com.stylefeng.guns.modular.system.service.IDriverOnlineService; import com.stylefeng.guns.modular.system.service.IDriverService; import com.stylefeng.guns.modular.system.service.IOrderService; import com.stylefeng.guns.modular.system.service.ISettlementRecordService; @@ -33,6 +34,9 @@ private ISettlementRecordService settlementRecordService; public Set<Integer> driverIds = new HashSet<>();//存储需要提醒司机预约单的司机id + + @Autowired + private IDriverOnlineService driverOnlineService; public static void main(String[] args) { @@ -51,10 +55,10 @@ driverService.taskMinute(); //处于预约单 orderService.reservationOrder(); -// //处理车载端断电后的自动下班 -// driverService.taskOffWork(); //处理结束订单后30分钟解绑小号功能 orderService.taskMidAxbUnBindSend(); + //处理司机连续不接单的情况 + driverOnlineService.deductionDuration(); } catch (Exception e) { e.printStackTrace(); } diff --git a/ManagementIGOTravel/guns-admin/src/main/resources/application-dev.yml b/ManagementIGOTravel/guns-admin/src/main/resources/application-dev.yml index db02236..be09c3a 100644 --- a/ManagementIGOTravel/guns-admin/src/main/resources/application-dev.yml +++ b/ManagementIGOTravel/guns-admin/src/main/resources/application-dev.yml @@ -42,10 +42,10 @@ spring: datasource: - url: jdbc:mysql://127.0.0.1:3306/igotravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B0 + url: jdbc:mysql://127.0.0.1:3306/igotravel2.0?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B0 username: root - password: HjKbXilb9zajmXbl -# password: 123456 +# password: HjKbXilb9zajmXbl + password: 123456 db-name: igotravel #用来搜集数据库的所有表 filters: wall,mergeStat diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java index 4e6a6a2..945781e 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java @@ -260,21 +260,19 @@ for (Map<String, Object> map : list3) { map.put("name", name); } - List<TransactionDetails> transactionDetails = transactionDetailsService.selectList(new EntityWrapper<TransactionDetails>().eq("state", 1) - .eq("type", 1).eq("userType", 1).eq("userId", uid).eq("orderType", 3).like("remark", "%跨城订单取消退款%")); - List<Map<String, Object>> list4 = new ArrayList<>(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - for(TransactionDetails transactionDetails1 : transactionDetails){ - Map<String, Object> map = new HashMap<>(); - map.put("money", transactionDetails1.getMoney()); - map.put("time", DateUtil.conversionFormat(language, sdf.format(transactionDetails1.getInsertTime()))); - map.put("name", "跨城订单取消退款"); - map.put("insertTime", Double.valueOf(transactionDetails1.getInsertTime().getTime() / 1000).intValue()); - list4.add(map); - } +// List<TransactionDetails> transactionDetails = transactionDetailsService.selectList(new EntityWrapper<TransactionDetails>().eq("state", 1) +// .eq("type", 1).eq("userType", 1).eq("userId", uid).eq("orderType", 3).like("remark", "%跨城订单取消退款%")); +// List<Map<String, Object>> list4 = new ArrayList<>(); +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); +// for(TransactionDetails transactionDetails1 : transactionDetails){ +// Map<String, Object> map = new HashMap<>(); +// map.put("money", transactionDetails1.getMoney()); +// map.put("time", DateUtil.conversionFormat(language, sdf.format(transactionDetails1.getInsertTime()))); +// map.put("name", "跨城订单取消退款"); +// map.put("insertTime", Double.valueOf(transactionDetails1.getInsertTime().getTime() / 1000).intValue()); +// list4.add(map); +// } list.addAll(maps); -// list.addAll(list1); -// list.addAll(list2); list.addAll(list3); // list.addAll(list4); diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WithdrawalController.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WithdrawalController.java index 475974b..98e9dc4 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WithdrawalController.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WithdrawalController.java @@ -1,9 +1,12 @@ package com.stylefeng.guns.modular.api; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.stylefeng.guns.modular.system.model.Withdrawal; import com.stylefeng.guns.modular.system.service.IUserInfoService; import com.stylefeng.guns.modular.system.service.IWithdrawalService; import com.stylefeng.guns.modular.system.util.ResultUtil; +import com.stylefeng.guns.modular.system.warpper.WithdrawalVo; import com.stylefeng.guns.modular.system.warpper.WithdrawalWarpper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -18,6 +21,7 @@ import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 提现控制器 @@ -72,20 +76,30 @@ */ @ResponseBody @PostMapping("/api/withdrawal/queryWithdrawal") - @ApiOperation(value = "获取历史提现数据", tags = {"用户端-个人中心"}, notes = "") + @ApiOperation(value = "获取历史提现数据【2.0】", tags = {"用户端-个人中心"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), + @ApiImplicitParam(value = "提现状态(1=待处理,2=已提现,3=提现失败)", name = "state", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) - public ResultUtil<List<WithdrawalWarpper>> queryWithdrawal(Integer pageNum, Integer size, Integer language, HttpServletRequest request){ + public ResultUtil<WithdrawalVo> queryWithdrawal(Integer pageNum, Integer size, Integer state, Integer language, HttpServletRequest request){ try { Integer uid = userInfoService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } - List<Map<String, Object>> list = withdrawalService.queryWithdrawal(uid, pageNum, size, language); - return ResultUtil.success(WithdrawalWarpper.getWithdrawalWarpper(list)); + List<Map<String, Object>> list = withdrawalService.queryWithdrawal(uid, pageNum, size, state, language); + WithdrawalVo withdrawalVo = new WithdrawalVo(); + withdrawalVo.setList(WithdrawalWarpper.getWithdrawalWarpper(list)); + List<Withdrawal> withdrawals = withdrawalService.selectList(new EntityWrapper<Withdrawal>().eq("userId", uid).eq("userType", 1).ne("flag", 3)); + double withdrawn = withdrawals.stream().filter(s -> s.getState().compareTo(2) == 0).mapToDouble(Withdrawal::getMoney).sum(); + withdrawalVo.setWithdrawn(withdrawn); + double processing = withdrawals.stream().filter(s -> s.getState().compareTo(1) == 0).mapToDouble(Withdrawal::getMoney).sum(); + withdrawalVo.setProcessing(processing); + double fail = withdrawals.stream().filter(s -> s.getState().compareTo(3) == 0).mapToDouble(Withdrawal::getMoney).sum(); + withdrawalVo.setFail(fail); + return ResultUtil.success(withdrawalVo); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index 1c14bbf..e0b2fe9 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -1984,6 +1984,10 @@ query.setState(1); query.setRedPacketActivityId(id.getId()); userRedPacketRecordService.updateById(query); + + // todo 待翻译 + String content = 1 == language ? ("您收到一个额度为GHS " + money + " 的红包,请查收") : 2 == language ? "" : ""; + systemNoticeService.addSystemNotice(1, content, query.getUserId(), 1); UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId()); if(ToolUtil.isNotEmpty(userInfo.getEmail())){ diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/WithdrawalMapper.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/WithdrawalMapper.java index aa3f7ac..a4272cd 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/WithdrawalMapper.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/WithdrawalMapper.java @@ -17,6 +17,6 @@ * @param size * @return */ - List<Map<String, Object>> queryWithdrawal(@Param("uid") Integer uid, @Param("userType") Integer userType, + List<Map<String, Object>> queryWithdrawal(@Param("uid") Integer uid, @Param("userType") Integer userType, @Param("state") Integer status, @Param("pageNum") Integer pageNum, @Param("size") Integer size); } diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/WithdrawalMapper.xml b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/WithdrawalMapper.xml index dc80a30..a027e24 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/WithdrawalMapper.xml +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/WithdrawalMapper.xml @@ -30,6 +30,10 @@ code, remark as remark, state as state - from t_pub_withdrawal where flag != 3 and userType = #{userType} and userId = #{uid} order by insertTime desc limit #{pageNum}, #{size} + from t_pub_withdrawal where flag != 3 and userType = #{userType} and userId = #{uid} + <if test="null != state"> + and `state` = #{state} + </if> + order by insertTime desc limit #{pageNum}, #{size} </select> </mapper> \ No newline at end of file diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IWithdrawalService.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IWithdrawalService.java index 01e948f..dea8637 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IWithdrawalService.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IWithdrawalService.java @@ -25,7 +25,7 @@ * @return * @throws Exception */ - List<Map<String, Object>> queryWithdrawal(Integer uid, Integer pageNum, Integer size, Integer language) throws Exception; + List<Map<String, Object>> queryWithdrawal(Integer uid, Integer pageNum, Integer size, Integer state, Integer language) throws Exception; /** diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java index e99ce56..734d668 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java @@ -92,10 +92,10 @@ * @throws Exception */ @Override - public List<Map<String, Object>> queryWithdrawal(Integer uid, Integer pageNum, Integer size, Integer language) throws Exception { + public List<Map<String, Object>> queryWithdrawal(Integer uid, Integer pageNum, Integer size, Integer state, Integer language) throws Exception { pageNum = (pageNum - 1) * size; String name = language == 1 ? "手机号:" : language == 2 ? "Phone number:" : "Numéro de portable:"; - List<Map<String, Object>> list = withdrawalMapper.queryWithdrawal(uid, 1, pageNum, size); + List<Map<String, Object>> list = withdrawalMapper.queryWithdrawal(uid, 1, state, pageNum, size); for (Map<String, Object> map : list) { map.put("name", name + map.get("code")); if(null != map.get("insertTime")){ -- Gitblit v1.7.1