| | |
| | | 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; |
| | |
| | | * @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); |
| | | |
| | | |
| | | /** |
| | |
| | | |
| | | |
| | | |
| | | 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); |
| | | } |
| | |
| | | `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> |
| | | |
| | | |
| | |
| | | `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> |
| | |
| | | @TableField("money") |
| | | private Double money; |
| | | /** |
| | | * 自动下班时间 |
| | | */ |
| | | @TableField("offlineTime") |
| | | private Double offlineTime; |
| | | /** |
| | | * 活动开始时间 |
| | | */ |
| | | @TableField("startTime") |
| | |
| | | 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; |
| | | } |
| | |
| | | @TableField("driverId") |
| | | private Integer driverId; |
| | | /** |
| | | * 获取业务类型(1=专车,2=出租车,3=城际,4=小件物流) |
| | | */ |
| | | @TableField("type") |
| | | private Integer type; |
| | | /** |
| | | * 在线日期 |
| | | */ |
| | | @TableField("date") |
| | |
| | | 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; |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | Integer querySumTime(Integer driverId, Integer assessment, Date start, Date end); |
| | | |
| | | |
| | | /** |
| | | * 定时检测司机是否连续接单 |
| | | */ |
| | | void deductionDuration(); |
| | | } |
| | |
| | | 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 { |
| | |
| | | |
| | | @Autowired |
| | | private IDriverService driverService; |
| | | |
| | | @Resource |
| | | private DriverActivityOnlineMapper driverActivityOnlineMapper; |
| | | |
| | | @Resource |
| | | private DriverActivityHistoryMapper driverActivityHistoryMapper; |
| | | |
| | | @Autowired |
| | | private IOrderPrivateCarService orderPrivateCarService; |
| | | |
| | | @Autowired |
| | | private IOrderLogisticsService orderLogisticsService; |
| | | |
| | | @Autowired |
| | | private PushUtil pushUtil; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | 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));//存入秒 |
| | | } |
| | | |
| | | |
| | |
| | | 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() + "小时未接单,系统将强制更改您的状态为:下班"); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | 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(); |
| | |
| | | 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);//完成状态 |
| | |
| | | * @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(); |
| | |
| | | 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; |
| | |
| | | private ISettlementRecordService settlementRecordService; |
| | | |
| | | public Set<Integer> driverIds = new HashSet<>();//存储需要提醒司机预约单的司机id |
| | | |
| | | @Autowired |
| | | private IDriverOnlineService driverOnlineService; |
| | | |
| | | |
| | | public static void main(String[] args) { |
| | |
| | | driverService.taskMinute(); |
| | | //处于预约单 |
| | | orderService.reservationOrder(); |
| | | // //处理车载端断电后的自动下班 |
| | | // driverService.taskOffWork(); |
| | | //处理结束订单后30分钟解绑小号功能 |
| | | orderService.taskMidAxbUnBindSend(); |
| | | //处理司机连续不接单的情况 |
| | | driverOnlineService.deductionDuration(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | |
| | | 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 |
| | | |
| | |
| | | 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); |
| | | |
| | |
| | | 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; |
| | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 提现控制器 |
| | |
| | | */ |
| | | @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(); |
| | |
| | | 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())){ |
| | |
| | | * @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); |
| | | } |
| | |
| | | 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> |
| | |
| | | * @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; |
| | | |
| | | |
| | | /** |
| | |
| | | * @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")){ |