zhibing.pu
2024-04-28 a661e711cebd9f0b684dc73ab732b239812f076f
新增加功能
18个文件已修改
352 ■■■■ 已修改文件
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/DriverOnlineMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverOnlineMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverActivityOnline.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverOnline.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverOnlineService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverOnlineServiceImpl.java 212 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/resources/application-dev.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/WithdrawalController.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/WithdrawalMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/WithdrawalMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IWithdrawalService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
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);
}
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 &gt;= #{duration}
        from t_driver_online where DATE_FORMAT(`date`, '%Y-%m-%d') = #{day} and type = #{type} and duration &gt;= #{duration}
    </select>
</mapper>
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;
    }
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;
    }
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();
}
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() + "小时未接单,系统将强制更改您的状态为:下班");
            }
        }
    }
}
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);//完成状态
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();
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();
        }
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
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);
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();
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())){
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);
}
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>
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;
    /**
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")){