From ab65fbb212771df4d6baba83c2e222ceac548d52 Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Wed, 16 Apr 2025 14:19:13 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=95=B0=E6=8D=AE=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/command/DataMigration.php | 141 ++++++++++++++++++++++++++++++---- 1 file changed, 126 insertions(+), 15 deletions(-) diff --git a/app/command/DataMigration.php b/app/command/DataMigration.php index ece50487..61d9918f 100644 --- a/app/command/DataMigration.php +++ b/app/command/DataMigration.php @@ -53,20 +53,49 @@ class DataMigration extends Command // $this->migrateFaq(); // 迁移附件下载 - $this->migrateAttachment([ - 1 => 1, - 2 => 2, - 3 => 3, - 4 => 4, - 5 => 5, - 43 => 6, - 22 => 8, - 24 => 11, - 25 => 12, - 26 => 13, - 44 => 9, - 45 => 10 + // $this->migrateAttachment([ + // 1 => 1, + // 2 => 2, + // 3 => 3, + // 4 => 4, + // 5 => 5, + // 43 => 6, + // 22 => 8, + // 24 => 11, + // 25 => 12, + // 26 => 13, + // 44 => 9, + // 45 => 10 + // ]); + + // 迁移视频分类 + // $this->migrateVideoCategory(); + + // 迁移视频 + $this->migrateVideo([ + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => 5, + 6 => 6, + 7 => 7, + 8 => 8, + 11 => 0, + 36 => 9, + 37 => 10, + 38 => 11, + 39 => 12, + 40 => 13, + 41 => 14, + 42 => 15, + 43 => 16, + 60 => 17, + 62 => 18, + 63 => 19 ]); + $output->writeln('success'); } catch(\Throwable $th) { $output->writeln($th->getMessage() .':' . $th->getLine()); @@ -316,6 +345,78 @@ class DataMigration extends Command $this->println('迁移附件ID:' . $val['id']); } } + + // 迁移视频 + private function migrateVideoCategory() + { + $categorys = Db::connect('old') + ->name('video_category') + ->where('id', '>', 0) + ->where('country_code', 'in', ['ZH', 'US']) + ->order(['id' => 'asc']) + ->cursor(); + + foreach ($categorys as $val) { + $item = [ + 'language_id' => $val['country_code'] == 'ZH' ? 1 : 2, + 'name' => $val['name'], + 'sort' => $val['sort'] == 9999 ? 0 : $val['sort'], + 'is_show' => $val['isshow'] + ]; + Db::name('video_category')->insert($item); + $this->println('迁移视频分类ID:' . $val['id']); + } + } + + // 迁移视频 + private function migrateVideo($category_map = []) + { + $videos = Db::connect('old') + ->name('video') + ->where('id', '>', 844) + ->where('country_code', 'in', ['ZH', 'US']) + ->order(['id' => 'asc']) + ->cursor(); + + $uploadMgr = new UploadMannager(); + foreach ($videos as $val) { + $image = ''; + $image_ret = $uploadMgr->upload($uploadMgr->download($val['picture']), 'image', 'video'); + if ($image_ret['code'] == 0) { + $image = $image_ret['data']['path']; + } else { + $image = $image_ret['msg']; + } + + $video = ''; + if (!empty($val['videourl'])) { + $video = $val['videourl']; + } else { + $video_ret = $uploadMgr->upload($uploadMgr->download($val['videopath']), 'video', 'video'); + if ($video_ret['code'] == 0) { + $video = $video_ret['data']['path']; + } else { + $video = $video_ret['msg']; + } + } + $item = [ + 'language_id' => $val['country_code'] == 'ZH' ? 1 : 2, + 'category_id' => $category_map[$val['cid']], + 'name' => $val['name'], + 'desc' => $val['description'], + 'image' => $image, + 'video' => $video, + 'sort' => $val['sort'] == 9999 ? 0 : $val['sort'], + 'recommend' => $val['recommend'], + 'seo_title' => $val['seo_title'], + 'seo_keywords' => $val['seo_keyword'], + 'seo_desc' => $val['seo_description'], + 'deleted_at' => $val['stat'] == -1 ? date('Y-m-d H:i:s') : null + ]; + Db::name('video')->insert($item); + $this->println('迁移视频ID:' . $val['id']); + } + } } class UploadMannager @@ -390,9 +491,11 @@ class UploadMannager $url_path = '/admapi/v1/attachment/upload'; break; case 'video': - $url_path = "v1/video/$module/upload"; + $url_path = "/admapi/v1/video/$module/upload"; + break; default: - $url_path = 'image'; + $url_path = "/admapi/v1/images/$module/upload"; + break; } $ch = curl_init(self::UPLOAD_BASE_API . $url_path); $post_data = [ @@ -421,6 +524,14 @@ class UploadMannager return $this->upload($file_path, $field_name); } + if ($http_code != 200 && $http_code != 401) { + print($file_path . PHP_EOL); + print($field_name . PHP_EOL); + print(self::UPLOAD_BASE_API . $url_path . PHP_EOL); + print($response . PHP_EOL); + print($http_code . PHP_EOL); + } + $ret = json_decode($response, true); if (empty($ret)) { throw new \Exception($response);