Bladeren bron

更新 README.md

龙飞 10 maanden geleden
bovenliggende
commit
cb36284ed3
1 gewijzigde bestanden met toevoegingen van 125 en 0 verwijderingen
  1. 125
    0
      README.md

+ 125
- 0
README.md Bestand weergeven

@@ -0,0 +1,125 @@
1
+### 使用方式
2
+
3
+步骤一: 
4
+```
5
+composer require e282486518/laravel-table-sync
6
+```
7
+
8
+步骤二: 继承服务
9
+
10
+```php
11
+<?php
12
+
13
+namespace App\Services;
14
+
15
+use App\Models\Meeting;
16
+use e282486518\LaravelTableSync\SyncService;
17
+
18
+/**
19
+ * 增量同步数据到c_meeting表
20
+ */
21
+class MeetingSyncService extends SyncService
22
+{
23
+    // A服务器API地址
24
+    protected string $apiUrl = 'https://api.xxx.com/api/meeting/sync';
25
+
26
+    // API令牌
27
+    protected string $apiToken = 'xxxxxx';
28
+
29
+    /**
30
+     * 更新数据
31
+     * @param $id
32
+     * @return void
33
+     */
34
+    protected function afterUpdate($id): void {
35
+        Meeting::getOne($id, true);
36
+    }
37
+
38
+}
39
+
40
+```
41
+
42
+步骤三: 在命令行中调用
43
+
44
+```php
45
+    public function handle() {
46
+        $serv = new MeetingSyncService(new Meeting());
47
+        if ($serv->sync()) {
48
+            echo "更新成功...\n";
49
+        } else {
50
+            echo "更新出错...\n";
51
+        }
52
+        return Command::SUCCESS;
53
+    }
54
+```
55
+
56
+
57
+### 服务端代码
58
+
59
+```php
60
+<?php
61
+
62
+namespace App\Http\Controllers;
63
+
64
+use App\Models\Meeting;
65
+use Illuminate\Http\Request;
66
+use Illuminate\Validation\ValidationException;
67
+
68
+class MeetingController extends Controller
69
+{
70
+
71
+    /**
72
+     * 增量更新数据
73
+     * @param Request $request
74
+     * @return \Illuminate\Http\JsonResponse
75
+     */
76
+    public function sync(Request $request)
77
+    {
78
+        // 最后更新时间
79
+        try {
80
+            $request->validate([
81
+                'time' => 'required|date_format:Y-m-d H:i:s',
82
+                'year' => 'date_format:Y',
83
+                'catid' => 'integer',
84
+            ]);
85
+        } catch (ValidationException $e) {
86
+            // 自定义返回内容
87
+            return response()->json([
88
+                'err' => 1,
89
+                'msg' => $e->errors(),
90
+                'data' => []
91
+            ], 200);
92
+        }
93
+        $time = $request->input('time');
94
+        $year = $request->input('year', 0);
95
+        $catid = $request->input('catid', 0);
96
+        // 获取更新的数据
97
+        $model = Meeting::query()->where('updated_at', '>', $time);
98
+        if (!empty($year)) {
99
+            $model->where('year', $year);
100
+        }
101
+        if (!empty($catid)) {
102
+            $model->where('cat_id', $catid);
103
+        }
104
+        $meetings = $model->orderBy('updated_at', 'desc')->get();
105
+        // 最后更新时间
106
+        if (!$meetings->isEmpty()) {
107
+            $latestUpdate = $meetings->first()->updated_at->format('Y-m-d H:i:s');
108
+        } else {
109
+            $latestUpdate = $time;
110
+        }
111
+        // 返回
112
+        return response()->json([
113
+            'err' => 0,
114
+            'msg' => 'success',
115
+            'data' => $meetings,
116
+            'latest_update' => $latestUpdate
117
+        ])->setEncodingOptions(320);
118
+    }
119
+}
120
+
121
+
122
+```
123
+
124
+
125
+