苍穹外卖-Day10(Spring task)

1.Spring task介绍

Spring task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。

作用:定时自动执行某段Java代码

2.cron表达式

cron表达式其实就是一个字符串,通过cron表达式可以定时任务触发的时间

构成规则:;分成6个或7个域,由空格分隔开,每个域代表一个含义

含义分别为:秒、分钟、小时、日、月、周、年(可选)

3.订单状态定时处理

java 复制代码
@Scheduled(cron = "0 * * * * ?")//每分钟执行一次
    public void processTimeoutOrder() {
        log.info("定时处理超时订单:{}", LocalDateTime.now());
        List<Orders> ordersList = orderMapper.getByStatusAndOrderTimeLT(Orders.PENDING_PAYMENT, LocalDateTime.now().plusMinutes(-15));
        if(ordersList!=null&&ordersList.size()>0){
            for (Orders orders : ordersList) {
                orders.setStatus(Orders.CANCELLED);
                orders.setCancelReason("支付超时");
                orders.setCancelTime(LocalDateTime.now());
                orderMapper.update(orders);
            }
        }
    }

    @Scheduled(cron = "0 0 1 * * ?")//每日1点执行一次
    public void processDeliveryOrder() {
        log.info("定时处理处于派送状态的订单:{}", LocalDateTime.now());
        List<Orders> ordersList = orderMapper.getByStatusAndOrderTimeLT(Orders.DELIVERY_IN_PROGRESS, LocalDateTime.now().plusMinutes(-60));
        if(ordersList!=null&&ordersList.size()>0){
            for (Orders orders : ordersList) {
                orders.setStatus(Orders.COMPLETED);

                orderMapper.update(orders);
            }
        }
    }
复制代码
相关推荐
Terra.K1 分钟前
Spring AI day1(SSE+AI)
java·人工智能·spring·springai
ALONE阿龙太原微码3 分钟前
RBAC 以及主流权限模型
后端
斑鸠喳喳3 分钟前
线程本地存储 ThreadLocal
java·后端
你顶住我先撤12 分钟前
RocketMQ 消息类型
后端
Wang's Blog42 分钟前
Java框架 SpringCloud 快速入门: 服务拆分案例 Demo
java·开发语言·spring cloud
DongQiShanRen1 小时前
裁决台账双向互校(上):名册与实物的第一道对账
java·linux·运维·数据库·人工智能·自然语言处理·数据挖掘
cpolar技术支持2 小时前
Spring Boot 接口本地正常,异地前端却报跨域?用 cpolar 跑通 CORS 预检与白名单
java·springboot·cpolar·前后端分离·cors
高频因子挖掘机2 小时前
批量行情返回后,怎样把请求失败的股票单独挑出来?
后端·github·api
wuminyu2 小时前
Virtual Thread重投递至ForkJoinPool任务队列过程解析
java·linux·c语言·jvm·c++
小蒜学长2 小时前
在线保险服务与管理平台的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·服务平台·在线保险