|
@@ -8,6 +8,7 @@ use App\Models\Project\Project; |
|
@@ -8,6 +8,7 @@ use App\Models\Project\Project; |
|
8
|
use App\Services\ProjectServer;
|
8
|
use App\Services\ProjectServer;
|
|
9
|
use Illuminate\Console\Command;
|
9
|
use Illuminate\Console\Command;
|
|
10
|
use Illuminate\Support\Facades\DB;
|
10
|
use Illuminate\Support\Facades\DB;
|
|
|
|
11
|
+use Illuminate\Support\Facades\Redis;
|
|
11
|
|
12
|
|
|
12
|
class ThumbProjectImage extends Command
|
13
|
class ThumbProjectImage extends Command
|
|
13
|
{
|
14
|
{
|
|
@@ -16,7 +17,7 @@ class ThumbProjectImage extends Command |
|
@@ -16,7 +17,7 @@ class ThumbProjectImage extends Command |
|
16
|
*
|
17
|
*
|
|
17
|
* @var string
|
18
|
* @var string
|
|
18
|
*/
|
19
|
*/
|
|
19
|
- protected $signature = 'thumb_project_image {project_id}';
|
20
|
+ protected $signature = 'thumb_project_image';
|
|
20
|
|
21
|
|
|
21
|
/**
|
22
|
/**
|
|
22
|
* The console command description.
|
23
|
* The console command description.
|
|
@@ -27,60 +28,31 @@ class ThumbProjectImage extends Command |
|
@@ -27,60 +28,31 @@ class ThumbProjectImage extends Command |
|
27
|
|
28
|
|
|
28
|
public function handle()
|
29
|
public function handle()
|
|
29
|
{
|
30
|
{
|
|
30
|
- $project_id = $this->argument('project_id');
|
|
|
|
31
|
-
|
|
|
|
32
|
- if ($project_id > 0) {
|
|
|
|
33
|
- //指定项目
|
|
|
|
34
|
- $this->output('project_id:' . $project_id . ' | start');
|
|
|
|
35
|
-
|
|
|
|
36
|
- $project_info = ProjectServer::useProject($project_id);
|
|
|
|
37
|
-
|
|
|
|
38
|
- if ($project_info) {
|
|
|
|
39
|
- $thumb_w = $project_info->deploy_build->thumb_w ?? 0;
|
|
|
|
40
|
- Product::select(['id', 'project_id', 'thumb'])->chunk(100, function ($products) use ($thumb_w) {
|
|
|
|
41
|
- foreach ($products as $product) {
|
|
|
|
42
|
- $thumb = $product->thumb;
|
|
|
|
43
|
- if (isset($thumb['url']) && $thumb['url']) {
|
|
|
|
44
|
- $new_thumb = thumbImageByUrl($thumb['url'], $thumb_w);
|
|
|
|
45
|
- if ($new_thumb != $thumb['url']) {
|
|
|
|
46
|
- $thumb['url'] = $new_thumb;
|
|
|
|
47
|
- $json_thumb = Arr::a2s($thumb);
|
|
|
|
48
|
- if (strlen($json_thumb) <= 500) {
|
|
|
|
49
|
- $product->timestamps = false;
|
|
|
|
50
|
- $product->thumb = $json_thumb;
|
|
|
|
51
|
- $product->save();
|
|
|
|
52
|
-
|
|
|
|
53
|
- $this->output('project_id:' . $product->project_id . ',product_id:' . $product->id . ' | success');
|
|
|
|
54
|
- }
|
31
|
+ while (true) {
|
|
|
|
32
|
+ $this->start_thumb();
|
|
55
|
}
|
33
|
}
|
|
56
|
}
|
34
|
}
|
|
57
|
- }
|
|
|
|
58
|
- });
|
|
|
|
59
|
|
35
|
|
|
60
|
- DB::disconnect('custom_mysql');
|
36
|
+ public function start_thumb()
|
|
|
|
37
|
+ {
|
|
|
|
38
|
+ $key = 'thumb_project_image';
|
|
|
|
39
|
+ $project_id = Redis::rpop($key);
|
|
|
|
40
|
+ if (empty($project_id)) {
|
|
|
|
41
|
+ sleep(60);
|
|
|
|
42
|
+ return true;
|
|
61
|
}
|
43
|
}
|
|
62
|
|
44
|
|
|
63
|
- $this->output('project_id:' . $project_id . ' | end');
|
|
|
|
64
|
- } else {
|
|
|
|
65
|
- //所有项目
|
|
|
|
66
|
- $projectModel = new Project();
|
|
|
|
67
|
- $list = $projectModel->list(['delete_status' => 0, 'is_upgrade' => 0, 'type' => ['in', [1, 2, 3, 4, 6]]], 'id', ['id'], 'asc');
|
|
|
|
68
|
- foreach ($list as $k => $v) {
|
|
|
|
69
|
- $project_id = $v['id'];
|
|
|
|
70
|
-
|
|
|
|
71
|
$this->output('project_id:' . $project_id . ' | start');
|
45
|
$this->output('project_id:' . $project_id . ' | start');
|
|
72
|
|
46
|
|
|
73
|
$project_info = ProjectServer::useProject($project_id);
|
47
|
$project_info = ProjectServer::useProject($project_id);
|
|
74
|
|
48
|
|
|
75
|
if ($project_info) {
|
49
|
if ($project_info) {
|
|
76
|
$thumb_w = $project_info->deploy_build->thumb_w ?? 0;
|
50
|
$thumb_w = $project_info->deploy_build->thumb_w ?? 0;
|
|
77
|
- Product::select(['id', 'project_id', 'thumb'])->chunk(100, function ($products) use ($thumb_w) {
|
51
|
+ Product::select(['id', 'project_id', 'gallery'])->chunk(100, function ($products) use ($thumb_w) {
|
|
78
|
foreach ($products as $product) {
|
52
|
foreach ($products as $product) {
|
|
79
|
- $thumb = $product->thumb;
|
53
|
+ $thumb = $product['gallery'][0] ?? [];
|
|
80
|
if (isset($thumb['url']) && $thumb['url']) {
|
54
|
if (isset($thumb['url']) && $thumb['url']) {
|
|
81
|
- $new_thumb = thumbImageByUrl($thumb['url'], $thumb_w);
|
|
|
|
82
|
- if ($new_thumb != $thumb['url']) {
|
|
|
|
83
|
- $thumb['url'] = $new_thumb;
|
55
|
+ $thumb['url'] = thumbImageByUrl($thumb['url'], $thumb_w);
|
|
84
|
$json_thumb = Arr::a2s($thumb);
|
56
|
$json_thumb = Arr::a2s($thumb);
|
|
85
|
if (strlen($json_thumb) <= 500) {
|
57
|
if (strlen($json_thumb) <= 500) {
|
|
86
|
$product->timestamps = false;
|
58
|
$product->timestamps = false;
|
|
@@ -91,15 +63,14 @@ class ThumbProjectImage extends Command |
|
@@ -91,15 +63,14 @@ class ThumbProjectImage extends Command |
|
91
|
}
|
63
|
}
|
|
92
|
}
|
64
|
}
|
|
93
|
}
|
65
|
}
|
|
94
|
- }
|
|
|
|
95
|
});
|
66
|
});
|
|
96
|
|
67
|
|
|
97
|
DB::disconnect('custom_mysql');
|
68
|
DB::disconnect('custom_mysql');
|
|
98
|
}
|
69
|
}
|
|
99
|
|
70
|
|
|
100
|
$this->output('project_id:' . $project_id . ' | end');
|
71
|
$this->output('project_id:' . $project_id . ' | end');
|
|
101
|
- }
|
|
|
|
102
|
- }
|
72
|
+
|
|
|
|
73
|
+ return true;
|
|
103
|
}
|
74
|
}
|
|
104
|
|
75
|
|
|
105
|
|
76
|
|