Pu Zhibing
4 天以前 8675ddc7e76f418ee47adc50ee7bac35171a9620
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package com.stylefeng.guns.modular.system.util;
 
import com.stylefeng.guns.modular.account.service.UserWithdrawalService;
import com.stylefeng.guns.modular.system.service.IDriverService;
import com.stylefeng.guns.modular.system.service.IOrderService;
import com.stylefeng.guns.modular.system.service.IUserMerchantCouponService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.context.WebServerInitializedEvent;
import org.springframework.boot.web.server.WebServer;
import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import java.util.HashSet;
import java.util.Set;
 
 
/**
 * 定时任务工具类
 */
@Component
public class TaskUtil implements ApplicationListener<WebServerInitializedEvent> {
    
    @Autowired
    private IDriverService driverService;
    
    @Autowired
    private IOrderService orderService;
    
    @Autowired
    private JGPushUtil jgPushUtil;
    
    @Autowired
    private IUserMerchantCouponService userMerchantCouponService;
    @Autowired
    private UserWithdrawalService userWithdrawalService;
 
    public Set<Integer> driverIds = new HashSet<>();//存储需要提醒司机预约单的司机id
 
 
 
 
    /**
     * 每隔一分钟去处理的定时任务
     */
    @Scheduled(fixedRate = 1000 * 60)
    public void taskMinute(){
        try {
            //修改满足活动条件的数据(在线时长,订单量)
            driverService.taskMinute();
            //处于预约单
            orderService.reservationOrder();
            //处理车载端断电后的自动下班
            driverService.taskOffWork();
            //处理结束订单后30分钟解绑小号功能
            orderService.taskMidAxbUnBindSend();
            //修改过期的商家券
            userMerchantCouponService.updateExpired();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
 
 
 
    /**
     * 每隔五分钟去处理的定时任务
     */
    @Scheduled(fixedRate = 1000 * 60 * 5)
    public void taskFiveMinute(){
        try {
            for (Integer id: driverIds){
                jgPushUtil.push(1, "您的预约订单出行时间就要到了,请尽快前往预约地点接乘客", "DRIVER" + id);
            }
            this.driverIds.clear();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
    /**
     * 每天的凌晨执行的任务
     */
    @Scheduled(cron = "0 0 0 * * *")
    public void taskDay() {
        try {
            //生成当天的司机活动
            driverService.addTodayActivity();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
    @Override
    public void onApplicationEvent(WebServerInitializedEvent event) {
        // 获取环境对象
        WebServer webServer = event.getWebServer();
        // 获取端口号
        int port = webServer.getPort();
        // 打印端口号
        System.out.println("Spring Boot应用已启动,访问端口:" + port);
    }
}