添加银行政府后端接口

This commit is contained in:
2025-09-25 15:53:44 +08:00
parent b17bdcc24c
commit 5b6b7e0a96
60 changed files with 5345 additions and 1920 deletions

View File

@@ -0,0 +1,173 @@
const { sequelize, Employee } = require('../models');
/**
* 添加员工测试数据
*/
async function seedEmployees() {
try {
console.log('开始添加员工测试数据...');
// 检查数据库连接
await sequelize.authenticate();
console.log('✅ 银行系统数据库连接成功');
// 清空现有员工数据
await Employee.destroy({
where: {},
force: true
});
console.log('✅ 清空现有员工数据');
// 员工测试数据
const employeesData = [
{
employeeNumber: 'EMP001',
name: '刘超',
phone: '15012341368',
email: 'liuchao@bank.com',
password: '123456',
isLoanSpecialist: false,
department: '风险管理部',
position: '风险专员',
status: 'active'
},
{
employeeNumber: 'EMP002',
name: '张明',
phone: '13812345678',
email: 'zhangming@bank.com',
password: '123456',
isLoanSpecialist: true,
department: '信贷部',
position: '贷款专员',
status: 'active'
},
{
employeeNumber: 'EMP003',
name: '李红',
phone: '13987654321',
email: 'lihong@bank.com',
password: '123456',
isLoanSpecialist: true,
department: '信贷部',
position: '高级贷款专员',
status: 'active'
},
{
employeeNumber: 'EMP004',
name: '王强',
phone: '13611111111',
email: 'wangqiang@bank.com',
password: '123456',
isLoanSpecialist: false,
department: '运营部',
position: '运营专员',
status: 'active'
},
{
employeeNumber: 'EMP005',
name: '陈静',
phone: '13722222222',
email: 'chenjing@bank.com',
password: '123456',
isLoanSpecialist: true,
department: '信贷部',
position: '贷款专员',
status: 'inactive'
},
{
employeeNumber: 'EMP006',
name: '赵磊',
phone: '13833333333',
email: 'zhaolei@bank.com',
password: '123456',
isLoanSpecialist: false,
department: '技术部',
position: '系统管理员',
status: 'active'
},
{
employeeNumber: 'EMP007',
name: '孙丽',
phone: '13944444444',
email: 'sunli@bank.com',
password: '123456',
isLoanSpecialist: true,
department: '信贷部',
position: '贷款专员',
status: 'locked'
},
{
employeeNumber: 'EMP008',
name: '周涛',
phone: '13555555555',
email: 'zhoutao@bank.com',
password: '123456',
isLoanSpecialist: false,
department: '财务部',
position: '财务专员',
status: 'active'
},
{
employeeNumber: 'EMP009',
name: '吴敏',
phone: '13466666666',
email: 'wumin@bank.com',
password: '123456',
isLoanSpecialist: true,
department: '信贷部',
position: '贷款专员',
status: 'active'
},
{
employeeNumber: 'EMP010',
name: '郑华',
phone: '13377777777',
email: 'zhenghua@bank.com',
password: '123456',
isLoanSpecialist: false,
department: '人事部',
position: '人事专员',
status: 'active'
}
];
// 创建员工
const employees = await Employee.bulkCreate(employeesData);
console.log(`✅ 成功创建${employees.length}个员工`);
// 统计信息
const activeCount = await Employee.count({ where: { status: 'active' } });
const inactiveCount = await Employee.count({ where: { status: 'inactive' } });
const lockedCount = await Employee.count({ where: { status: 'locked' } });
const loanSpecialistCount = await Employee.count({ where: { isLoanSpecialist: true } });
console.log('\n📊 员工数据统计:');
console.log(`- 活跃员工:${activeCount}`);
console.log(`- 停用员工:${inactiveCount}`);
console.log(`- 锁定员工:${lockedCount}`);
console.log(`- 贷款专员:${loanSpecialistCount}`);
console.log(`- 总员工数:${employees.length}`);
console.log('\n🎉 员工测试数据添加完成!');
} catch (error) {
console.error('❌ 添加员工测试数据失败:', error);
throw error;
}
}
// 如果直接运行此脚本
if (require.main === module) {
seedEmployees()
.then(() => {
console.log('脚本执行完成');
process.exit(0);
})
.catch((error) => {
console.error('❌ 脚本执行失败:', error);
process.exit(1);
});
}
module.exports = seedEmployees;

View File

