Java项目-苍穹外卖-Day10-SpirngTask及WebSocket

news2024/12/29 8:03:52

文章目录

  • 前言
  • SpringTask
    • 介绍
    • SpringTask_corn表达式
    • Spring_Task入门案例
  • 订单状态定时处理
    • 需求分析
    • 代码开发
    • 功能测试

前言

本章实现的业务功能

超时未支付订单自动取消,配送中订单商家忘点完成自动再固定时间检查且修改成完成状态
在这里插入图片描述
来单提醒功能
在这里插入图片描述
催单提醒功能
在这里插入图片描述

SpringTask

介绍

在这里插入图片描述
在这里插入图片描述

SpringTask_corn表达式

一般的话周几和第几日是不能同时出现的
因为比如 4月15日 周四 可能4月15日不是周四 可能冲突的 所以周和日一般只能有一个
在这里插入图片描述
现在有这种生成表达式的网站
在这里插入图片描述
!其实还挺复杂的,建议看个视频稍微学一下怎么用这个网站

Spring_Task入门案例

使用springtask主要关注 1.cron表达式 2.内部处理逻辑
spring_Task挺小的一个框架,是没有自己的jar包的,集成在了spring_context这个包里面
在这里插入图片描述
在这里插入图片描述
自定义的定时任务类
在这里插入图片描述

订单状态定时处理

需求分析

在这里插入图片描述
在这里插入图片描述
合理一点,你派送中订单不能12点弄的,一般这个时候有很多是真的在派送中的

代码开发

com.sky.Task.OrderTask

//自定义定时任务类,定时处理订单状态
@Component
@Slf4j
public class OrderTask {
    @Autowired
    private OrderMapper orderMapper;

    /**
     * 处理超时订单的方法,每分钟触发一次
     */
    @Scheduled(cron = "0 * * * * ?")//每分钟触发一次
    public void processTimeoutOrder(){
        log.info("定时处理超时订单:{}", LocalDateTime.now());
        //select * from orders where status = ? and order_time < (当前时间-15分钟)
        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 * * ?")//每天凌晨一点触发一次
    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);
            }
        }
    }
}

ordermapper

    /**
     *根据订单状态和订单时间查询订单
     * @return
     */
    @Select("select * from orders where status=#{status} and order_time < #{orderTime} ")
    List<Orders> getByStatusAndOrderTimeLT(Integer status, LocalDateTime orderTime);

功能测试


这个运行然后看数据库
弄几个status为1(待支付)的订单然后等到它自动处理看看能不能取消
然后那个配送的可以改一下那个cron表达式不用真的等到1点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/987571.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么牌子的灯具性价比高?好用实惠的护眼台灯品牌推荐

现在我们很多家长对自己孩子的视力十分关心&#xff0c;生怕自己的孩子是近视、远视、弱视等等。对于父母而言&#xff0c;在孩子读书压力大课业重的关键时期&#xff0c;为孩子选择合适的桌椅&#xff0c;保护灯具从而保护孩子的眼睛是非常重要的事情!那么买给孩子读书做功课的…

iTOP-RK3568开发板内核模块实验-设置交叉编译器

在上一章节我们编写了最简单的 helloworld 驱动程序。有了驱动程序以后&#xff0c;要如何编译并使用驱动呢。编译驱动有俩种方法&#xff0c;分别是将驱动编译成内核和将驱动编译成内核模块。我们先来学习如何将驱动编译成内核模块、 4.1 设置交叉编译器 1 下载网盘资料下的…

U盘格式化后数据恢复?别担心,2个方法轻松恢复!

“昨天我的u盘好像中病毒了&#xff0c;为了清除里面的病毒&#xff0c;我不得已将u盘进行了格式化操作。但是&#xff0c;我的u盘中很重要的文件也被删除了&#xff01;这可怎么办啊&#xff1f;还有恢复的机会吗” 平常在使用u盘时&#xff0c;我们可能会因为各种原因&#x…

【漏洞复现】金盘图书馆微信管理后台 getsysteminfo 未授权访问漏洞

漏洞描述 北京金盘鹏图软件技术有限公司的金盘图书馆微信管理后台 getsysteminfo 存在未授权访问漏洞,可获取管理员账号密码等敏感数据&#xff0c;导致攻击者能以管理员身份进入系统窃取敏感信息和危险操作。 免责声明 技术文章仅供参考&#xff0c;任何个人和组织使用网络…

每日刷题|回溯法解决全排列问题

​ 食用指南&#xff1a;本文为作者刷题中认为有必要记录的题目 前置知识&#xff1a;回溯法经典问题之组合 ♈️今日夜电波&#xff1a;爱人错过—告五人 1:11 ━━━━━━️&#x1f49f;──────── 4:52 …

商业智能必备利器,帆软、powerBI替代工具

随着商业智能领域的发展&#xff0c;越来越多的企业开始意识到数据对于业务发展的重要性。而在这个过程中&#xff0c;BI&#xff08;商业智能&#xff09;工具成为了企业进行数据分析、决策支持的必备利器。然而&#xff0c;市场上BI工具种类繁多&#xff0c;每个工具都有其独…

机器学习笔记之最优化理论与方法(八)无约束优化问题——常用求解方法(中)

机器学习笔记之最优化理论与方法——基于无约束优化问题的常用求解方法[中] 引言回顾&#xff1a;最速下降算法的缺陷经典牛顿法基本介绍经典牛顿法的问题经典牛顿法的优点与缺陷经典牛顿法示例 修正牛顿法介绍拟牛顿法拟牛顿法的算法过程 矩阵 B k 1 \mathcal B_{k1} Bk1​的…

