From f2630ed01c7447884cd85b85772802ef53d8dc7a Mon Sep 17 00:00:00 2001 From: dmy Date: Mon, 12 Jan 2026 15:29:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/scripts/update-source.ts | 57 ++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/scripts/update-source.ts diff --git a/package.json b/package.json index c78f9ae..84186aa 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "jest --config ./test/jest-e2e.json", "crawl": "ts-node -r tsconfig-paths/register src/scripts/crawl.ts", + "update-source": "ts-node -r tsconfig-paths/register src/scripts/update-source.ts", "web":"npm --prefix frontend run build" }, "dependencies": { diff --git a/src/scripts/update-source.ts b/src/scripts/update-source.ts new file mode 100644 index 0000000..a70f551 --- /dev/null +++ b/src/scripts/update-source.ts @@ -0,0 +1,57 @@ +import { NestFactory } from '@nestjs/core'; +import { AppModule } from '../app.module'; +import { getRepositoryToken } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { BidItem } from '../bids/entities/bid-item.entity'; +import { CustomLogger } from '../common/logger/logger.service'; + +async function updateSource() { + const app = await NestFactory.createApplicationContext(AppModule); + + // 设置自定义 logger + const logger = await app.resolve(CustomLogger); + app.useLogger(logger); + logger.setContext('UpdateSourceScript'); + + try { + // 获取 BidItem 的 repository + const bidItemRepository = app.get>(getRepositoryToken(BidItem)); + + const oldSource = '北京电力交易平台'; + const newSource = '北京京能电子商务平台'; + + logger.log(`开始更新 source 字段: "${oldSource}" -> "${newSource}"`); + + // 查找需要更新的记录数量 + const count = await bidItemRepository.count({ + where: { source: oldSource }, + }); + + logger.log(`找到 ${count} 条需要更新的记录`); + + if (count === 0) { + logger.log('没有需要更新的记录'); + await app.close(); + process.exit(0); + } + + // 执行更新 + const result = await bidItemRepository + .createQueryBuilder() + .update(BidItem) + .set({ source: newSource }) + .where('source = :oldSource', { oldSource }) + .execute(); + + logger.log(`成功更新 ${result.affected} 条记录`); + + await app.close(); + process.exit(0); + } catch (error) { + logger.error('更新失败:', error); + await app.close(); + process.exit(1); + } +} + +updateSource();