Blogger Information
Blog 3
fans 2
comment 1
visits 9664
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Laravel实现:待付款订单,超48小时自动关闭
PHP技术社区
Original
103 people have browsed it

实现待付款订单超过48小时自动关闭的功能,需要在系统中添加一个定时任务,周期性地检查待付款订单的创建时间,如果订单的创建时间超过了48小时并且订单状态为待付款,则将订单状态更新为已关闭。

以下是一个简单的示例,展示如何使用 Laravel 的任务调度器来实现这个功能:

1 创建一个新的任务:

  1. php artisan make:task ClosePendingOrders

2 打开生成的 ClosePendingOrders 任务文件,例如 app/Tasks/ClosePendingOrders.php,并在 handle 方法中编写任务逻辑:
48小时:Carbon::now()->subHours(48)

  1. namespace App\Tasks;
  2. use Carbon\Carbon;
  3. use App\Models\Order;
  4. use Illuminate\Support\Facades\Log;
  5. class ClosePendingOrders
  6. {
  7. public function handle()
  8. {
  9. $pendingOrders = Order::where('status', 'pending') // 待付款状态
  10. ->where('created_at', '<=', Carbon::now()->subHours(48)) // 超过48小时
  11. ->get();
  12. foreach ($pendingOrders as $order) {
  13. $order->update(['status' => 'closed']); // 更新订单状态为已关闭
  14. Log::info('Closed pending order: '.$order->id);
  15. }
  16. }
  17. }

3 在 app/Console/Kernel.php 文件中的 schedule 方法中,添加任务调度器的调度规则:

  1. protected function schedule(Schedule $schedule)
  2. {
  3. $schedule->job(new ClosePendingOrders)->hourly(); // 将任务设定为每小时执行一次
  4. }

4 运行任务调度器(Cron Job):

  1. php artisan schedule:run

这将会在每个小时的整点时检查待付款订单,如果订单超过48小时,则会将其状态更新为已关闭。请根据你的需求和项目实际情况进行调整。同时,确保你已经正确配置了 Laravel 的任务调度器和日志功能。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post