从软件工程师角度聊聊 Kubernetes

作为软件工程师&#xff0c;我们应该熟悉 K8s&#xff0c;尽管它有点像 DevOps&#xff0c;但它能让我们更好地了解幕后发生的事情&#xff0c;让我们与部署工作更密切相关&#xff0c;更有责任感。本文将从软件工程师的角度探讨 Kubernetes (K8s)&#xff0c;我们将介绍其动机…

【NoSQL】redis之持久化(RDB、AOF)

一、Redis 高可用 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、99.999%等等&#xff09;。 但是在Redis语境中&#xff0c;高可用的含义似乎要宽泛一些&#xff0c;除了保证…

LeetCode刷题笔记【30】:动态规划专题-2(不同路径、不同路径 II)

文章目录 前置知识62.不同路径题目描述解题思路代码 63. 不同路径 II题目描述障碍信息传递法(比较复杂)被障碍物阻挡后直接清空计数法(更简洁) 总结 前置知识 参考前文 参考文章&#xff1a; LeetCode刷题笔记【29】&#xff1a;动态规划专题-1&#xff08;斐波那契数、爬楼梯…

【代码随想录】Day 45 动态规划7 (爬楼梯(进阶)、零钱兑换、完全平方数)

爬楼梯&#xff08;进阶&#xff09; https://leetcode.cn/problems/climbing-stairs/ 零钱兑换 https://leetcode.cn/problems/coin-change/ 完全平方数 https://leetcode.cn/problems/perfect-squares/

GE IS220PAICH2A 336A4940CSP11 数字量输入模块产品应用领域

GE IS220PAICH2A 336A4940CSP11 是一款数字量输入模块&#xff0c;通常用于工业自动化和控制系统中&#xff0c;用于监测和采集数字输入信号。这种类型的模块可以在各种应用领域中发挥作用&#xff0c;以下是一些可能的应用领域&#xff1a; 工业过程控制&#xff1a; GE IS220…

九个月内累计被罚1.3亿元,知网为何屡触法网

大数据产业创新服务媒体 ——聚焦数据 改变商业 9月6日&#xff0c;国家网信办根据《个人信息保护法》作出顶格处罚&#xff0c;对中国知网处以5000万元的罚款。 国家网信办的调查发现&#xff0c;知网运营的手机知网、知网阅读等14款APP存在违反必要原则收集个人信息、未经同…

怎么把照片变成视频?分享个简单的制作方法

在现代社交网络中&#xff0c;图文视频已成为非常流行的视觉语言。由于图文视频具有强烈的视觉吸引力和交互性&#xff0c;它们已成为许多人在社交媒体上分享自己的生活和经历的首选方式。以下是制作图文视频的步骤&#xff1a; Step 1 首先&#xff0c;我们需要选取一些照片来…

图片上的字怎么去掉?尝试下这几种简单操作方法

在设计中&#xff0c;图片通常被用来传达信息或增强视觉效果。然而&#xff0c;有时候图片中的文字可能会干扰到内容的阅读或降低整体设计的美感。除此之外&#xff0c;如果图片中的文字已经在其他地方出现过了&#xff0c;比如在正文或标题中&#xff0c;那么重复使用文字会让…

基于轻量级神经网络GhostNet开发构建的200种鸟类细粒度识别分析系统

最近项目需要用到轻量级的网络模型&#xff0c;后期考虑进一步的剪枝和量化达到加速推理的目的&#xff0c;正好有时间就想着基于实际的数据集来开发构建项目做测试&#xff0c;本文的核心目的就是选定轻量级神经网络模型GhostNet来开发构建细粒度鸟类识别系统&#xff0c;首先…

MySQL服务关闭开机自启,改成手动启动状态

最近在写前端&#xff0c;所以就先把后端数据库禁用或手动启动吧。防止浪费太多内存或资源。一般就之前损坏了的数据库就禁用吧&#xff0c;其他最近不常用的服务就没必要开机自启动吧&#xff0c;毕竟电脑只有一台&#xff0c;不想学习想用电脑来玩的话就讲工作服务从开机自启…

数字出版软件系统开发

数字出版涵盖了广泛的内容&#xff0c;从电子书到数字杂志、在线期刊和互动教育教材等。为了实现这些数字出版物&#xff0c;有许多不同类型的软件系统可供使用&#xff0c;每种都有自己的特点和功能。以下是一些常见的数字出版软件系统以及它们主要实现的功能&#xff0c;希望…

国标视频云服务EasyGBS国标视频平台设备录像下载文件为ps格式,如何改为MP4格式?

EasyGBS是基于国标GB/T28181协议的视频云服务平台&#xff0c;不仅支持无缝、完整接入内网或者公网的国标设备&#xff0c;在输出上&#xff0c;提供RTSP、RTMP、FLV、HLS、WebRTC等多种格式视频流的分发服务&#xff0c;实现全平台、全终端输出。 有用户反馈&#xff0c;在使用…

ubuntu 扩展内存挂载

一般新建虚拟机时&#xff0c;系统默认的空间是20G&#xff0c;但是当我们搭建一些环境之后&#xff0c;需要解压一些稍微大点的源码时内存可能不够用了&#xff0c;这时我们需要扩展内存。 一、硬盘扩展 首先&#xff0c;关闭虚拟机&#xff0c;在虚拟机设置中将硬盘容量扩展…