Parcourir la source

创建共富区会员身份升级任务

sunxbiao il y a 5 mois
Parent
commit
812d2f7121
1 fichiers modifiés avec 47 ajouts et 0 suppressions
  1. 47 0
      crmeb/jobs/SharedProsperityUserLevelUpgradeJob.php

+ 47 - 0
crmeb/jobs/SharedProsperityUserLevelUpgradeJob.php

@@ -0,0 +1,47 @@
1
+<?php
2
+
3
+namespace crmeb\jobs;
4
+
5
+use crmeb\interfaces\JobInterface;
6
+use think\facade\Log;
7
+
8
+class SharedProsperityUserLevelUpgradeJob implements JobInterface
9
+{
10
+
11
+    public function fire($job, $data)
12
+    {
13
+        // 1. 这里是任务执行的业务逻辑
14
+        Log::error('SharedProsperityUserLevelUpgradeJob:' . json_encode($data));
15
+        $uid = $data['uid'] ?? 0;
16
+        if (!$uid) {
17
+            // 数据无效,直接删除任务
18
+            $job->delete();
19
+            return;
20
+        }
21
+
22
+        try {
23
+            // 例如: (new UserLevelService())->upgradeByConsume($uid);
24
+
25
+            // 2. 业务逻辑执行成功后,务必删除任务,防止任务重复执行
26
+            $job->delete();
27
+            // 可以记录日志:info("用户升级任务执行成功: " . $uid);
28
+
29
+        } catch (\Throwable $e) {
30
+            // 3. 执行失败的处理
31
+            // 如果重试次数超过3次,则删除任务并记录错误日志
32
+            if ($job->attempts() > 3) {
33
+                $job->delete();
34
+                // 记录错误日志:error("用户升级任务最终失败: " . $uid . ", 错误:" . $e->getMessage());
35
+            } else {
36
+                // 否则,延迟 10 秒后重新执行
37
+                $job->release(10);
38
+            }
39
+        }
40
+    }
41
+
42
+    public function failed($data)
43
+    {
44
+        // 记录失败日志
45
+        // error("用户升级任务失败: ", $data);
46
+    }
47
+}