2026-10-03

宝塔面板计划任务配置指南:订单自动取消、自动完成、营业时间全自动管理

作者:海狐科技

外卖平台跑起来之后,有些工作看似不起眼,却直接影响用户体验和商家运营:顾客下单后迟迟不付款,订单一直挂着没人处理;配送完成的订单积压在列表里,商家后台越来越乱;门店实际已经打烊,小程序上还显示”营业中”,顾客下了单却没有骑手接单。这些场景如果全靠人工盯着处理,既费时又容易出错。海狐外卖系统通过三个定时任务把这类问题自动化解决:订单自动取消、订单自动完成、营业时间自动检查。本文基于宝塔面板,手把手教你把这三个计划任务配好。

这些定时任务分别做什么

在动手配置之前,先弄清楚每个任务解决什么问题,这样后续排查问题时心里也有数。

  • 订单自动取消:系统定时扫描所有处于”待支付”状态的订单,超过支付时限仍未付款的订单会被自动取消,释放占用的库存和配送资源,同时避免订单列表里堆满无效订单。
  • 订单自动完成:已配送完成但长时间未手动点击”确认完成”的订单,会被系统自动标记为完成状态,保证商家结算和平台对账数据准确。
  • 营业时间检查:定时校验各门店的实际营业状态,让小程序上显示的”营业中/已打烊”与后台设置保持一致,避免顾客向已关门的门店下单。

三个任务相互独立又互为补充,建议一次性全部配置,别留缺口。

第一步:登录宝塔面板,进入计划任务

打开浏览器,输入你的宝塔面板地址并登录。在左侧菜单栏找到**“计划任务”**(部分版本叫”定时任务”),点击进入任务管理页面。这里可以看到服务器上所有已有的计划任务,包括宝塔自身创建的备份任务等。

第二步:添加第一个任务——订单自动取消

点击**“添加计划任务”**,按以下方式填写:

  • 任务类型:选择 Shell 脚本;
  • 任务名称:填写”海狐-订单自动取消”,方便日后识别;
  • 执行周期:建议选择每分钟执行一次,保证未支付订单能在超时后第一时间被取消;
  • 脚本内容:填入以下命令(注意把 xxxxx.com 替换成你自己平台的域名):
curl https://xxxxx.com/api/system.order.order/autoCancel

填写完成后保存。这样系统就会每分钟调用一次订单自动取消接口。

第三步:添加第二个任务——订单自动完成

继续点击”添加计划任务”,任务类型同样选择 Shell 脚本,任务名称填写”海狐-订单自动完成”,执行周期同样建议每分钟一次,脚本内容如下:

sudo -u root bash -c 'curl https://xxxx.com/index/index/checkOrderNoFinish'

同样记得把 xxxx.com 替换为你自己的域名。

第四步:添加第三个任务——营业时间检查

再添加一条计划任务,任务名称填写”海狐-营业时间检查”,脚本内容如下:

sudo -u root bash -c 'curl https://xxxx.com/index/index/checkStoreBusiness'

三条任务全部添加完成后,计划任务列表中应该能同时看到它们,并且状态都显示为正常启用。

配置完成后的检查

任务添加后,建议做两件事确认配置生效:

  1. 手动执行一次:在计划任务列表中找到刚创建的任务,点击”执行”按钮手动触发,观察是否提示执行成功。如果报错,优先检查域名是否拼写正确、接口地址是否完整。
  2. 观察业务表现:等一到两分钟,到商家后台查看是否有订单被自动取消或完成,到小程序端查看门店营业状态是否随后台设置同步变化。

[图片说明:宝塔面板计划任务添加界面与任务列表]

常见问题(FAQ)

Q1:命令里的域名应该填什么?

把命令中的 xxxxx.com(或 xxxx.com)整体替换成你平台的实际域名即可,例如你的平台访问地址是 https://waimai.example.com,那命令就写成 curl https://waimai.example.com/api/system.order.order/autoCancel。注意保留 https:// 前缀和后面的接口路径,一个字符都不要改动。

Q2:服务器没有用宝塔面板,怎么添加这些定时任务?

可以直接使用 Linux 系统自带的 crontab。在终端执行 crontab -e,把三条命令逐行添加进去,并在每行开头加上执行周期表达式(每分钟执行一次对应的表达式是 * * * * *),例如:

* * * * * curl https://你的域名/api/system.order.order/autoCancel
* * * * * sudo -u root bash -c 'curl https://你的域名/index/index/checkOrderNoFinish'
* * * * * sudo -u root bash -c 'curl https://你的域名/index/index/checkStoreBusiness'

保存后 crontab 会自动生效,用 crontab -l 可以查看已添加的任务列表。

Q3:手动执行成功了,但订单一直不会被自动取消,怎么回事?

先确认执行周期是否设置为每分钟执行,而不是设置成了每天某时某分。其次确认接口返回的内容——如果返回了错误信息,说明系统内部执行环节有问题,可以联系海狐技术支持协助排查。另外检查服务器时间是否准确,时间偏差过大也会影响系统对超时订单的判断。

Q4:执行日志里提示 curl 命令不存在怎么办?

部分精简版 Linux 系统可能没有预装 curl。在宝塔终端或 SSH 中执行安装命令即可,CentOS 系统使用 yum install curl,Ubuntu/Debian 系统使用 apt install curl,安装完成后重新手动执行一次任务验证。

Q5:三个任务可以合并成一条吗?执行频率可以调低吗?

不建议合并,三条命令对应三个独立的系统接口,分开维护更清晰,某一条出问题也互不影响。执行频率方面,建议保持每分钟一次:自动取消和自动完成的时效性直接决定商家和顾客的体验,频率太低会出现”订单超时很久才被取消”的情况。每分钟的调用量对服务器来说非常轻,无需担心性能问题。

相关功能推荐

  • 海狐外卖系统后端部署教程:如果你还没有完成系统部署,这篇宝塔面板部署指南能帮你从零搭建好运行环境,是配置定时任务的前置工作。
  • 七牛云免费SSL证书续费指南:定时任务中的接口走的是 HTTPS 地址,证书一旦过期任务就会失败,这份续费流程帮你保持证书长期有效。
  • 外卖截单时间设置:与营业时间自动检查配合使用,可以精确控制用户下单的截止时间,让高峰配送更有序。
  • 预订单设置:开启预订单功能后,系统对履约时间的管理要求更高,配合定时任务可以让”提前下单、按时配送”的体验更稳定。

计划任务配好之后,平台就像多了三个不知疲倦的值班员:每分钟自动清理无效订单、自动完结滞留订单、自动校准门店营业状态。日常运营中基本不需要再为这些琐事操心,把精力留给真正的业务增长就好。如果在配置过程中遇到无法解决的问题,欢迎联系海狐科技技术支持获取协助。