From e2ed2c16e7b7a13c8ac0148238eb64818933be0e Mon Sep 17 00:00:00 2001 From: 何书鹏 <heshupeng@bronet.cn> Date: Mon, 14 Feb 2022 11:14:54 +0800 Subject: [PATCH] 待支付取消订单队列 --- application/api/job/BaseJob.php | 23 +++++++++++++++++++++++ application/api/job/OrderAutoOper.php | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 0 deletions(-) create mode 100644 application/api/job/BaseJob.php create mode 100644 application/api/job/OrderAutoOper.php diff --git a/application/api/job/BaseJob.php b/application/api/job/BaseJob.php new file mode 100644 index 0000000..8a0bd7b --- /dev/null +++ b/application/api/job/BaseJob.php @@ -0,0 +1,23 @@ +<?php + +namespace app\api\job; + +use think\queue\Job; + + +/** + * BaseJob 基类 + */ +class BaseJob +{ + + public function failed($data){ + // 记录日志 + \think\Db::name('jobs_failed')->insert([ + 'data' => json_encode($data), + 'createtime' => time(), + 'updatetime' => time() + ]); + } + +} \ No newline at end of file diff --git a/application/api/job/OrderAutoOper.php b/application/api/job/OrderAutoOper.php new file mode 100644 index 0000000..62920b0 --- /dev/null +++ b/application/api/job/OrderAutoOper.php @@ -0,0 +1,33 @@ +<?php + +namespace app\api\job; + +use think\queue\Job; + + +/** + * 发送优惠券自动操作 + */ +class OrderAutoOper extends BaseJob +{ + /** + * 订单自动关闭 + */ + public function autoClose(Job $job, $data){ + try { + $order_id = $data['order_id']; + $order = \app\api\model\Order::get($order_id); + if ($order && $order['pay_status'] == '10' && $order['order_status'] == '10') { + \think\Db::transaction(function () use ($order) { + (new \app\api\controller\Order)->cancelOrderAction($order); + }); + } + + // 删除 job + $job->delete(); + } catch (\Exception $e) { + // 队列执行失败 + \think\Log::write('queue-' . get_class() . '-autoClose' . ':执行失败,错误信息:' . $e->getMessage()); + } + } +} -- libgit2 0.24.0