From 2fc9e7650a3f531daafd93e9d79a52a9bd1d6f5c 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 d6f5c19616261afd30df108f9109722c26368627 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 @@
{/if}
From 3dd4aa231ecfea3d0f960a6d1c262b34b1a232fb 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 873d873b4ee6e320e536ec25a096ceae27aa2df4 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 @@
{/if}
From d902abe57d5534cc626d07a49f174c6fe0afff51 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 b9ed1a73286e736ae1e9f222c99290be4d4ef73a 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 612fb4421555011877c5a76303520c6f6399a507 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}