perf: 数据同步

This commit is contained in:
2025-07-14 11:00:43 +08:00
parent bb8f42774f
commit b9ed1a7328

View File

@@ -60,24 +60,27 @@ class DataMigration extends Command
// $this->migrateProductPurchaseLinks(); // $this->migrateProductPurchaseLinks();
// 迁移文章 // 迁移文章
// $this->migrateArticle([ $this->migrateArticle([
// 68 => 10, 16 => 7,
// 69 => 11, 31 => 9,
// 70 => 12, 32 => 8,
// 71 => 13, // 68 => 10,
// 72 => 14, // 69 => 11,
// 73 => 15, // 70 => 12,
// 74 => 16, // 71 => 13,
// 75 => 17, // 72 => 14,
// 78 => 19, // 73 => 15,
// 79 => 20, // 74 => 16,
// 80 => 21, // 75 => 17,
// 81 => 22, // 78 => 19,
// 82 => 23, // 79 => 20,
// 83 => 24, // 80 => 21,
// 84 => 25, // 81 => 22,
// 85 => 26 // 82 => 23,
// ]); // 83 => 24,
// 84 => 25,
// 85 => 26
]);
// 迁移faq // 迁移faq
// $this->migrateFaq(); // $this->migrateFaq();
@@ -290,14 +293,15 @@ class DataMigration extends Command
$old_db = Db::connect('old'); $old_db = Db::connect('old');
$success_map = []; $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) { foreach ($success_arr as $so) {
$success_map['p_' . $so['cod_product_id']] = $so; $success_map['p_' . $so['cod_product_id']] = $so;
} }
$arr = include_once(runtime_path() . 'product_ids.php');
$products = $old_db->name('product') $products = $old_db->name('product')
->where('country_code', 'in', ['ZH', 'US']) ->where('country_code', 'in', ['ZH', 'US'])
->where('id', '>', 15789) ->where('id', 'in', array_unique(array_column($arr, 'cod_product_id')))
->order(['id' => 'asc']) ->order(['id' => 'asc'])
->cursor(); ->cursor();
@@ -374,7 +378,16 @@ class DataMigration extends Command
'deleted_at' => $v['stat'] == -1 ? date('Y-m-d H:i:s') : null, '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'])) { if (!empty($v['product_view'])) {
@@ -387,7 +400,21 @@ class DataMigration extends Command
'value' => $p['desc_desc'] '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数据 // 保存sku数据
@@ -444,7 +471,7 @@ class DataMigration extends Command
if ($k != 'sort') { if ($k != 'sort') {
$attr_value = $at; $attr_value = $at;
if (in_array($k, ['颜色', 'Color'])) { if (in_array($k, ['颜色', 'Color'])) {
if ($k == 'Color') $k = '颜色'; // if ($k == 'Color') $k = '颜色';
$attr_value = '/static/common/images/colors/' . $at . '.png'; $attr_value = '/static/common/images/colors/' . $at . '.png';
} }
$images[$pkey]['color'] = $at; $images[$pkey]['color'] = $at;
@@ -468,7 +495,7 @@ class DataMigration extends Command
} }
} }
$attr_arr = [ $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, 'attr_value' => $attr_value,
]; ];
if ( if (
@@ -514,7 +541,7 @@ class DataMigration extends Command
$skus[] = [ $skus[] = [
'main_image' => $ti['image_url'], 'main_image' => $ti['image_url'],
'attrs' => [[ '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'], 'attr_value' => $ti['image_color'],
]], ]],
'pkey' => $tpkey 'pkey' => $tpkey
@@ -575,6 +602,7 @@ class DataMigration extends Command
} }
foreach ($skus as $sku) { foreach ($skus as $sku) {
Db::name('product_sku')->where('product_id', '=', $sku['product_id'])->delete();
$sku_id = Db::name('product_sku')->insertGetId([ $sku_id = Db::name('product_sku')->insertGetId([
'product_id' => $sku['product_id'], 'product_id' => $sku['product_id'],
'sku' => $sku['sku']??'', 'sku' => $sku['sku']??'',
@@ -584,6 +612,7 @@ class DataMigration extends Command
if (!empty($sku['attrs'])) { if (!empty($sku['attrs'])) {
foreach ($sku['attrs'] as $attr) { foreach ($sku['attrs'] as $attr) {
if (!empty($sku_id)) { if (!empty($sku_id)) {
Db::name('product_sku_attr')->where('sku_id', '=', $sku_id)->delete();
Db::name('product_sku_attr')->insert([ Db::name('product_sku_attr')->insert([
'sku_id' => $sku_id, 'sku_id' => $sku_id,
'attr_id' => $attr['attr_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']), sprintf('["ow_product_id" => %d, "cod_product_id" => %d]'.PHP_EOL, $id, $v['id']),
FILE_APPEND 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) { } catch (\Throwable $th) {
Db::rollback(); Db::rollback();
file_put_contents( file_put_contents(
@@ -694,9 +723,12 @@ class DataMigration extends Command
throw new \Exception('请确认分类ID'); throw new \Exception('请确认分类ID');
} }
// 1634
$article = Db::connect('old') $article = Db::connect('old')
->name('article') ->name('article')
->where('country_code', 'in', ['ZH', 'US'])
->where('cid', 'in', array_keys($category_map)) ->where('cid', 'in', array_keys($category_map))
->where('id', '=', 351)
->order(['id' => 'asc']) ->order(['id' => 'asc'])
->cursor(); ->cursor();
@@ -745,7 +777,16 @@ class DataMigration extends Command
'release_time' => date('Y-m-d H:i:s', $v['createtime']), 'release_time' => date('Y-m-d H:i:s', $v['createtime']),
'deleted_at' => $v['stat'] == -1 ? date('Y-m-d H:i:s') : null '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)); $this->println(sprintf('迁移文章ID%s => %s', $v['id'], $id));
} }
@@ -779,7 +820,15 @@ class DataMigration extends Command
'recommend' => $val['is_home'], 'recommend' => $val['is_home'],
'sort' => $val['sort'] == 9999 ? 0 : $val['sort'] '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 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_BASE_API = 'http://www.orico.com.cn';
const DOWNLOAD_TEMP_PATH = '/var/www/html/orico-official-website/public/migrate_temp_images'; const DOWNLOAD_TEMP_PATH = '/var/www/html/orico-official-website/public/migrate_temp_images';
private $username = 'admin'; private $username = 'admin';
@@ -942,7 +991,7 @@ class UploadMannager
{ {
// 登录获取token // 登录获取token
$this->token = $this->getAuthorization(); $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); print($http_code . PHP_EOL);
} }
file_put_contents(runtime_path() . 'upload.txt', $response . PHP_EOL, FILE_APPEND);
$ret = json_decode($response, true); $ret = json_decode($response, true);
if (empty($ret)) { if (empty($ret)) {
throw new \Exception($response); throw new \Exception($response);