后端学习笔记-Spring Task

Spring Task

介绍

cron表达式

cron表达式生成网站

使用

java 复制代码
/**
 *  自定义定时任务类
 */
@Component
@Slf4j
public class MyTask {
    /**
     * 测试定时任务
     */
    @Scheduled(cron = "0/5 * * * * ? ")
    public void myTask(){
        log.info("定时任务开始执行:{}",new Date());
    }
}

实例

定时处理订单状态

java 复制代码
/**
 * 订单状态定时任务
 */
@Component
@Slf4j
public class OrderTask {

    @Autowired
    private OrderMapper orderMapper;

    /**
     * 处理超时订单
     */
    @Scheduled(cron = "0 * * * * ? ")
    public void processTimeoutOrder() {
        log.info("处理超时订单:{}", LocalDateTime.now());
        List<Orders> orderlist = orderMapper.getByStatusAndOrderTime(Orders.PENDING_PAYMENT,
                LocalDateTime.now().plusMinutes(-15));
        if(orderlist != null && orderlist.size() > 0){
            List<Long> ids = orderlist.stream().map(x->{
                return x.getId();
            }).collect(Collectors.toList());
            orderMapper.updateStatusCancelByIds(ids, Orders.CANCELLED,MessageConstant.ORDER_PAYMENT_TIMEOUT,LocalDateTime.now());
        }
    }

    /**
     * 处理一直派送订单
     */
    @Scheduled(cron = "0 0 1 * * ? ")
    public void processCompletionOrder() {
        log.info("定时处理派送订单:{}", LocalDateTime.now());
        List<Orders> orderlist = orderMapper.getByStatusAndOrderTime(Orders.DELIVERY_IN_PROGRESS,
                LocalDateTime.now().plusMinutes(-60));
        if(orderlist != null && orderlist.size() > 0){
            List<Long> ids = orderlist.stream().map(x->{
                return x.getId();
            }).collect(Collectors.toList());
            orderMapper.updateStatusCompletedByIds(ids, Orders.COMPLETED,LocalDateTime.now());
        }
    }
}
相关推荐
yyyyy_abc4 小时前
ceph学习笔记
笔记·ceph·学习
晓梦林4 小时前
ximai靶场学习笔记
android·笔记·学习
nashane5 小时前
HarmonyOS 6学习:外接键盘CapsLock与长截图功能的实战调试与完整解决方案
学习·华为·计算机外设·harmonyos
IT19955 小时前
Dify笔记-创建自定义工具连接到自建的OpenAPI Schema服务
笔记
一口吃俩胖子5 小时前
【脉宽调制DCDC功率变换学习笔记021】时域性能准则
笔记·学习
starvapour6 小时前
SSH笔记
笔记·ssh
@杰克成7 小时前
Java学习30
java·开发语言·学习
三品吉他手会点灯7 小时前
C语言学习笔记 - 40.数据类型 - scanf函数的编程规范与非法输入处理
c语言·开发语言·笔记·学习
大G的笔记本7 小时前
synchronized 的原理(简单版)
笔记
Bechamz8 小时前
大数据开发学习Day36
大数据·学习