@@ -0,0 +1,161 @@
/**
* 个人中心测试数据种子脚本
* @file seed-personal-center-test-data.js
* @description 为个人中心功能添加测试数据
*/
const { User, Role } = require('../models');
const bcrypt = require('bcryptjs');
const { sequelize } = require('../config/database');
async function seedPersonalCenterTestData() {
try {
console.log('=== 开始添加个人中心测试数据 ===\n');
// 1. 确保admin角色存在
console.log('1. 检查admin角色...');
let adminRole = await Role.findOne({ where: { name: 'admin' } });
if (!adminRole) {
adminRole = await Role.create({
name: 'admin',
display_name: '系统管理员',
description: '系统管理员角色',
permissions: JSON.stringify(['*'])
});
console.log('✅ 创建admin角色成功');
} else {
console.log('✅ admin角色已存在');
}
// 2. 确保manager角色存在
console.log('2. 检查manager角色...');
let managerRole = await Role.findOne({ where: { name: 'manager' } });
if (!managerRole) {
managerRole = await Role.create({
name: 'manager',
display_name: '经理',
description: '经理角色',
permissions: JSON.stringify(['read', 'write', 'approve'])
});
console.log('✅ 创建manager角色成功');
} else {
console.log('✅ manager角色已存在');
}
// 3. 创建测试用户 - 银行经理
console.log('3. 创建测试用户 - 银行经理...');
const managerPassword = await bcrypt.hash('Manager123456', 10);
const managerUser = await User.findOrCreate({
where: { username: 'manager001' },
defaults: {
username: 'manager001',
password: managerPassword,
real_name: '李经理',
email: 'manager001@bank.com',
phone: '15004901368',
id_card: '110101198001010001',
status: 'active',
role_id: managerRole.id,
position: '部门经理',
department: '风险管理部'
}
});
if (managerUser[1]) {
console.log('✅ 创建银行经理用户成功');
} else {
console.log('✅ 银行经理用户已存在');
}
// 4. 创建测试用户 - 银行员工
console.log('4. 创建测试用户 - 银行员工...');
const employeePassword = await bcrypt.hash('Employee123456', 10);
const employeeUser = await User.findOrCreate({
where: { username: 'employee001' },
defaults: {
username: 'employee001',
password: employeePassword,
real_name: '王员工',
email: 'employee001@bank.com',
phone: '13800138000',
id_card: '110101199001010002',
status: 'active',
role_id: managerRole.id,
position: '业务专员',
department: '客户服务部'
}
});
if (employeeUser[1]) {
console.log('✅ 创建银行员工用户成功');
} else {
console.log('✅ 银行员工用户已存在');
}
// 5. 更新admin用户信息
console.log('5. 更新admin用户信息...');
const adminUser = await User.findOne({ where: { username: 'admin' } });
if (adminUser) {
await adminUser.update({
real_name: '系统管理员',
phone: '15004901368',
position: '系统管理员',
department: '信息技术部'
});
console.log('✅ 更新admin用户信息成功');
} else {
console.log('⚠️ admin用户不存在请先运行create-admin-user.js');
}
// 6. 显示测试用户信息
console.log('\n=== 测试用户信息 ===');
const testUsers = await User.findAll({
where: {
username: ['admin', 'manager001', 'employee001']
},
include: [{
model: Role,
as: 'role'
}]
});
testUsers.forEach(user => {
console.log(`\n用户名: ${user.username}`);
console.log(`姓名: ${user.real_name}`);
console.log(`手机: ${user.phone}`);
console.log(`邮箱: ${user.email}`);
console.log(`角色: ${user.role ? user.role.display_name : '未知'}`);
console.log(`部门: ${user.department || '未设置'}`);
console.log(`职位: ${user.position || '未设置'}`);
console.log(`状态: ${user.status}`);
});
console.log('\n=== 测试登录信息 ===');
console.log('管理员账号: admin / Admin123456');
console.log('经理账号: manager001 / Manager123456');
console.log('员工账号: employee001 / Employee123456');
console.log('\n=== 个人中心测试数据添加完成 ===');
} catch (error) {
console.error('❌ 添加个人中心测试数据失败:', error);
throw error;
} finally {
await sequelize.close();
}
}
// 运行脚本
if (require.main === module) {
seedPersonalCenterTestData()
.then(() => {
console.log('✅ 脚本执行完成');
process.exit(0);
})
.catch((error) => {
console.error('❌ 脚本执行失败:', error);
process.exit(1);
});
}
module.exports = seedPersonalCenterTestData;