45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
/**
|
|
* 将 common_product_item.benefit_amount 同步为与 price 相同(全额好客权益)。
|
|
* 用法:pnpm db:sync-benefit
|
|
*/
|
|
import { PrismaClient } from '@prisma/client';
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
async function main() {
|
|
const products = await prisma.commonProductItem.findMany({
|
|
select: { id: true, skuCode: true, name: true, price: true, benefitAmount: true },
|
|
orderBy: { sortOrder: 'asc' },
|
|
});
|
|
|
|
if (products.length === 0) {
|
|
console.log('No products found. Run pnpm prisma:seed first.');
|
|
return;
|
|
}
|
|
|
|
console.log(`Syncing benefit_amount = price for ${products.length} product(s)...\n`);
|
|
|
|
for (const p of products) {
|
|
const price = Number(p.price);
|
|
const before = p.benefitAmount != null ? Number(p.benefitAmount) : null;
|
|
|
|
await prisma.commonProductItem.update({
|
|
where: { id: p.id },
|
|
data: { benefitAmount: p.price },
|
|
});
|
|
|
|
const beforeLabel = before == null ? 'NULL' : `¥${before}`;
|
|
console.log(` ${p.skuCode} ${p.name}`);
|
|
console.log(` benefit: ${beforeLabel} → ¥${price}`);
|
|
}
|
|
|
|
console.log('\nDone.');
|
|
}
|
|
|
|
main()
|
|
.catch((err) => {
|
|
console.error(err);
|
|
process.exit(1);
|
|
})
|
|
.finally(() => prisma.$disconnect());
|