| | |
| | | </dependency> |
| | | <!--任务调度框架--> |
| | | <dependency> |
| | | <groupId>org.quartz-scheduler</groupId> |
| | | <artifactId>quartz</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.mchange</groupId> |
| | | <artifactId>c3p0</artifactId> |
| | | <version>0.9.5.5</version> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-quartz</artifactId> |
| | | </dependency> |
| | | |
| | | <!--Google ODRD--> |
| | |
| | | package com.stylefeng.guns; |
| | | |
| | | import com.stylefeng.guns.core.util.DateUtil; |
| | | import com.stylefeng.guns.modular.system.util.GDFalconUtil; |
| | | import com.stylefeng.guns.modular.system.util.quartz.QuartzUtil; |
| | | import com.stylefeng.guns.modular.system.util.quartz.SchedulerUtil; |
| | | import org.apache.http.client.HttpClient; |
| | | import org.apache.http.config.SocketConfig; |
| | | import org.apache.http.impl.client.HttpClientBuilder; |
| | | import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; |
| | | import org.quartz.SchedulerException; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.SpringApplication; |
| | | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| | | import org.springframework.boot.builder.SpringApplicationBuilder; |
| | | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; |
| | | import org.springframework.cloud.client.loadbalancer.LoadBalanced; |
| | | import org.springframework.cloud.netflix.eureka.EnableEurekaClient; |
| | | import org.springframework.context.annotation.Bean; |
| | |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileNotFoundException; |
| | | import java.io.InputStreamReader; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.TimeZone; |
| | | |
| | |
| | | public static void main(String[] args) { |
| | | SpringApplication.run(GunsApplication.class, args); |
| | | //启动定时任务调度器 |
| | | QuartzUtil.start(GunsApplication.class.getClassLoader().getResourceAsStream("quartz.properties")); |
| | | // QuartzUtil.start(GunsApplication.class.getClassLoader().getResourceAsStream("quartz.properties")); |
| | | logger.info("GunsApplication is success!"); |
| | | } |
| | | |
| | |
| | | import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread; |
| | | import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; |
| | | import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsSpreadService; |
| | | import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; |
| | | import com.stylefeng.guns.modular.system.dao.*; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | |
| | | import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil; |
| | | import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil; |
| | | import com.stylefeng.guns.modular.system.util.GoogleMap.ReverseGeocodeVo; |
| | | import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils; |
| | | import com.stylefeng.guns.modular.system.util.quartz.QuartzUtil; |
| | | import com.stylefeng.guns.modular.system.util.quartz.jobs.OrderTimeOutJob; |
| | | import com.stylefeng.guns.modular.taxi.model.OrderTaxi; |
| | | import org.apache.shiro.util.StringUtils; |
| | | import org.jsoup.Jsoup; |
| | | import org.jsoup.nodes.Document; |
| | | import org.jsoup.nodes.Element; |
| | | import org.jsoup.select.Elements; |
| | | import org.quartz.JobDataMap; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.quartz.SchedulerException; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileOutputStream; |
| | | import java.io.FileWriter; |
| | | import java.math.BigDecimal; |
| | | import java.math.MathContext; |
| | | import java.math.RoundingMode; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | |
| | | @Service |
| | | public class OrderLogisticsServiceImpl extends ServiceImpl<OrderLogisticsMapper, OrderLogistics> implements IOrderLogisticsService { |
| | | |
| | | Logger log = LoggerFactory.getLogger(this.getClass()); |
| | | |
| | | @Resource |
| | | private OrderLogisticsMapper orderLogisticsMapper; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private IOrderPositionService orderPositionService; |
| | | |
| | | @Resource |
| | | private QuartzUtil quartzUtil; |
| | | |
| | | |
| | | |
| | |
| | | jobDataMap.put("timeOut", timeOut); |
| | | jobDataMap.put("driverTimeout", driverTimeout); |
| | | jobDataMap.put("describe", language == 1 ? "您已超时" + driverTimeout + "分钟,用户可免费取消订单" : language == 2 ? "Reminder You are overdue for " + driverTimeout + " minutes The subscriber could cancel the order for free Confirm" : "Rappel Vous êtes en retard de " + driverTimeout + " minutes L’abonné peut annuler la commande gratuitement Confirmer"); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("1_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap) |
| | | , new Date(timeOut), timeOut, 0); |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("1_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap) |
| | | // , new Date(timeOut), timeOut, 0); |
| | | |
| | | try { |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class,"1_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap |
| | | , new Date(timeOut), timeOut, 0); |
| | | } catch (SchedulerException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | |
| | | |
| | | //超时循环提醒 |
| | | jobDataMap = new JobDataMap(); |
| | |
| | | jobDataMap.put("timeOut", orderLogistics.getEstimateArriveTime().getTime()); |
| | | jobDataMap.put("driverTimeout", driverTimeout); |
| | | jobDataMap.put("describe", ""); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("3_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap) |
| | | , orderLogistics.getEstimateArriveTime(), reminderRules.getCar() * 60000, -1); |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("3_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap) |
| | | // , orderLogistics.getEstimateArriveTime(), reminderRules.getCar() * 60000, -1); |
| | | |
| | | try { |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class,"3_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap |
| | | , orderLogistics.getEstimateArriveTime(), reminderRules.getCar() * 60000, -1); |
| | | } catch (SchedulerException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | @Resource |
| | | private IOrderCancelService orderCancelService; |
| | | |
| | | @Resource |
| | | private QuartzUtil quartzUtil; |
| | | |
| | | |
| | | |
| | |
| | | jobDataMap.put("timeOut", timeOut); |
| | | jobDataMap.put("driverTimeout", driverTimeout); |
| | | jobDataMap.put("describe", language == 1 ? "您已超时" + driverTimeout + "分钟,用户可免费取消订单" : language == 2 ? "Reminder You are overdue for " + driverTimeout + " minutes The subscriber could cancel the order for free Confirm" : "Rappel Vous êtes en retard de " + driverTimeout + " minutes L’abonné peut annuler la commande gratuitement Confirmer"); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // , new Date(timeOut), timeOut, 0); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class,"1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap |
| | | , new Date(timeOut), timeOut, 0); |
| | | |
| | | //超时循环提醒 |
| | |
| | | jobDataMap.put("timeOut", orderPrivateCar.getEstimateArriveTime().getTime()); |
| | | jobDataMap.put("driverTimeout", 0); |
| | | jobDataMap.put("describe", ""); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("3_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("3_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // , orderPrivateCar.getEstimateArriveTime(), reminderRules.getCar() * 60000, -1); |
| | | |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class,"3_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap |
| | | , orderPrivateCar.getEstimateArriveTime(), reminderRules.getCar() * 60000, -1); |
| | | }else{ |
| | | //超时时间 |
| | |
| | | jobDataMap.put("timeOut", timeOut); |
| | | jobDataMap.put("driverTimeout", driverTimeout); |
| | | jobDataMap.put("describe", language == 1 ? "您已超时" + driverTimeout + "分钟,用户可免费取消订单" : language == 2 ? "Reminder You are overdue for " + driverTimeout + " minutes The subscriber could cancel the order for free Confirm" : "Rappel Vous êtes en retard de " + driverTimeout + " minutes L’abonné peut annuler la commande gratuitement Confirmer"); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // , new Date(timeOut), timeOut, 0); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class,"1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap |
| | | , new Date(timeOut), timeOut, 0); |
| | | |
| | | |
| | | UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId()); |
| | | |
| | |
| | | jobDataMap.put("describe", language == 1 ? "您将于" + sdf.format(orderPrivateCar.getTravelTime()) + "去接" + (ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()) + ",请准时!" : |
| | | language == 2 ? "You are going to pick up " + (ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()) + " at " + sdf.format(orderPrivateCar.getTravelTime()) + ", please be on time. " : |
| | | "Vous allez chercher " + (ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()) + " à " + sdf.format(orderPrivateCar.getTravelTime()) + ", s’il vous plaît soyez à l’heure."); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("2_1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("2_1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // , new Date(travelTime), travelTime, 0); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class,"2_1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap |
| | | , new Date(travelTime), travelTime, 0); |
| | | |
| | | //预约单出发循环提醒 |
| | |
| | | jobDataMap.put("describe", language == 1 ? "您将于" + sdf.format(orderPrivateCar.getTravelTime()) + "去接" + (ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()) + ",请准时!" : |
| | | language == 2 ? "You are going to pick up " + (ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()) + " at " + sdf.format(orderPrivateCar.getTravelTime()) + ", please be on time. " : |
| | | "Vous allez chercher " + (ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()) + " à " + sdf.format(orderPrivateCar.getTravelTime()) + ", s’il vous plaît soyez à l’heure."); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("2_2_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("2_2_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // , new Date(travelTime + reminderRules.getReserveNext() * 60000), reminderRules.getReserveNext() * 60000, -1); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class,"2_2_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap |
| | | , new Date(travelTime + reminderRules.getReserveNext() * 60000), reminderRules.getReserveNext() * 60000, -1); |
| | | |
| | | //超时循环提醒 |
| | |
| | | jobDataMap.put("timeOut", orderPrivateCar.getTravelTime().getTime()); |
| | | jobDataMap.put("driverTimeout", 0); |
| | | jobDataMap.put("describe", ""); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("3_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("3_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // , orderPrivateCar.getTravelTime(), reminderRules.getCar() * 60000, -1); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class,"3_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap |
| | | , orderPrivateCar.getTravelTime(), reminderRules.getCar() * 60000, -1); |
| | | } |
| | | } |
| | |
| | | * 使用google获取司机的最新位置信息 |
| | | */ |
| | | void getDriverNowPosition(); |
| | | |
| | | /** |
| | | * 结束google订单状态 |
| | | */ |
| | | void overGoogleOrder(); |
| | | } |
| | |
| | | |
| | | @Autowired |
| | | private IOrderPositionService orderPositionService; |
| | | |
| | | @Autowired |
| | | private ICarService carService; |
| | | |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 结束google订单状态 |
| | | */ |
| | | @Override |
| | | public void overGoogleOrder() { |
| | | List<OrderPrivateCar> privateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().isNotNull("tripId") |
| | | .eq("isover", 0).in("state", Arrays.asList(7, 8, 9, 10)).eq("isDelete", 1)); |
| | | for (OrderPrivateCar privateCar : privateCars) { |
| | | Integer state = privateCar.getState(); |
| | | String tripId = privateCar.getTripId(); |
| | | String trip = fleetEngineUtil.getTrip(tripId); |
| | | if(ToolUtil.isNotEmpty(trip)){ |
| | | JSONObject jsonObject = JSON.parseObject(trip); |
| | | String tripStatus = jsonObject.getString("tripStatus"); |
| | | Car car = carService.selectById(privateCar.getCarId()); |
| | | if(Arrays.asList(10, 12).contains(state) && !"CANCELED".equals(tripStatus)){ |
| | | //修改行程信息 |
| | | boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); |
| | | if(!updateTrip){ |
| | | for (int i = 0; i < 5; i++) { |
| | | updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); |
| | | if(updateTrip){ |
| | | privateCar.setIsover(1); |
| | | orderPrivateCarService.updateById(privateCar); |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(3000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | }else{ |
| | | privateCar.setIsover(1); |
| | | orderPrivateCarService.updateById(privateCar); |
| | | } |
| | | } |
| | | if(Arrays.asList(6, 7, 8, 9).contains(state) && !"COMPLETE".equals(tripStatus)){ |
| | | //修改行程信息 |
| | | boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); |
| | | if(!updateTrip){ |
| | | for (int i = 0; i < 5; i++) { |
| | | updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); |
| | | if(updateTrip){ |
| | | privateCar.setIsover(1); |
| | | orderPrivateCarService.updateById(privateCar); |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(3000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | }else{ |
| | | privateCar.setIsover(1); |
| | | orderPrivateCarService.updateById(privateCar); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | List<OrderLogistics> orderLogisticsList = orderLogisticsService.selectList(new EntityWrapper<OrderLogistics>().isNotNull("tripId") |
| | | .eq("isover", 0).in("state", Arrays.asList(7, 8, 9, 10)).eq("isDelete", 1)); |
| | | for (OrderLogistics orderLogistics : orderLogisticsList) { |
| | | Integer state = orderLogistics.getState(); |
| | | String tripId = orderLogistics.getTripId(); |
| | | String trip = fleetEngineUtil.getTrip(tripId); |
| | | if(ToolUtil.isNotEmpty(trip)){ |
| | | JSONObject jsonObject = JSON.parseObject(trip); |
| | | String tripStatus = jsonObject.getString("tripStatus"); |
| | | Car car = carService.selectById(orderLogistics.getCarId()); |
| | | if(Arrays.asList(10, 12).contains(state) && !"CANCELED".equals(tripStatus)){ |
| | | //修改行程信息 |
| | | boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); |
| | | if(!updateTrip){ |
| | | for (int i = 0; i < 5; i++) { |
| | | updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); |
| | | if(updateTrip){ |
| | | orderLogistics.setIsover(1); |
| | | orderLogisticsService.updateById(orderLogistics); |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(3000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | }else{ |
| | | orderLogistics.setIsover(1); |
| | | orderLogisticsService.updateById(orderLogistics); |
| | | } |
| | | } |
| | | if(Arrays.asList(6, 7, 8, 9).contains(state) && !"COMPLETE".equals(tripStatus)){ |
| | | //修改行程信息 |
| | | boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); |
| | | if(!updateTrip){ |
| | | for (int i = 0; i < 5; i++) { |
| | | updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); |
| | | if(updateTrip){ |
| | | orderLogistics.setIsover(1); |
| | | orderLogisticsService.updateById(orderLogistics); |
| | | break; |
| | | } |
| | | try { |
| | | Thread.sleep(3000L); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | }else{ |
| | | orderLogistics.setIsover(1); |
| | | orderLogisticsService.updateById(orderLogistics); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; |
| | | import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; |
| | | import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; |
| | | import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsSpreadService; |
| | | import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; |
| | | import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; |
| | | import com.stylefeng.guns.modular.specialTrain.server.impl.OrderPrivateCarServiceImpl; |
| | | import com.stylefeng.guns.modular.system.dao.*; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | |
| | | |
| | | @Resource |
| | | private CarModelMapper carModelMapper; |
| | | |
| | | @Resource |
| | | private QuartzUtil quartzUtil; |
| | | |
| | | |
| | | |
| | |
| | | |
| | | |
| | | //删除定时任务 |
| | | QuartzUtil.deleteQuartzTask("1_" + orderPrivateCar.getId() + "_1","ORDER_TIME_OUT"); |
| | | QuartzUtil.deleteQuartzTask("2_1_" + orderPrivateCar.getId() + "_1","ORDER_TIME_OUT"); |
| | | QuartzUtil.deleteQuartzTask("2_2_" + orderPrivateCar.getId() + "_1","ORDER_TIME_OUT"); |
| | | QuartzUtil.deleteQuartzTask("3_" + orderPrivateCar.getId() + "_1","ORDER_TIME_OUT"); |
| | | quartzUtil.deleteQuartzTask("1_" + orderPrivateCar.getId() + "_1","ORDER_TIME_OUT"); |
| | | quartzUtil.deleteQuartzTask("2_1_" + orderPrivateCar.getId() + "_1","ORDER_TIME_OUT"); |
| | | quartzUtil.deleteQuartzTask("2_2_" + orderPrivateCar.getId() + "_1","ORDER_TIME_OUT"); |
| | | quartzUtil.deleteQuartzTask("3_" + orderPrivateCar.getId() + "_1","ORDER_TIME_OUT"); |
| | | |
| | | /** |
| | | * 超时用户取消不收费的提醒 |
| | |
| | | jobDataMap.put("timeOut", timeOut); |
| | | jobDataMap.put("driverTimeout", driverTimeout); |
| | | jobDataMap.put("describe", language1 == 1 ? "您已超时" + driverTimeout + "分钟,用户可免费取消订单" : language1 == 2 ? "Reminder You are overdue for " + driverTimeout + " minutes The subscriber could cancel the order for free Confirm" : "Rappel Vous êtes en retard de " + driverTimeout + " minutes L’abonné peut annuler la commande gratuitement Confirmer"); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // , new Date(timeOut), timeOut, 0); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class, "1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap |
| | | , new Date(timeOut), timeOut, 0); |
| | | |
| | | //超时循环提醒 |
| | |
| | | jobDataMap.put("timeOut", orderPrivateCar.getEstimateArriveTime().getTime()); |
| | | jobDataMap.put("driverTimeout", 0); |
| | | jobDataMap.put("describe", ""); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("3_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("3_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // , orderPrivateCar.getEstimateArriveTime(), reminderRules.getCar() * 60000, -1); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class, "3_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap |
| | | , orderPrivateCar.getEstimateArriveTime(), reminderRules.getCar() * 60000, -1); |
| | | }else{ |
| | | //超时时间 |
| | |
| | | jobDataMap.put("timeOut", timeOut); |
| | | jobDataMap.put("driverTimeout", driverTimeout); |
| | | jobDataMap.put("describe", language1 == 1 ? "您已超时" + driverTimeout + "分钟,用户可免费取消订单" : language1 == 2 ? "Reminder You are overdue for " + driverTimeout + " minutes The subscriber could cancel the order for free Confirm" : "Rappel Vous êtes en retard de " + driverTimeout + " minutes L’abonné peut annuler la commande gratuitement Confirmer"); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // , new Date(timeOut), timeOut, 0); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class, "1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap |
| | | , new Date(timeOut), timeOut, 0); |
| | | |
| | | |
| | |
| | | jobDataMap.put("describe", language1 == 1 ? "您将于" + sdf.format(orderPrivateCar.getTravelTime()) + "去接" + (ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()) + ",请准时!" : |
| | | language1 == 2 ? "You are going to pick up " + (ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()) + " at " + sdf.format(orderPrivateCar.getTravelTime()) + ", please be on time. " : |
| | | "Vous allez chercher " + (ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()) + " à " + sdf.format(orderPrivateCar.getTravelTime()) + ", s’il vous plaît soyez à l’heure."); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("2_1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("2_1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // , new Date(travelTime), travelTime, 0); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class, "2_1_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap |
| | | , new Date(travelTime), travelTime, 0); |
| | | |
| | | //预约单出发循环提醒 |
| | |
| | | jobDataMap.put("describe", language1 == 1 ? "您将于" + sdf.format(orderPrivateCar.getTravelTime()) + "去接" + (ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()) + ",请准时!" : |
| | | language1 == 2 ? "You are going to pick up " + (ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()) + " at " + sdf.format(orderPrivateCar.getTravelTime()) + ", please be on time. " : |
| | | "Vous allez chercher " + (ToolUtil.isEmpty(userInfo.getFirstName()) ? userInfo.getNickName() : userInfo.getFirstName() + " " + userInfo.getLastName()) + " à " + sdf.format(orderPrivateCar.getTravelTime()) + ", s’il vous plaît soyez à l’heure."); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("2_2_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("2_2_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // , new Date(travelTime + reminderRules.getReserveNext() * 60000), reminderRules.getReserveNext() * 60000, -1); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class, "2_2_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap |
| | | , new Date(travelTime + reminderRules.getReserveNext() * 60000), reminderRules.getReserveNext() * 60000, -1); |
| | | |
| | | //超时循环提醒 |
| | |
| | | jobDataMap.put("timeOut", orderPrivateCar.getTravelTime().getTime()); |
| | | jobDataMap.put("driverTimeout", 0); |
| | | jobDataMap.put("describe", ""); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("3_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("3_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap) |
| | | // , orderPrivateCar.getTravelTime(), reminderRules.getCar() * 60000, -1); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class, "3_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap |
| | | , orderPrivateCar.getTravelTime(), reminderRules.getCar() * 60000, -1); |
| | | } |
| | | } |
| | |
| | | |
| | | |
| | | //删除定时任务 |
| | | QuartzUtil.deleteQuartzTask("1_" + orderLogistics.getId() + "_4","ORDER_TIME_OUT"); |
| | | QuartzUtil.deleteQuartzTask("2_1_" + orderLogistics.getId() + "_4","ORDER_TIME_OUT"); |
| | | QuartzUtil.deleteQuartzTask("2_2_" + orderLogistics.getId() + "_4","ORDER_TIME_OUT"); |
| | | QuartzUtil.deleteQuartzTask("3_" + orderLogistics.getId() + "_4","ORDER_TIME_OUT"); |
| | | quartzUtil.deleteQuartzTask("1_" + orderLogistics.getId() + "_4","ORDER_TIME_OUT"); |
| | | quartzUtil.deleteQuartzTask("2_1_" + orderLogistics.getId() + "_4","ORDER_TIME_OUT"); |
| | | quartzUtil.deleteQuartzTask("2_2_" + orderLogistics.getId() + "_4","ORDER_TIME_OUT"); |
| | | quartzUtil.deleteQuartzTask("3_" + orderLogistics.getId() + "_4","ORDER_TIME_OUT"); |
| | | |
| | | /** |
| | | * 超时用户取消不收费的提醒 |
| | |
| | | jobDataMap.put("timeOut", timeOut); |
| | | jobDataMap.put("driverTimeout", driverTimeout); |
| | | jobDataMap.put("describe", language1 == 1 ? "您已超时" + driverTimeout + "分钟,用户可免费取消订单" : language1 == 2 ? "Reminder You are overdue for " + driverTimeout + " minutes The subscriber could cancel the order for free Confirm" : "Rappel Vous êtes en retard de " + driverTimeout + " minutes L’abonné peut annuler la commande gratuitement Confirmer"); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("1_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("1_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap) |
| | | // , new Date(timeOut), timeOut, 0); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class, "1_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap |
| | | , new Date(timeOut), timeOut, 0); |
| | | |
| | | //超时循环提醒 |
| | |
| | | jobDataMap.put("timeOut", orderLogistics.getEstimateArriveTime().getTime()); |
| | | jobDataMap.put("driverTimeout", driverTimeout); |
| | | jobDataMap.put("describe", ""); |
| | | QuartzUtil.addSimpleQuartzTask( |
| | | new OrderTimeOutJob().buildQuartzJob("3_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap) |
| | | // QuartzUtil.addSimpleQuartzTask( |
| | | // new OrderTimeOutJob().buildQuartzJob("3_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap) |
| | | // , orderLogistics.getEstimateArriveTime(), reminderRules.getCar() * 60000, -1); |
| | | quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class, "3_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap |
| | | , orderLogistics.getEstimateArriveTime(), reminderRules.getCar() * 60000, -1); |
| | | } |
| | | |
| | |
| | | orderService.taskMidAxbUnBindSend(); |
| | | //处理司机连续不接单的情况 |
| | | driverOnlineService.deductionDuration1(); |
| | | //处理google订单状态 |
| | | orderService.overGoogleOrder(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | package com.stylefeng.guns.modular.system.util.quartz; |
| | | |
| | | import com.stylefeng.guns.modular.system.util.quartz.model.QuartzEnum; |
| | | import com.stylefeng.guns.modular.system.util.quartz.model.QuartzJob; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.quartz.*; |
| | | import org.quartz.impl.matchers.GroupMatcher; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.io.InputStream; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Set; |
| | |
| | | * @Date 2024/3/20 11:12 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class QuartzUtil { |
| | | /** |
| | | * 构建调度器 |
| | | */ |
| | | public static Scheduler scheduler; |
| | | |
| | | |
| | | /** |
| | | * 启动调度器 |
| | | * @param propertiesStream 配置文件流 |
| | | * @return |
| | | */ |
| | | public static void start(InputStream propertiesStream){ |
| | | if(null == scheduler){ |
| | | scheduler = SchedulerUtil.getScheduler(propertiesStream); |
| | | } |
| | | try { |
| | | scheduler.start(); |
| | | log.info(QuartzEnum.SCHEDULER_START_SUCCESS.getValue()); |
| | | } catch (SchedulerException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | @Autowired |
| | | private Scheduler scheduler; |
| | | |
| | | |
| | | |
| | |
| | | |
| | | /** |
| | | * 添加普通定时任务 |
| | | * @param quartzJob 任务类 |
| | | * @param startTime 任务开始执行时间,为空则立即执行 |
| | | * @param intervalInMilliseconds 执行间隔毫秒数 |
| | | * @param repeatCount 重复执行次数,-1表示永远执行 |
| | | * @throws SchedulerException |
| | | */ |
| | | public static void addSimpleQuartzTask(QuartzJob quartzJob, Date startTime, long intervalInMilliseconds, int repeatCount) throws SchedulerException { |
| | | if(null == scheduler){ |
| | | log.error("请先加载任务调取器"); |
| | | public void addSimpleQuartzTask(Class<? extends Job> clazz, String job_name, String group_name, JobDataMap jobDataMap, Date startTime, long intervalInMilliseconds, int repeatCount) throws SchedulerException { |
| | | JobKey jobKey = JobKey.jobKey(job_name, group_name); |
| | | if(scheduler.checkExists(jobKey)){ |
| | | log.error("[添加定时任务]已存在该作业,jobkey为:{}", jobKey); |
| | | return; |
| | | } |
| | | JobDetail jobDetail = getJobDetail(quartzJob); |
| | | Trigger simpleTrigger = getSimpleTrigger(quartzJob, startTime, intervalInMilliseconds, repeatCount); |
| | | scheduler.scheduleJob(jobDetail, simpleTrigger); |
| | | log.info(QuartzEnum.ADD_SIMPLE_TRIGGER_SUCCESS.getValue()); |
| | | // 构建 Job |
| | | JobDetail job = JobBuilder.newJob(clazz) |
| | | .setJobData(jobDataMap) |
| | | .withIdentity(jobKey).build(); |
| | | // 构建 Trigger |
| | | Trigger trigger = getSimpleTrigger(job_name, group_name, startTime, intervalInMilliseconds, repeatCount); |
| | | // 启动调度器 |
| | | scheduler.scheduleJob(job, trigger); |
| | | scheduler.start(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 添加Cron表达式的定时任务 |
| | | * @param quartzJob 任务类 |
| | | * @param cron cron表达式 |
| | | * @throws SchedulerException |
| | | */ |
| | | public static void addCronQuartzTask(QuartzJob quartzJob, String cron) throws SchedulerException { |
| | | if(null == scheduler){ |
| | | log.error("请先加载任务调取器"); |
| | | public void addCronQuartzTask(Class<? extends Job> clazz, String job_name, String group_name, JobDataMap jobDataMap, String cron) throws SchedulerException { |
| | | JobKey jobKey = JobKey.jobKey(job_name, group_name); |
| | | if(scheduler.checkExists(jobKey)){ |
| | | log.error("[添加定时任务]已存在该作业,jobkey为:{}", jobKey); |
| | | return; |
| | | } |
| | | JobDetail jobDetail = getJobDetail(quartzJob); |
| | | Trigger cronTrigger = getCronTrigger(quartzJob, cron); |
| | | scheduler.scheduleJob(jobDetail, cronTrigger); |
| | | log.info(QuartzEnum.ADD_CRON_TRIGGER_SUCCESS.getValue()); |
| | | // 构建 Job |
| | | JobDetail job = JobBuilder.newJob(clazz) |
| | | .setJobData(jobDataMap) |
| | | .withIdentity(jobKey).build(); |
| | | // 构建 Trigger |
| | | Trigger trigger = getCronTrigger(job_name, group_name, cron); |
| | | // 启动调度器 |
| | | scheduler.scheduleJob(job, trigger); |
| | | scheduler.start(); |
| | | } |
| | | |
| | | |
| | |
| | | * @param group 任务分组 |
| | | * @return |
| | | */ |
| | | public static boolean deleteQuartzTask(String name, String group){ |
| | | public boolean deleteQuartzTask(String name, String group){ |
| | | JobKey jobKey = new JobKey(name, group); |
| | | boolean b = false; |
| | | try { |
| | |
| | | * @param jobKey |
| | | * @return |
| | | */ |
| | | public static boolean deleteQuartzTask(JobKey jobKey){ |
| | | public boolean deleteQuartzTask(JobKey jobKey){ |
| | | boolean b = false; |
| | | try { |
| | | b = scheduler.deleteJob(jobKey); |
| | |
| | | * @param group 分组名称 |
| | | * @return |
| | | */ |
| | | public static boolean deleteGroupQuartzTask(String group){ |
| | | public boolean deleteGroupQuartzTask(String group){ |
| | | try { |
| | | GroupMatcher<JobKey> groupMatcher = GroupMatcher.groupEquals(group); |
| | | Set<JobKey> jobKeys = scheduler.getJobKeys(groupMatcher); |
| | |
| | | * 清空所有定时任务 |
| | | * @return |
| | | */ |
| | | public static boolean deleteAllQuartzTask(){ |
| | | public boolean deleteAllQuartzTask(){ |
| | | try { |
| | | List<String> jobGroupNames = scheduler.getJobGroupNames(); |
| | | for (String jobGroupName : jobGroupNames) { |
| | |
| | | |
| | | /** |
| | | * 构建任务描述JobDetail对象 |
| | | * @param quartzJob 任务对象 |
| | | * @return |
| | | */ |
| | | private static JobDetail getJobDetail(QuartzJob quartzJob){ |
| | | String name = quartzJob.getName(); |
| | | String group = quartzJob.getGroup(); |
| | | if(null == name || "".equals(name)){ |
| | | name = QuartzEnum.JOB_NAME.getValue(); |
| | | private JobDetail getJobDetail(Job job, String job_name, String group_name){ |
| | | if(null == job_name || "".equals(job_name)){ |
| | | job_name = QuartzEnum.JOB_NAME.getValue(); |
| | | } |
| | | if(null == group || "".equals(group)){ |
| | | group = QuartzEnum.DEFAULT_GROUP.getValue(); |
| | | if(null == group_name || "".equals(group_name)){ |
| | | group_name = QuartzEnum.DEFAULT_GROUP.getValue(); |
| | | } |
| | | return getJobDetail(quartzJob, name, group, quartzJob.getJobDataMap()); |
| | | return getJobDetail(job, job_name, group_name, null); |
| | | } |
| | | |
| | | |
| | |
| | | * @param jobDataMap 自定义参数 |
| | | * @return |
| | | */ |
| | | private static JobDetail getJobDetail(Job job, String job_name, String group_name, JobDataMap jobDataMap){ |
| | | private JobDetail getJobDetail(Job job, String job_name, String group_name, JobDataMap jobDataMap){ |
| | | JobDetail jobDetail = JobBuilder.newJob(job.getClass()) |
| | | .withIdentity(job_name, group_name) |
| | | .setJobData(jobDataMap) |
| | |
| | | |
| | | /** |
| | | * 构建Trigger执行器 |
| | | * @param quartzJob 任务类 |
| | | * @param startTime 任务开始执行时间,为空则立即执行 |
| | | * @param intervalInMilliseconds 执行间隔毫秒数 |
| | | * @param repeatCount 重读执行次数,-1表示永远执行 |
| | | * @return |
| | | */ |
| | | private static Trigger getSimpleTrigger(QuartzJob quartzJob, Date startTime, long intervalInMilliseconds, int repeatCount){ |
| | | String name = quartzJob.getName(); |
| | | String group = quartzJob.getGroup(); |
| | | if(null == name || "".equals(name)){ |
| | | name = QuartzEnum.JOB_NAME.getValue(); |
| | | private static Trigger getSimpleTrigger(String job_name, String group_name, Date startTime, long intervalInMilliseconds, int repeatCount){ |
| | | if(null == job_name || "".equals(job_name)){ |
| | | job_name = QuartzEnum.JOB_NAME.getValue(); |
| | | } |
| | | if(null == group || "".equals(group)){ |
| | | group = QuartzEnum.DEFAULT_GROUP.getValue(); |
| | | if(null == group_name || "".equals(group_name)){ |
| | | group_name = QuartzEnum.DEFAULT_GROUP.getValue(); |
| | | } |
| | | TriggerBuilder<Trigger> triggerTriggerBuilder = TriggerBuilder.newTrigger(); |
| | | if(null == startTime){ |
| | |
| | | } |
| | | |
| | | SimpleTrigger trigger = triggerTriggerBuilder |
| | | .withIdentity(name, group) |
| | | .withIdentity(job_name, group_name) |
| | | .withSchedule( |
| | | SimpleScheduleBuilder |
| | | .simpleSchedule() |
| | |
| | | |
| | | /** |
| | | * 构建cronExpression表达式执行器 |
| | | * @param quartzJob 任务类 |
| | | * @param cron cron表达式 |
| | | * @return |
| | | */ |
| | | private static Trigger getCronTrigger(QuartzJob quartzJob, String cron) { |
| | | String name = quartzJob.getName(); |
| | | String group = quartzJob.getGroup(); |
| | | if(null == name || "".equals(name)){ |
| | | name = QuartzEnum.JOB_NAME.getValue(); |
| | | private static Trigger getCronTrigger(String job_name, String group_name, String cron) { |
| | | if(null == job_name || "".equals(job_name)){ |
| | | job_name = QuartzEnum.JOB_NAME.getValue(); |
| | | } |
| | | if(null == group || "".equals(group)){ |
| | | group = QuartzEnum.DEFAULT_GROUP.getValue(); |
| | | if(null == group_name || "".equals(group_name)){ |
| | | group_name = QuartzEnum.DEFAULT_GROUP.getValue(); |
| | | } |
| | | CronTrigger trigger = TriggerBuilder.newTrigger() |
| | | .startNow() |
| | | .withIdentity(name, group) |
| | | .withIdentity(job_name, group_name) |
| | | .withSchedule( |
| | | CronScheduleBuilder.cronSchedule(cron) |
| | | ).build(); |
| | |
| | | import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; |
| | | import com.stylefeng.guns.modular.system.dao.UserInfoMapper; |
| | | import com.stylefeng.guns.modular.system.model.Driver; |
| | | import com.stylefeng.guns.modular.system.model.User; |
| | | import com.stylefeng.guns.modular.system.model.UserInfo; |
| | | import com.stylefeng.guns.modular.system.service.IDriverService; |
| | | import com.stylefeng.guns.modular.system.service.IUserService; |
| | | import com.stylefeng.guns.modular.system.util.PushUtil; |
| | | import com.stylefeng.guns.modular.system.util.TextToSpeechUtil; |
| | | import com.stylefeng.guns.modular.system.util.quartz.QuartzUtil; |
| | | import com.stylefeng.guns.modular.system.util.quartz.model.QuartzEnum; |
| | | import com.stylefeng.guns.modular.system.util.quartz.model.QuartzJob; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.quartz.*; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | import java.util.Timer; |
| | | import java.util.TimerTask; |
| | | |
| | | |
| | | /** |
| | | * 订单司机超时提醒任务 |
| | | * @author zhibing.pu |
| | |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class OrderTimeOutJob extends QuartzJob { |
| | | public class OrderTimeOutJob implements Job { |
| | | |
| | | @Resource |
| | | private PushUtil pushUtil; |
| | |
| | | @Resource |
| | | private UserInfoMapper userInfoMapper; |
| | | |
| | | |
| | | |
| | | @Override |
| | | public QuartzJob buildQuartzJob() { |
| | | return buildQuartzJob(QuartzEnum.JOB_NAME.getValue()); |
| | | } |
| | | |
| | | @Override |
| | | public QuartzJob buildQuartzJob(String name) { |
| | | return buildQuartzJob(name, QuartzEnum.DEFAULT_GROUP.getValue()); |
| | | } |
| | | |
| | | @Override |
| | | public QuartzJob buildQuartzJob(String name, String group) { |
| | | return buildQuartzJob(name, QuartzEnum.DEFAULT_GROUP.getValue(), null); |
| | | } |
| | | |
| | | @Override |
| | | public QuartzJob buildQuartzJob(String name, String group, JobDataMap jobDataMap) { |
| | | QuartzJob job = new OrderTimeOutJob(); |
| | | if(ToolUtil.isNotEmpty(name)){ |
| | | job.setName(name); |
| | | }else{ |
| | | job.setName(QuartzEnum.JOB_NAME.getValue()); |
| | | } |
| | | if(ToolUtil.isNotEmpty(group)){ |
| | | job.setGroup(group); |
| | | }else{ |
| | | job.setGroup(QuartzEnum.DEFAULT_GROUP.getValue()); |
| | | } |
| | | if(null != jobDataMap){ |
| | | job.setJobDataMap(jobDataMap); |
| | | } |
| | | return job; |
| | | } |
| | | @Resource |
| | | private QuartzUtil quartzUtil; |
| | | |
| | | |
| | | /** |
| | | * 执行的业务逻辑 |
| | | * @param jobExecutionContext 定时任务上下文对象 |
| | | */ |
| | | @Override |
| | | public void run(JobExecutionContext jobExecutionContext) { |
| | | JobDetail jobDetail = jobExecutionContext.getJobDetail(); |
| | | JobDataMap jobDataMap = jobDetail.getJobDataMap(); |
| | |
| | | List<Integer> list = Arrays.asList(4, 5, 6, 7, 8, 9, 10, 11, 12); |
| | | if(1 == timeOutType && list.contains(orderPrivateCar.getState())){ |
| | | JobKey key = jobExecutionContext.getJobDetail().getKey(); |
| | | boolean b = QuartzUtil.deleteQuartzTask(key); |
| | | boolean b = quartzUtil.deleteQuartzTask(key); |
| | | if(!b){ |
| | | log.error("定时任务关闭失败:" + key.toString()); |
| | | } |
| | |
| | | } |
| | | if(2 == timeOutType && (System.currentTimeMillis() >= timeOut || list.contains(orderPrivateCar.getState()))){ |
| | | JobKey key = jobExecutionContext.getJobDetail().getKey(); |
| | | boolean b = QuartzUtil.deleteQuartzTask(key); |
| | | boolean b = quartzUtil.deleteQuartzTask(key); |
| | | if(!b){ |
| | | log.error("定时任务关闭失败:" + key.toString()); |
| | | } |
| | |
| | | //结束超时循环提醒定时 |
| | | if(3 == timeOutType && list.contains(orderPrivateCar.getState())){ |
| | | JobKey key = jobExecutionContext.getJobDetail().getKey(); |
| | | boolean b = QuartzUtil.deleteQuartzTask(key); |
| | | boolean b = quartzUtil.deleteQuartzTask(key); |
| | | if(!b){ |
| | | log.error("定时任务关闭失败:" + key.toString()); |
| | | } |
| | |
| | | List<Integer> list = Arrays.asList(4, 5, 6, 7, 8, 9, 10, 11, 12, 13); |
| | | if(1 == timeOutType && list.contains(orderLogistics.getState())){ |
| | | JobKey key = jobExecutionContext.getJobDetail().getKey(); |
| | | boolean b = QuartzUtil.deleteQuartzTask(key); |
| | | boolean b = quartzUtil.deleteQuartzTask(key); |
| | | if(!b){ |
| | | log.error("定时任务关闭失败:" + key.toString()); |
| | | } |
| | |
| | | //结束超时循环提醒定时 |
| | | if(3 == timeOutType && list.contains(orderLogistics.getState())){ |
| | | JobKey key = jobExecutionContext.getJobDetail().getKey(); |
| | | boolean b = QuartzUtil.deleteQuartzTask(key); |
| | | boolean b = quartzUtil.deleteQuartzTask(key); |
| | | if(!b){ |
| | | log.error("定时任务关闭失败:" + key.toString()); |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 初始化任务对象 |
| | | * @return |
| | | */ |
| | | public static QuartzJob init(){ |
| | | return new OrderTimeOutJob().buildQuartzJob(); |
| | | } |
| | | |
| | | /** |
| | | * 初始化任务对象 |
| | | * @param name |
| | | * @return |
| | | */ |
| | | public static QuartzJob init(String name){ |
| | | return new OrderTimeOutJob().buildQuartzJob(name); |
| | | @Override |
| | | public void execute(JobExecutionContext jobExecutionContext){ |
| | | run(jobExecutionContext); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 初始化任务对象 |
| | | * @param name |
| | | * @param group |
| | | * @return |
| | | */ |
| | | public static QuartzJob init(String name, String group){ |
| | | return new OrderTimeOutJob().buildQuartzJob(name, group); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 初始化任务对象 |
| | | * @param name |
| | | * @param group |
| | | * @return |
| | | */ |
| | | public static QuartzJob init(String name, String group, JobDataMap jobDataMap){ |
| | | return new OrderTimeOutJob().buildQuartzJob(name, group, jobDataMap); |
| | | } |
| | | } |
| | |
| | | --- |
| | | |
| | | share: |
| | | url: https://igo.i-go.group/share/share/pages/changeStyle/changeStyle.html |
| | | url: https://igo.i-go.group/share/share/pages/changeStyle/changeStyle.html |
| | | |
| | | --- |
| | | spring: |
| | | quartz: |
| | | job-store-type: jdbc |
| | | jdbc: |
| | | initialize-schema: embedded |
| | | properties: |
| | | org: |
| | | quartz: |
| | | scheduler: |
| | | # 调度器实例名称 |
| | | instanceName: QuartzScheduler |
| | | # 分布式节点ID自动生成 |
| | | instanceId: AUTO |
| | | jobStore: |
| | | class: org.springframework.scheduling.quartz.LocalDataSourceJobStore |
| | | driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate |
| | | # 表前缀 |
| | | tablePrefix: qrtz_ |
| | | # 是否开启集群 |
| | | isClustered: false |
| | | # 数据源别名(自定义) |
| | | dataSource: myDS |
| | | # 分布式节点有效性检查时间间隔(毫秒) |
| | | clusterCheckinInterval: 10000 |
| | | useProperties: false |
| | | # 线程池配置 |
| | | threadPool: |
| | | class: org.quartz.simpl.SimpleThreadPool |
| | | threadCount: 10 |
| | | threadPriority: 5 |
| | | threadsInheritContextClassLoaderOfInitializingThread: true |
| | |
| | | --- |
| | | |
| | | share: |
| | | url: https://igo.i-go.group/share/share/pages/changeStyle/changeStyle.html |
| | | url: https://igo.i-go.group/share/share/pages/changeStyle/changeStyle.html |
| | | |
| | | |
| | | |
| | | --- |
| | | spring: |
| | | quartz: |
| | | job-store-type: jdbc |
| | | jdbc: |
| | | initialize-schema: embedded |
| | | properties: |
| | | org: |
| | | quartz: |
| | | scheduler: |
| | | # 调度器实例名称 |
| | | instanceName: QuartzScheduler |
| | | # 分布式节点ID自动生成 |
| | | instanceId: AUTO |
| | | jobStore: |
| | | class: org.springframework.scheduling.quartz.LocalDataSourceJobStore |
| | | driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate |
| | | # 表前缀 |
| | | tablePrefix: qrtz_ |
| | | # 是否开启集群 |
| | | isClustered: false |
| | | # 数据源别名(自定义) |
| | | dataSource: myDS |
| | | # 分布式节点有效性检查时间间隔(毫秒) |
| | | clusterCheckinInterval: 10000 |
| | | useProperties: false |
| | | # 线程池配置 |
| | | threadPool: |
| | | class: org.quartz.simpl.SimpleThreadPool |
| | | threadCount: 10 |
| | | threadPriority: 5 |
| | | threadsInheritContextClassLoaderOfInitializingThread: true |
| | |
| | | public String index() { |
| | | return PREFIX + "tCar.html"; |
| | | } |
| | | |
| | | |
| | | @RequestMapping("auth") |
| | | public String auth() { |
| | | return PREFIX + "tCarAuth.html"; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 跳转到添加车辆管理 |
| | | */ |
| | |
| | | model.addAttribute("color", state); |
| | | return PREFIX + "tCar_edit.html"; |
| | | } |
| | | |
| | | |
| | | @RequestMapping("/tCar_auth/{tCarId}") |
| | | public String tCarAuth(@PathVariable Integer tCarId, Model model) { |
| | | TCar tCar = tCarService.selectById(tCarId); |
| | |
| | | return PREFIX + "tCar_auth.html"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 跳转到保险列表页 |
| | | * @param carId |
| | |
| | | tCarService.updateById(tCar); |
| | | return SUCCESS_TIP; |
| | | } |
| | | |
| | | |
| | | @RequestMapping(value = "/updateAuth") |
| | | @ResponseBody |
| | | public Object updateAuth(TCar tCar,String zcModel,String xjModel,@RequestParam String serverBox) { |
| | |
| | | sum(aa.czcUseMoney) as czcUseMoney, |
| | | sum(aa.kcNum) as kcNum, |
| | | sum(aa.kcUseNum) as kcUseNum, |
| | | sum(aa.kcUseMoney) as kcUseMoney |
| | | sum(aa.kcUseMoney) as kcUseMoney, |
| | | sum(aa.xjNum) as xjNum, |
| | | sum(aa.xjUseNum) as xjUseNum, |
| | | sum(aa.xjUseMoney) as xjUseMoney |
| | | from ( |
| | | select |
| | | DATE_FORMAT(a.insertTime, '%Y-%m-%d %H:%i:%s') as time, |
| | |
| | | 0 as czcUseMoney, |
| | | 0 as kcNum, |
| | | 0 as kcUseNum, |
| | | 0 as kcUseMoney |
| | | 0 as kcUseMoney, |
| | | 0 as xjNum, |
| | | 0 as xjUseNum, |
| | | 0 as xjUseMoney |
| | | from t_user_coupon_record a |
| | | left join t_user_activity_balance b on (a.couponActivityId = b.id and a.activityType = 4) |
| | | left join t_user_activity c on (b.userActivityId = c.id) |
| | |
| | | 0 as czcUseMoney, |
| | | 0 as kcNum, |
| | | 0 as kcUseNum, |
| | | 0 as kcUseMoney |
| | | 0 as kcUseMoney, |
| | | 0 as xjNum, |
| | | 0 as xjUseNum, |
| | | 0 as xjUseMoney |
| | | from t_user_coupon_record a |
| | | left join t_user_activity_balance b on (a.couponActivityId = b.id and a.activityType = 4) |
| | | left join t_user_activity c on (b.userActivityId = c.id) |
| | |
| | | 0 as czcUseMoney, |
| | | 0 as kcNum, |
| | | 0 as kcUseNum, |
| | | 0 as kcUseMoney |
| | | 0 as kcUseMoney, |
| | | 0 as xjNum, |
| | | 0 as xjUseNum, |
| | | 0 as xjUseMoney |
| | | from t_user_coupon_record a |
| | | left join t_user_activity_balance b on (a.couponActivityId = b.id and a.activityType = 4) |
| | | left join t_user_activity c on (b.userActivityId = c.id) |
| | |
| | | 0 as czcUseMoney, |
| | | 0 as kcNum, |
| | | 0 as kcUseNum, |
| | | 0 as kcUseMoney |
| | | 0 as kcUseMoney, |
| | | 0 as xjNum, |
| | | 0 as xjUseNum, |
| | | 0 as xjUseMoney |
| | | from t_user_coupon_record a |
| | | left join t_user_activity_balance b on (a.couponActivityId = b.id and a.activityType = 4) |
| | | left join t_user_activity c on (b.userActivityId = c.id) |
| | |
| | | 0 as czcUseMoney, |
| | | 0 as kcNum, |
| | | 0 as kcUseNum, |
| | | 0 as kcUseMoney |
| | | 0 as kcUseMoney, |
| | | 0 as xjNum, |
| | | 0 as xjUseNum, |
| | | 0 as xjUseMoney |
| | | from t_user_coupon_record a |
| | | left join t_user_activity_balance b on (a.couponActivityId = b.id and a.activityType = 4) |
| | | left join t_user_activity c on (b.userActivityId = c.id) |
| | |
| | | sum(a.money) as czcUseMoney, |
| | | 0 as kcNum, |
| | | 0 as kcUseNum, |
| | | 0 as kcUseMoney |
| | | 0 as kcUseMoney, |
| | | 0 as xjNum, |
| | | 0 as xjUseNum, |
| | | 0 as xjUseMoney |
| | | from t_user_coupon_record a |
| | | left join t_user_activity_balance b on (a.couponActivityId = b.id and a.activityType = 4) |
| | | left join t_user_activity c on (b.userActivityId = c.id) |
| | |
| | | 0 as czcUseMoney, |
| | | count(a.id) as kcNum, |
| | | 0 as kcUseNum, |
| | | 0 as kcUseMoney |
| | | 0 as kcUseMoney, |
| | | 0 as xjNum, |
| | | 0 as xjUseNum, |
| | | 0 as xjUseMoney |
| | | from t_user_coupon_record a |
| | | left join t_user_activity_balance b on (a.couponActivityId = b.id and a.activityType = 4) |
| | | left join t_user_activity c on (b.userActivityId = c.id) |
| | |
| | | 0 as czcUseMoney, |
| | | 0 as kcNum, |
| | | count(a.id) as kcUseNum, |
| | | sum(a.money) as kcUseMoney |
| | | sum(a.money) as kcUseMoney, |
| | | 0 as xjNum, |
| | | 0 as xjUseNum, |
| | | 0 as xjUseMoney |
| | | from t_user_coupon_record a |
| | | left join t_user_activity_balance b on (a.couponActivityId = b.id and a.activityType = 4) |
| | | left join t_user_activity c on (b.userActivityId = c.id) |
| | |
| | | and c.companyId = #{companyId} |
| | | </if> |
| | | GROUP BY DATE_FORMAT(a.insertTime, '%Y-%m-%d %H:%i:%s'),a.userId |
| | | |
| | | union all |
| | | |
| | | select |
| | | DATE_FORMAT(a.insertTime, '%Y-%m-%d %H:%i:%s') as time, |
| | | a.userId as userId, |
| | | d.nickName as userName, |
| | | d.phone as phone, |
| | | 0 as amount, |
| | | 0 as tyNum, |
| | | 0 as tyUseNum, |
| | | 0 as tyUseMoney, |
| | | 0 as zcNum, |
| | | 0 as zcUseNum, |
| | | 0 as zcUseMoney, |
| | | 0 as czcNum, |
| | | 0 as czcUseNum, |
| | | 0 as czcUseMoney, |
| | | 0 as kcNum, |
| | | 0 as kcUseNum, |
| | | 0 as kcUseMoney, |
| | | count(a.id) as xjNum, |
| | | 0 as xjUseNum, |
| | | 0 as xjUseMoney |
| | | from t_user_coupon_record a |
| | | left join t_user_activity_balance b on (a.couponActivityId = b.id and a.activityType = 4) |
| | | left join t_user_activity c on (b.userActivityId = c.id) |
| | | left join t_user d on (a.userId = d.id) |
| | | left join t_payment_record e on (a.paymentRecordId = e.id) |
| | | where a.activityType = 4 and a.couponUseType = 4 |
| | | <if test="null != name and '' != name"> |
| | | and c.`name` like CONCAT('%', #{name}, '%') |
| | | </if> |
| | | <if test="null != start and '' != start and null != end and '' != end"> |
| | | and DATE_FORMAT(a.insertTime, '%Y-%m-%d') between #{start} and #{end} |
| | | </if> |
| | | <if test="null != companyId"> |
| | | and c.companyId = #{companyId} |
| | | </if> |
| | | GROUP BY DATE_FORMAT(a.insertTime, '%Y-%m-%d %H:%i:%s'),a.userId |
| | | |
| | | union all |
| | | |
| | | select |
| | | DATE_FORMAT(a.insertTime, '%Y-%m-%d %H:%i:%s') as time, |
| | | a.userId as userId, |
| | | d.nickName as userName, |
| | | d.phone as phone, |
| | | 0 as amount, |
| | | 0 as tyNum, |
| | | 0 as tyUseNum, |
| | | 0 as tyUseMoney, |
| | | 0 as zcNum, |
| | | 0 as zcUseNum, |
| | | 0 as zcUseMoney, |
| | | 0 as czcNum, |
| | | 0 as czcUseNum, |
| | | 0 as czcUseMoney, |
| | | 0 as kcNum, |
| | | 0 as kcUseNum, |
| | | 0 as kcUseMoney, |
| | | 0 as xjNum, |
| | | count(a.id) as xjUseNum, |
| | | sum(a.money) as xjUseMoney |
| | | from t_user_coupon_record a |
| | | left join t_user_activity_balance b on (a.couponActivityId = b.id and a.activityType = 4) |
| | | left join t_user_activity c on (b.userActivityId = c.id) |
| | | left join t_user d on (a.userId = d.id) |
| | | left join t_payment_record e on (a.paymentRecordId = e.id) |
| | | where a.activityType = 4 and a.couponUseType = 4 and a.state = 2 |
| | | <if test="null != name and '' != name"> |
| | | and c.`name` like CONCAT('%', #{name}, '%') |
| | | </if> |
| | | <if test="null != start and '' != start and null != end and '' != end"> |
| | | and DATE_FORMAT(a.insertTime, '%Y-%m-%d') between #{start} and #{end} |
| | | </if> |
| | | <if test="null != companyId"> |
| | | and c.companyId = #{companyId} |
| | | </if> |
| | | GROUP BY DATE_FORMAT(a.insertTime, '%Y-%m-%d %H:%i:%s'),a.userId |
| | | ) as aa GROUP BY aa.time,aa.userId order by aa.time desc |
| | | <if test="null != offset and null != limit"> |
| | | limit #{offset}, #{limit} |
| | |
| | | list.add("通用券领取总数"); |
| | | list.add("通用券使用总数"); |
| | | list.add("通用券使用总金额"); |
| | | list.add("专车券领取总数"); |
| | | list.add("专车券使用总数"); |
| | | list.add("专车券使用总金额"); |
| | | list.add("出租车券领取总数"); |
| | | list.add("出租车券使用总数"); |
| | | list.add("出租车券使用总金额"); |
| | | list.add("跨城券领取总数"); |
| | | list.add("跨城券使用总数"); |
| | | list.add("跨城券使用总金额"); |
| | | list.add("打车券领取总数"); |
| | | list.add("打车券使用总数"); |
| | | list.add("打车券使用总金额"); |
| | | list.add("包裹券领取总数"); |
| | | list.add("包裹券使用总数"); |
| | | list.add("包裹券使用总金额"); |
| | | lists.add(list); |
| | | |
| | | List<List<List<String>>> lists1 = new ArrayList<>(); |
| | |
| | | list2.add(null != map.get("zcNum") ? map.get("zcNum").toString() : ""); |
| | | list2.add(null != map.get("zcUseNum") ? map.get("zcUseNum").toString() : ""); |
| | | list2.add(null != map.get("zcUseMoney") ? map.get("zcUseMoney").toString() : ""); |
| | | list2.add(null != map.get("czcNum") ? map.get("czcNum").toString() : ""); |
| | | list2.add(null != map.get("czcUseNum") ? map.get("czcUseNum").toString() : ""); |
| | | list2.add(null != map.get("czcUseMoney") ? map.get("czcUseMoney").toString() : ""); |
| | | list2.add(null != map.get("kcNum") ? map.get("kcNum").toString() : ""); |
| | | list2.add(null != map.get("kcUseNum") ? map.get("kcUseNum").toString() : ""); |
| | | list2.add(null != map.get("kcUseMoney") ? map.get("kcUseMoney").toString() : ""); |
| | | list2.add(null != map.get("xjNum") ? map.get("xjNum").toString() : ""); |
| | | list2.add(null != map.get("xjUseNum") ? map.get("xjUseNum").toString() : ""); |
| | | list2.add(null != map.get("xjUseMoney") ? map.get("xjUseMoney").toString() : ""); |
| | | lists2.add(list2); |
| | | } |
| | | lists1.add(lists2); |
| | |
| | | list.add("领取人"); |
| | | list.add("领取人电话"); |
| | | list.add("领取金额"); |
| | | list.add("到期时间"); |
| | | list.add("状态"); |
| | | list.add("使用时间"); |
| | | lists.add(list); |
| | | |
| | | List<List<List<String>>> lists1 = new ArrayList<>(); |
| | |
| | | list2.add(null != map.get("name") ? map.get("name").toString() : ""); |
| | | list2.add(null != map.get("phone") ? map.get("phone").toString() : ""); |
| | | list2.add(null != map.get("money") ? map.get("money").toString() : ""); |
| | | list2.add(null != map.get("expirationTime") ? map.get("expirationTime").toString() : ""); |
| | | list2.add(null != map.get("state") ? map.get("state").toString() : ""); |
| | | list2.add(null != map.get("endTime") ? map.get("endTime").toString() : ""); |
| | | lists2.add(list2); |
| | | } |
| | | lists1.add(lists2); |
| | |
| | | {title: '领取人', field: 'name', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '领取人电话', field: 'phone', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '领取金额', field: 'money', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '到期时间', field: 'expirationTime', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '使用时间', field: 'endTime', visible: true, align: 'center', valign: 'middle'} |
| | | ] |
| | | var table = new BSTable(CouponStatisticsInfo.id, '/report/queryRedEnvelopesInfo', defaultColunms); |
| | | table.setPaginationType("server"); |
| | |
| | | {title: '通用券领取总数', field: 'tyNum', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '通用券使用总数', field: 'tyUseNum', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '通用券使用总金额', field: 'tyUseMoney', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '专车券领取总数', field: 'zcNum', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '专车券使用总数', field: 'zcUseNum', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '专车券使用总金额', field: 'zcUseMoney', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '打车券领取总数', field: 'zcNum', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '打车券使用总数', field: 'zcUseNum', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '打车券使用总金额', field: 'zcUseMoney', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '包裹券领取总数', field: 'xjNum', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '包裹券使用总数', field: 'xjUseNum', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '包裹券使用总金额', field: 'xjUseMoney', visible: true, align: 'center', valign: 'middle'}, |
| | | ] |
| | | var table = new BSTable(CouponStatisticsInfo.id, '/report/queryCouponRegisterInfo1', defaultColunms); |
| | | table.setPaginationType("server"); |
| | |
| | | Feng.info("请选择服务模式"); |
| | | return; |
| | | } |
| | | var zcModel = $("#zcModel").val(); |
| | | if ("" == zcModel){ |
| | | Feng.info("请选择专车车型"); |
| | | return; |
| | | } |
| | | var xjModel = $("#xjModel").val(); |
| | | if ("" == xjModel){ |
| | | Feng.info("请选择市内小件物流车型"); |
| | | return; |
| | | } |
| | | } |
| | | var zcModel = $("#zcModel").val(); |
| | | if ("" == zcModel){ |
| | | Feng.info("请选择专车车型"); |
| | | return; |
| | | } |
| | | var xjModel = $("#xjModel").val(); |
| | | if ("" == xjModel){ |
| | | Feng.info("请选择市内小件物流车型"); |
| | | return; |
| | | } |
| | | |
| | | //提交信息 |
| | | var ajax = new $ax(Feng.ctxPath + "/tCar/updateAuth", function(data){ |
| | | Feng.success("操作成功!"); |
| | |
| | | import com.google.code.kaptcha.Constants; |
| | | import com.stylefeng.guns.core.common.constant.JwtConstants; |
| | | import com.stylefeng.guns.core.common.exception.InvalidKaptchaException; |
| | | import com.stylefeng.guns.core.shiro.ShiroKit; |
| | | import com.stylefeng.guns.core.support.HttpKit; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.system.model.BankCard; |
| | |
| | | |
| | | @Autowired |
| | | private FleetEngineUtil fleetEngineUtil; |
| | | |
| | | private String salt = "&a.s"; |
| | | |
| | | |
| | | |
| | |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @PostMapping("/base/user/delUserInfo") |
| | | public ResultUtil delUserInfo(String username, String password){ |
| | | UserInfo userInfo = userInfoService.selectOne(new EntityWrapper<UserInfo>().eq("phone", username) |
| | | .ne("flag", 3)); |
| | | if(null == userInfo){ |
| | | return ResultUtil.error("Invalid account"); |
| | | } |
| | | if(!ShiroKit.md5(password, salt).equals(userInfo.getPassWord())){ |
| | | return ResultUtil.error("Wrong password"); |
| | | } |
| | | userInfo.setFlag(3); |
| | | userInfoService.updateById(userInfo); |
| | | return ResultUtil.success(); |
| | | } |
| | | } |