From 33837fd3345274b8be9676f7f823ca19d9778481 Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Fri, 11 Jul 2025 17:50:53 +0800 Subject: [PATCH 1/7] =?UTF-8?q?fix:=20=E6=96=87=E7=AB=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/validate/v1/ArticleValidate.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/admin/validate/v1/ArticleValidate.php b/app/admin/validate/v1/ArticleValidate.php index 9dcc355d..2fbd8963 100644 --- a/app/admin/validate/v1/ArticleValidate.php +++ b/app/admin/validate/v1/ArticleValidate.php @@ -23,9 +23,9 @@ class ArticleValidate extends Validate 'sort' => 'integer', 'recommend' => 'require|in:0,1', 'release_time' => 'dateFormat:Y-m-d H:i:s', - 'seo_title' => 'max:255', - 'seo_keywords' => 'max:255', - 'seo_desc' => 'max:255' + 'seo_title' => 'max:512', + 'seo_keywords' => 'max:512', + 'seo_desc' => 'max:1024' ]; /** @@ -48,8 +48,8 @@ class ArticleValidate extends Validate 'recommend.require' => '推荐状态不能为空', 'recommend.in' => '推荐状态的值必须是0或1', 'release_time.dateFormat' => '发布时间格式不正确', - 'seo_title.max' => 'SEO标题长度不能超过255个字符', - 'seo_keywords.max' => 'SEO关键字长度不能超过255个字符', - 'seo_desc.max' => 'SEO描述长度不能超过255个字符' + 'seo_title.max' => 'SEO标题长度不能超过512个字符', + 'seo_keywords.max' => 'SEO关键字长度不能超过512个字符', + 'seo_desc.max' => 'SEO描述长度不能超过1024个字符' ]; } From 726675a27c4b322d258eaa84fd4d7af6322f2b11 Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Fri, 11 Jul 2025 17:51:07 +0800 Subject: [PATCH 2/7] =?UTF-8?q?fix:=20=E5=BA=95=E9=83=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/index/view/pc/public/footer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/index/view/pc/public/footer.html b/app/index/view/pc/public/footer.html index b5d74b35..0d4fa2e1 100644 --- a/app/index/view/pc/public/footer.html +++ b/app/index/view/pc/public/footer.html @@ -82,7 +82,7 @@
{$basic_config.website_powerby.value} {if condition="!empty($basic_config.website_icp)"} - ({$basic_config.website_icp.value}) + {$basic_config.website_icp.value|raw} {/if}
{/if} From e73d2d802701e4995eca32b0700ffe573f2c645f Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Fri, 11 Jul 2025 17:50:53 +0800 Subject: [PATCH 3/7] =?UTF-8?q?fix:=20=E6=96=87=E7=AB=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/validate/v1/ArticleValidate.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/admin/validate/v1/ArticleValidate.php b/app/admin/validate/v1/ArticleValidate.php index 9dcc355d..2fbd8963 100644 --- a/app/admin/validate/v1/ArticleValidate.php +++ b/app/admin/validate/v1/ArticleValidate.php @@ -23,9 +23,9 @@ class ArticleValidate extends Validate 'sort' => 'integer', 'recommend' => 'require|in:0,1', 'release_time' => 'dateFormat:Y-m-d H:i:s', - 'seo_title' => 'max:255', - 'seo_keywords' => 'max:255', - 'seo_desc' => 'max:255' + 'seo_title' => 'max:512', + 'seo_keywords' => 'max:512', + 'seo_desc' => 'max:1024' ]; /** @@ -48,8 +48,8 @@ class ArticleValidate extends Validate 'recommend.require' => '推荐状态不能为空', 'recommend.in' => '推荐状态的值必须是0或1', 'release_time.dateFormat' => '发布时间格式不正确', - 'seo_title.max' => 'SEO标题长度不能超过255个字符', - 'seo_keywords.max' => 'SEO关键字长度不能超过255个字符', - 'seo_desc.max' => 'SEO描述长度不能超过255个字符' + 'seo_title.max' => 'SEO标题长度不能超过512个字符', + 'seo_keywords.max' => 'SEO关键字长度不能超过512个字符', + 'seo_desc.max' => 'SEO描述长度不能超过1024个字符' ]; } From 5220f99f4cd53b57a9221247ef0e10cca99ffa62 Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Fri, 11 Jul 2025 17:51:07 +0800 Subject: [PATCH 4/7] =?UTF-8?q?fix:=20=E5=BA=95=E9=83=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/index/view/pc/public/footer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/index/view/pc/public/footer.html b/app/index/view/pc/public/footer.html index b5d74b35..0d4fa2e1 100644 --- a/app/index/view/pc/public/footer.html +++ b/app/index/view/pc/public/footer.html @@ -82,7 +82,7 @@
{$basic_config.website_powerby.value} {if condition="!empty($basic_config.website_icp)"} - ({$basic_config.website_icp.value}) + {$basic_config.website_icp.value|raw} {/if}
{/if} From d9abd1ccfce2604efff94bc268860c9114ddda8e Mon Sep 17 00:00:00 2001 From: jsasg Date: Fri, 11 Jul 2025 22:34:32 +0800 Subject: [PATCH 5/7] =?UTF-8?q?fix:=20=E5=9B=BE=E7=89=87=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/Upload.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/admin/controller/v1/Upload.php b/app/admin/controller/v1/Upload.php index b3d23d69..52b94ddc 100644 --- a/app/admin/controller/v1/Upload.php +++ b/app/admin/controller/v1/Upload.php @@ -61,7 +61,7 @@ class Upload $name_rule = fn() => $filename_keep ? $this->filenameGenerator($file) : null; // 处理图片 - $image_manager = ImageManager::imagick(); + $image_manager = ImageManager::gd(); if ($filetype_to == 'original') { $filename = Filesystem::disk('image')->putFile($param['module'], $file, $name_rule()); $image = $image_manager->read('.' . $storage . '/' . $filename); @@ -171,7 +171,6 @@ class Upload 'filesha1' => $image_model->file_sha1 ]); } catch (\Throwable $th) { - dump($th);exit; return error($th->getMessage()); } @@ -185,7 +184,7 @@ class Upload */ private function checkPath($path): string { - $ok = false; + $ok = true; $filename = basename($path); $dirname = dirname($path); if (!is_dir($dirname)) { From ad1a9bdb772739418d540e8454512551cb9f4f4f Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Mon, 14 Jul 2025 11:00:43 +0800 Subject: [PATCH 6/7] =?UTF-8?q?perf:=20=E6=95=B0=E6=8D=AE=E5=90=8C?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/command/DataMigration.php | 110 ++++++++++++++++++++++++---------- 1 file changed, 80 insertions(+), 30 deletions(-) diff --git a/app/command/DataMigration.php b/app/command/DataMigration.php index 8705efc4..b77cd52c 100644 --- a/app/command/DataMigration.php +++ b/app/command/DataMigration.php @@ -60,24 +60,27 @@ class DataMigration extends Command // $this->migrateProductPurchaseLinks(); // 迁移文章 - // $this->migrateArticle([ - // 68 => 10, - // 69 => 11, - // 70 => 12, - // 71 => 13, - // 72 => 14, - // 73 => 15, - // 74 => 16, - // 75 => 17, - // 78 => 19, - // 79 => 20, - // 80 => 21, - // 81 => 22, - // 82 => 23, - // 83 => 24, - // 84 => 25, - // 85 => 26 - // ]); + $this->migrateArticle([ + 16 => 7, + 31 => 9, + 32 => 8, + // 68 => 10, + // 69 => 11, + // 70 => 12, + // 71 => 13, + // 72 => 14, + // 73 => 15, + // 74 => 16, + // 75 => 17, + // 78 => 19, + // 79 => 20, + // 80 => 21, + // 81 => 22, + // 82 => 23, + // 83 => 24, + // 84 => 25, + // 85 => 26 + ]); // 迁移faq // $this->migrateFaq(); @@ -290,14 +293,15 @@ class DataMigration extends Command $old_db = Db::connect('old'); $success_map = []; - $success_arr = include_once(runtime_path() . 'product_success.php'); + $success_arr = []; // include_once(runtime_path() . 'product_success.php'); foreach ($success_arr as $so) { $success_map['p_' . $so['cod_product_id']] = $so; } + $arr = include_once(runtime_path() . 'product_ids.php'); $products = $old_db->name('product') ->where('country_code', 'in', ['ZH', 'US']) - ->where('id', '>', 15789) + ->where('id', 'in', array_unique(array_column($arr, 'cod_product_id'))) ->order(['id' => 'asc']) ->cursor(); @@ -374,7 +378,16 @@ class DataMigration extends Command 'deleted_at' => $v['stat'] == -1 ? date('Y-m-d H:i:s') : null, ]; // 保存产品数据 - $id = Db::name('product')->insertGetId($item); + $prod = Db::name('product') + ->where('language_id', '=', $item['language_id']) + ->where('spu', '=', $item['spu']) + ->find(); + if (!empty($prod)) { + $id = $prod['id']; + Db::name('product')->where('id', '=', $prod['id'])->update($item); + } else { + $id = Db::name('product')->insertGetId($item); + } // 保存产品参数数据 if (!empty($v['product_view'])) { @@ -387,7 +400,21 @@ class DataMigration extends Command 'value' => $p['desc_desc'] ]; } - Db::name('product_params')->insertAll($prarms); + $old_params = Db::name('product_params') + ->where('product_id', '=', $id) + ->select(); + if ($old_params->isEmpty()) { + Db::name('product_params')->insertAll($prarms); + } else { + foreach ($old_params as $op) { + Db::name('product_params') + ->where('product_id', '=', $id) + ->where('name', '=', $op['name']) + ->update([ + 'value' => $op['value'] + ]); + } + } } // 保存sku数据 @@ -444,7 +471,7 @@ class DataMigration extends Command if ($k != 'sort') { $attr_value = $at; if (in_array($k, ['颜色', 'Color'])) { - if ($k == 'Color') $k = '颜色'; + // if ($k == 'Color') $k = '颜色'; $attr_value = '/static/common/images/colors/' . $at . '.png'; } $images[$pkey]['color'] = $at; @@ -468,7 +495,7 @@ class DataMigration extends Command } } $attr_arr = [ - 'attr_id' => $attrs_map[$v['country_code']]['颜色'], + 'attr_id' => $attrs_map[$v['country_code']][$v['country_code'] == 'ZH' ? '颜色' : 'Color'], 'attr_value' => $attr_value, ]; if ( @@ -514,7 +541,7 @@ class DataMigration extends Command $skus[] = [ 'main_image' => $ti['image_url'], 'attrs' => [[ - 'attr_id' => $attrs_map[$v['country_code']]['颜色'], + 'attr_id' => $attrs_map[$v['country_code']][$v['country_code'] == 'ZH' ? '颜色' : 'Color'], 'attr_value' => $ti['image_color'], ]], 'pkey' => $tpkey @@ -575,6 +602,7 @@ class DataMigration extends Command } foreach ($skus as $sku) { + Db::name('product_sku')->where('product_id', '=', $sku['product_id'])->delete(); $sku_id = Db::name('product_sku')->insertGetId([ 'product_id' => $sku['product_id'], 'sku' => $sku['sku']??'', @@ -584,6 +612,7 @@ class DataMigration extends Command if (!empty($sku['attrs'])) { foreach ($sku['attrs'] as $attr) { if (!empty($sku_id)) { + Db::name('product_sku_attr')->where('sku_id', '=', $sku_id)->delete(); Db::name('product_sku_attr')->insert([ 'sku_id' => $sku_id, 'attr_id' => $attr['attr_id'], @@ -601,7 +630,7 @@ class DataMigration extends Command sprintf('["ow_product_id" => %d, "cod_product_id" => %d]'.PHP_EOL, $id, $v['id']), FILE_APPEND ); - $this->println(sprintf('迁移产品ID:%s => %s 【耗时:%s】', $v['id'], 0, round(microtime(true) - $start, 2) . 's')); + $this->println(sprintf('迁移产品ID:%s => %s 【耗时:%s】', $v['id'], $id, round(microtime(true) - $start, 2) . 's')); } catch (\Throwable $th) { Db::rollback(); file_put_contents( @@ -694,9 +723,12 @@ class DataMigration extends Command throw new \Exception('请确认分类ID'); } + // 1634 $article = Db::connect('old') ->name('article') + ->where('country_code', 'in', ['ZH', 'US']) ->where('cid', 'in', array_keys($category_map)) + ->where('id', '=', 351) ->order(['id' => 'asc']) ->cursor(); @@ -745,7 +777,16 @@ class DataMigration extends Command 'release_time' => date('Y-m-d H:i:s', $v['createtime']), 'deleted_at' => $v['stat'] == -1 ? date('Y-m-d H:i:s') : null ]; - $id = Db::name('article')->insertGetId($item); + $ret = Db::name('article') + ->where('language_id', '=', $item['language_id']) + ->where('title', '=', $item['title']) + ->find(); + if (empty($ret)) { + $id = Db::name('article')->insertGetId($item); + } else { + $id = $ret['id']; + Db::name('article')->where('id', '=', $ret['id'])->update($item); + } $this->println(sprintf('迁移文章ID:%s => %s', $v['id'], $id)); } @@ -779,7 +820,15 @@ class DataMigration extends Command 'recommend' => $val['is_home'], 'sort' => $val['sort'] == 9999 ? 0 : $val['sort'] ]; - Db::name('faq')->insert($item); + $ret = Db::name('faq') + ->where('language_id', '=', $item['language_id']) + ->where('question', '=', $item['question']) + ->find(); + if (empty($ret)) { + Db::name('faq')->insert($item); + } else { + Db::name('faq')->where('id', '=', $ret['id'])->update($item); + } } } @@ -929,7 +978,7 @@ class DataMigration extends Command class UploadMannager { - const UPLOAD_BASE_API = 'http://dev.ow.f2b211.com'; + const UPLOAD_BASE_API = 'http://ow.f2b211.com'; const DOWNLOAD_BASE_API = 'http://www.orico.com.cn'; const DOWNLOAD_TEMP_PATH = '/var/www/html/orico-official-website/public/migrate_temp_images'; private $username = 'admin'; @@ -942,7 +991,7 @@ class UploadMannager { // 登录获取token $this->token = $this->getAuthorization(); - $this->maps = include_once(runtime_path() . 'fiber_product_image_mapping.php'); + $this->maps = []; // include_once(runtime_path() . 'fiber_product_image_mapping.php'); } // 下载图片 @@ -1062,6 +1111,7 @@ class UploadMannager print($http_code . PHP_EOL); } + file_put_contents(runtime_path() . 'upload.txt', $response . PHP_EOL, FILE_APPEND); $ret = json_decode($response, true); if (empty($ret)) { throw new \Exception($response); From 63371f513306a6c07b98dff035b1a219a146390a Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Mon, 14 Jul 2025 11:01:14 +0800 Subject: [PATCH 7/7] =?UTF-8?q?fix:=20pc=20=E5=BA=95=E9=83=A8=E5=AF=BC?= =?UTF-8?q?=E8=88=AA=E6=96=B0=E6=A0=87=E7=AD=BE=E9=A1=B5=E6=89=93=E5=BC=80?= =?UTF-8?q?=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/index/view/pc/public/footer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/index/view/pc/public/footer.html b/app/index/view/pc/public/footer.html index 0d4fa2e1..86821864 100644 --- a/app/index/view/pc/public/footer.html +++ b/app/index/view/pc/public/footer.html @@ -40,7 +40,7 @@ {if condition="!empty($vo.children)"} {/if}