|
@@ -9,11 +9,12 @@ use App\Helper\Translate; |
|
@@ -9,11 +9,12 @@ use App\Helper\Translate; |
|
9
|
use App\Models\Ai\AiCommand;
|
9
|
use App\Models\Ai\AiCommand;
|
|
10
|
use App\Models\Mail\Mail;
|
10
|
use App\Models\Mail\Mail;
|
|
11
|
use App\Models\Project\DeployOptimize;
|
11
|
use App\Models\Project\DeployOptimize;
|
|
|
|
12
|
+use App\Models\Project\ProjectUpdateTdk;
|
|
12
|
use App\Models\User\User;
|
13
|
use App\Models\User\User;
|
|
13
|
use App\Services\ProjectServer;
|
14
|
use App\Services\ProjectServer;
|
|
14
|
use Illuminate\Console\Command;
|
15
|
use Illuminate\Console\Command;
|
|
|
|
16
|
+use Illuminate\Support\Facades\Cache;
|
|
15
|
use Illuminate\Support\Facades\DB;
|
17
|
use Illuminate\Support\Facades\DB;
|
|
16
|
-use Illuminate\Support\Facades\Redis;
|
|
|
|
17
|
|
18
|
|
|
18
|
/**
|
19
|
/**
|
|
19
|
* 初始化项目
|
20
|
* 初始化项目
|
|
@@ -132,31 +133,30 @@ class UpdateSeoTdk extends Command |
|
@@ -132,31 +133,30 @@ class UpdateSeoTdk extends Command |
|
132
|
public function handle()
|
133
|
public function handle()
|
|
133
|
{
|
134
|
{
|
|
134
|
while (true) {
|
135
|
while (true) {
|
|
135
|
- $project_id = Redis::rpop('updateSeoTdk');
|
136
|
+ $task = ProjectUpdateTdk::getPendingTask();
|
|
|
|
137
|
+ $project_id = $task->project_id;
|
|
136
|
if (!$project_id) {
|
138
|
if (!$project_id) {
|
|
137
|
- sleep(2);
|
139
|
+ sleep(10);
|
|
138
|
continue;
|
140
|
continue;
|
|
139
|
}
|
141
|
}
|
|
140
|
echo date('Y-m-d H:i:s') . ' start project_id: ' . $project_id . PHP_EOL;
|
142
|
echo date('Y-m-d H:i:s') . ' start project_id: ' . $project_id . PHP_EOL;
|
|
141
|
try {
|
143
|
try {
|
|
142
|
ProjectServer::useProject($project_id);
|
144
|
ProjectServer::useProject($project_id);
|
|
143
|
- $this->seo_tdk($project_id);
|
145
|
+ $this->seo_tdk($project_id, $task->id);
|
|
144
|
DB::disconnect('custom_mysql');
|
146
|
DB::disconnect('custom_mysql');
|
|
145
|
}catch (\Exception $e){
|
147
|
}catch (\Exception $e){
|
|
146
|
echo date('Y-m-d H:i:s') . 'line: '. $e->getLine() .' error: ' . $project_id . '->' . $e->getMessage() . PHP_EOL;
|
148
|
echo date('Y-m-d H:i:s') . 'line: '. $e->getLine() .' error: ' . $project_id . '->' . $e->getMessage() . PHP_EOL;
|
|
|
|
149
|
+ ProjectUpdateTdk::retry($task->id, $e->getMessage());
|
|
147
|
}
|
150
|
}
|
|
148
|
echo date('Y-m-d H:i:s') . ' end: ' . $project_id . PHP_EOL;
|
151
|
echo date('Y-m-d H:i:s') . ' end: ' . $project_id . PHP_EOL;
|
|
149
|
}
|
152
|
}
|
|
150
|
}
|
153
|
}
|
|
151
|
|
154
|
|
|
152
|
- public function seo_tdk($project_id)
|
155
|
+ public function seo_tdk($project_id, $task_id)
|
|
153
|
{
|
156
|
{
|
|
154
|
- $data = [];
|
|
|
|
155
|
- $update = [
|
|
|
|
156
|
- 'created_at'=>date('Y-m-d H:i:s'),
|
|
|
|
157
|
- 'updated_at'=>date('Y-m-d H:i:s'),
|
|
|
|
158
|
- 'project_id'=>$project_id,
|
|
|
|
159
|
- ];//更新统计
|
157
|
+
|
|
|
|
158
|
+ //更新统计
|
|
|
|
159
|
+ $update = [];
|
|
160
|
$ai_commands = AiCommand::where('is_batch', 1)->select('key', 'scene', 'ai')->get()->toArray();
|
160
|
$ai_commands = AiCommand::where('is_batch', 1)->select('key', 'scene', 'ai')->get()->toArray();
|
|
161
|
$ai_commands = Arr::setValueToKey($ai_commands, 'key');
|
161
|
$ai_commands = Arr::setValueToKey($ai_commands, 'key');
|
|
162
|
foreach ($this->maps as $table => $map) {
|
162
|
foreach ($this->maps as $table => $map) {
|
|
@@ -186,6 +186,15 @@ class UpdateSeoTdk extends Command |
|
@@ -186,6 +186,15 @@ class UpdateSeoTdk extends Command |
|
186
|
echo $field.'已有值 跳过' . PHP_EOL;
|
186
|
echo $field.'已有值 跳过' . PHP_EOL;
|
|
187
|
continue;
|
187
|
continue;
|
|
188
|
}
|
188
|
}
|
|
|
|
189
|
+
|
|
|
|
190
|
+ //缓存 在处理的 项目 数据 id
|
|
|
|
191
|
+ $cache_key = "seo_tdk_{$project_id}_{$table}_{$v['id']}";
|
|
|
|
192
|
+ if(Cache::get($cache_key)){
|
|
|
|
193
|
+ echo '其他进程在处理' . PHP_EOL;
|
|
|
|
194
|
+ continue;
|
|
|
|
195
|
+ }
|
|
|
|
196
|
+ Cache::put($cache_key, 1, 120);
|
|
|
|
197
|
+
|
|
189
|
//AI生成
|
198
|
//AI生成
|
|
190
|
if (!empty($ai_commands[$ai_key]['ai'])) {
|
199
|
if (!empty($ai_commands[$ai_key]['ai'])) {
|
|
191
|
$prompt = $this->getPrompt($project_id, $ai_commands[$ai_key]['ai'], $table, $v);
|
200
|
$prompt = $this->getPrompt($project_id, $ai_commands[$ai_key]['ai'], $table, $v);
|
|
@@ -262,10 +271,9 @@ class UpdateSeoTdk extends Command |
|
@@ -262,10 +271,9 @@ class UpdateSeoTdk extends Command |
|
262
|
}
|
271
|
}
|
|
263
|
DB::connection('custom_mysql')->table($table)->where(['id' => $v['id']])->update($data);
|
272
|
DB::connection('custom_mysql')->table($table)->where(['id' => $v['id']])->update($data);
|
|
264
|
}
|
273
|
}
|
|
265
|
- $update[$table] = json_encode($update[$table]);
|
|
|
|
266
|
}
|
274
|
}
|
|
267
|
}
|
275
|
}
|
|
268
|
- DB::table('gl_project_update_tdk')->insert($update);
|
276
|
+ ProjectUpdateTdk::finish($task_id, $update);
|
|
269
|
}
|
277
|
}
|
|
270
|
|
278
|
|
|
271
|
public function getPrompt($project_id, $prompt, $table, $data){
|
279
|
public function getPrompt($project_id, $prompt, $table, $data){
|