import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); // ============================================ // 系统账户定义 // 系统账户使用特殊序列号格式: S + 00000 + 序号 (S0000000001 ~ S0000000004) // ============================================ const SYSTEM_ACCOUNTS = [ { userId: BigInt(1), accountSequence: 'S0000000001', // 总部社区 nickname: '总部社区', referralCode: 'HQ000001', status: 'SYSTEM', }, { userId: BigInt(2), accountSequence: 'S0000000002', // 成本费账户 nickname: '成本费账户', referralCode: 'COST0002', status: 'SYSTEM', }, { userId: BigInt(3), accountSequence: 'S0000000003', // 运营费账户 nickname: '运营费账户', referralCode: 'OPER0003', status: 'SYSTEM', }, { userId: BigInt(4), accountSequence: 'S0000000004', // RWAD底池账户 nickname: 'RWAD底池账户', referralCode: 'POOL0004', status: 'SYSTEM', }, ]; async function main() { console.log('Seeding database...'); // 清理现有数据 await prisma.deadLetterEvent.deleteMany(); await prisma.smsCode.deleteMany(); await prisma.userEvent.deleteMany(); await prisma.deviceToken.deleteMany(); await prisma.walletAddress.deleteMany(); await prisma.userDevice.deleteMany(); await prisma.userAccount.deleteMany(); // 初始化账户序列号生成器 (新格式: D + YYMMDD + 5位序号) await prisma.accountSequenceGenerator.deleteMany(); const today = new Date(); const year = String(today.getFullYear()).slice(-2); const month = String(today.getMonth() + 1).padStart(2, '0'); const day = String(today.getDate()).padStart(2, '0'); const dateKey = `${year}${month}${day}`; await prisma.accountSequenceGenerator.create({ data: { id: 1, dateKey: dateKey, currentSequence: 0, }, }); // 创建系统账户 console.log('Creating system accounts...'); for (const account of SYSTEM_ACCOUNTS) { await prisma.userAccount.upsert({ where: { userId: account.userId }, update: account, create: account, }); console.log(` - Created system account: ${account.nickname} (accountSequence=${account.accountSequence})`); } console.log('Database seeded successfully!'); console.log(`- Initialized account sequence generator for date ${dateKey}`); console.log(`- Created ${SYSTEM_ACCOUNTS.length} system accounts (S0000000001-S0000000004)`); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });