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