更新政府端和银行端
This commit is contained in:
152
bank-backend/scripts/init-db.js
Normal file
152
bank-backend/scripts/init-db.js
Normal file
@@ -0,0 +1,152 @@
|
||||
/**
|
||||
* 数据库初始化脚本
|
||||
* @file init-db.js
|
||||
* @description 初始化银行系统数据库
|
||||
*/
|
||||
const { sequelize } = require('../config/database');
|
||||
const { User, Role, Account, Transaction } = require('../models');
|
||||
const bcrypt = require('bcryptjs');
|
||||
|
||||
async function initDatabase() {
|
||||
try {
|
||||
console.log('🔄 开始初始化银行系统数据库...');
|
||||
|
||||
// 测试数据库连接
|
||||
await sequelize.authenticate();
|
||||
console.log('✅ 数据库连接成功');
|
||||
|
||||
// 同步数据库模型
|
||||
await sequelize.sync({ force: true });
|
||||
console.log('✅ 数据库表创建成功');
|
||||
|
||||
// 创建初始角色
|
||||
console.log('🔄 创建初始角色...');
|
||||
const roles = await Role.bulkCreate([
|
||||
{
|
||||
name: 'admin',
|
||||
display_name: '系统管理员',
|
||||
description: '拥有系统所有权限',
|
||||
level: 100,
|
||||
is_system: true
|
||||
},
|
||||
{
|
||||
name: 'manager',
|
||||
display_name: '银行经理',
|
||||
description: '拥有银行管理权限',
|
||||
level: 80,
|
||||
is_system: false
|
||||
},
|
||||
{
|
||||
name: 'teller',
|
||||
display_name: '银行柜员',
|
||||
description: '拥有基本业务操作权限',
|
||||
level: 60,
|
||||
is_system: false
|
||||
},
|
||||
{
|
||||
name: 'user',
|
||||
display_name: '普通用户',
|
||||
description: '拥有基本用户权限',
|
||||
level: 20,
|
||||
is_system: false
|
||||
}
|
||||
]);
|
||||
console.log('✅ 初始角色创建成功');
|
||||
|
||||
// 创建初始管理员用户
|
||||
console.log('🔄 创建初始管理员用户...');
|
||||
const adminUser = await User.create({
|
||||
username: 'admin',
|
||||
email: 'admin@bank.com',
|
||||
password: 'Admin123456',
|
||||
phone: '13800138000',
|
||||
real_name: '系统管理员',
|
||||
id_card: '110101199001011234',
|
||||
role_id: roles[0].id, // admin角色
|
||||
status: 'active'
|
||||
});
|
||||
console.log('✅ 初始管理员用户创建成功');
|
||||
|
||||
// 创建测试用户
|
||||
console.log('🔄 创建测试用户...');
|
||||
const testUser = await User.create({
|
||||
username: 'testuser',
|
||||
email: 'test@bank.com',
|
||||
password: 'Test123456',
|
||||
phone: '13800138001',
|
||||
real_name: '测试用户',
|
||||
id_card: '110101199001011235',
|
||||
role_id: roles[3].id, // user角色
|
||||
status: 'active'
|
||||
});
|
||||
console.log('✅ 测试用户创建成功');
|
||||
|
||||
// 为测试用户创建账户
|
||||
console.log('🔄 为测试用户创建账户...');
|
||||
const testAccount = await Account.create({
|
||||
account_number: '001' + Date.now().toString().slice(-8) + '0001',
|
||||
user_id: testUser.id,
|
||||
account_type: 'savings',
|
||||
balance: 100000, // 1000元
|
||||
available_balance: 100000,
|
||||
frozen_amount: 0,
|
||||
currency: 'CNY',
|
||||
interest_rate: 0.035, // 3.5%年利率
|
||||
status: 'active'
|
||||
});
|
||||
console.log('✅ 测试账户创建成功');
|
||||
|
||||
// 创建一些示例交易记录
|
||||
console.log('🔄 创建示例交易记录...');
|
||||
const transactions = await Transaction.bulkCreate([
|
||||
{
|
||||
transaction_number: 'TXN' + Date.now() + '0001',
|
||||
account_id: testAccount.id,
|
||||
transaction_type: 'deposit',
|
||||
amount: 100000,
|
||||
balance_before: 0,
|
||||
balance_after: 100000,
|
||||
description: '开户存款',
|
||||
status: 'completed',
|
||||
processed_at: new Date()
|
||||
},
|
||||
{
|
||||
transaction_number: 'TXN' + Date.now() + '0002',
|
||||
account_id: testAccount.id,
|
||||
transaction_type: 'interest',
|
||||
amount: 292, // 约1元利息
|
||||
balance_before: 100000,
|
||||
balance_after: 100292,
|
||||
description: '定期利息',
|
||||
status: 'completed',
|
||||
processed_at: new Date()
|
||||
}
|
||||
]);
|
||||
console.log('✅ 示例交易记录创建成功');
|
||||
|
||||
console.log('\n🎉 银行系统数据库初始化完成!');
|
||||
console.log('\n📋 初始数据信息:');
|
||||
console.log(`👤 管理员账户: admin / Admin123456`);
|
||||
console.log(`👤 测试用户: testuser / Test123456`);
|
||||
console.log(`🏦 测试账户: ${testAccount.account_number}`);
|
||||
console.log(`💰 初始余额: ${(testAccount.balance / 100).toFixed(2)} 元`);
|
||||
console.log('\n🔗 数据库连接信息:');
|
||||
console.log(` 主机: ${process.env.DB_HOST || 'localhost'}`);
|
||||
console.log(` 端口: ${process.env.DB_PORT || 3306}`);
|
||||
console.log(` 数据库: ${process.env.DB_NAME || 'bank_management'}`);
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 数据库初始化失败:', error);
|
||||
process.exit(1);
|
||||
} finally {
|
||||
await sequelize.close();
|
||||
console.log('📊 数据库连接已关闭');
|
||||
}
|
||||
}
|
||||
|
||||
// 运行初始化
|
||||
if (require.main === module) {
|
||||
initDatabase();
|
||||
}
|
||||
|
||||
module.exports = initDatabase;
|
||||
Reference in New Issue
Block a user