92 lines
2.6 KiB
TypeScript
92 lines
2.6 KiB
TypeScript
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();
|
|
});
|