This commit is contained in:
董海洋
2026-05-24 19:33:45 +08:00
parent ab0b7b4644
commit f2a9fec405
4 changed files with 281 additions and 27 deletions
+101
View File
@@ -0,0 +1,101 @@
const mysql = require('mysql2/promise');
const config = require('../config/database');
const { DOMAIN_CONFIG } = require('../config/domain');
const { toRelativeUrl } = require('../utils/image-url');
async function convertToRelativeUrls() {
try {
const connection = await mysql.createConnection(config);
console.log('✅ 数据库连接成功\n');
console.log('🔍 检查数据库中的图片URL...');
const [goods] = await connection.execute('SELECT id, images FROM goods');
console.log(`找到 ${goods.length} 条商品记录\n`);
let updatedCount = 0;
// 更新图片URL
for (const item of goods) {
if (item.images) {
let oldImages = item.images;
let newImages = oldImages;
try {
// 尝试解析JSON
let imagesArray = JSON.parse(oldImages);
// 转换每个URL
let convertedArray = imagesArray.map(url => toRelativeUrl(url));
newImages = JSON.stringify(convertedArray);
if (oldImages !== newImages) {
await connection.execute(
'UPDATE goods SET images = ? WHERE id = ?',
[newImages, item.id]
);
console.log(`商品ID ${item.id}:`);
console.log(` 旧: ${oldImages}`);
console.log(` 新: ${newImages}`);
console.log('---');
updatedCount++;
}
} catch (e) {
// 如果不是有效JSON,直接尝试转换
let converted = toRelativeUrl(oldImages);
if (converted !== oldImages) {
newImages = converted;
await connection.execute(
'UPDATE goods SET images = ? WHERE id = ?',
[newImages, item.id]
);
console.log(`商品ID ${item.id} (非JSON格式):`);
console.log(` 旧: ${oldImages}`);
console.log(` 新: ${newImages}`);
console.log('---');
updatedCount++;
}
}
}
}
// 检查积分商品
const [pointsGoods] = await connection.execute('SELECT id, images FROM points_goods');
if (pointsGoods.length > 0) {
console.log(`\n检查 ${pointsGoods.length} 条积分商品记录...`);
for (const item of pointsGoods) {
if (item.images) {
let oldImages = item.images;
let newImages = oldImages;
try {
let imagesArray = JSON.parse(oldImages);
let convertedArray = imagesArray.map(url => toRelativeUrl(url));
newImages = JSON.stringify(convertedArray);
} catch (e) {
newImages = toRelativeUrl(oldImages);
}
if (oldImages !== newImages) {
await connection.execute(
'UPDATE points_goods SET images = ? WHERE id = ?',
[newImages, item.id]
);
console.log(`积分商品ID ${item.id}: 已更新`);
updatedCount++;
}
}
}
}
await connection.end();
console.log(`\n✅ 完成!共更新了 ${updatedCount} 条记录`);
} catch (error) {
console.error('❌ 更新失败:', error);
process.exit(1);
}
}
convertToRelativeUrls();