添加银行政府后端接口
This commit is contained in:
43
government-backend/scripts/checkDepartmentsAndPositions.js
Normal file
43
government-backend/scripts/checkDepartmentsAndPositions.js
Normal file
@@ -0,0 +1,43 @@
|
||||
const Department = require('../models/Department');
|
||||
const Position = require('../models/Position');
|
||||
const sequelize = require('../config/database');
|
||||
|
||||
// 查看数据库中的部门和岗位
|
||||
async function checkData() {
|
||||
try {
|
||||
console.log('连接数据库...');
|
||||
|
||||
// 获取所有部门
|
||||
console.log('\n查询所有部门...');
|
||||
const departments = await Department.findAll();
|
||||
console.log(`找到 ${departments.length} 个部门:`);
|
||||
departments.forEach(dept => {
|
||||
console.log(`- ID: ${dept.id}, 名称: ${dept.name}, 描述: ${dept.description}`);
|
||||
});
|
||||
|
||||
// 获取所有岗位
|
||||
console.log('\n查询所有岗位...');
|
||||
const positions = await Position.findAll({
|
||||
include: [
|
||||
{
|
||||
model: Department,
|
||||
as: 'department',
|
||||
attributes: ['name']
|
||||
}
|
||||
]
|
||||
});
|
||||
console.log(`找到 ${positions.length} 个岗位:`);
|
||||
positions.forEach(pos => {
|
||||
console.log(`- ID: ${pos.id}, 名称: ${pos.name}, 部门ID: ${pos.department_id}, 部门名称: ${pos.department?.name || '未知'}`);
|
||||
});
|
||||
|
||||
console.log('\n查询完成!');
|
||||
process.exit(0);
|
||||
} catch (error) {
|
||||
console.error('查询数据失败:', error);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// 执行查询
|
||||
checkData();
|
||||
86
government-backend/scripts/seed-departments.js
Normal file
86
government-backend/scripts/seed-departments.js
Normal file
@@ -0,0 +1,86 @@
|
||||
const sequelize = require('../config/database');
|
||||
const Department = require('../models/Department');
|
||||
const Position = require('../models/Position');
|
||||
|
||||
// 测试数据
|
||||
const departments = [
|
||||
{
|
||||
name: '防疫部门',
|
||||
description: '负责动物防疫工作的部门',
|
||||
positions: [
|
||||
{ name: '防疫员', has_permission: true, permission_details: { basic: ['view', 'edit'], advanced: ['delete'] } },
|
||||
{ name: '防疫管理员', has_permission: true, permission_details: { basic: ['view', 'edit', 'add', 'delete'], advanced: ['admin'] } }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: '检疫部门',
|
||||
description: '负责动物检疫工作的部门',
|
||||
positions: [
|
||||
{ name: '检疫员', has_permission: false, permission_details: null }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: '冷配管理部门',
|
||||
description: '负责动物冷配管理工作的部门',
|
||||
positions: [
|
||||
{ name: '冷配员', has_permission: true, permission_details: { basic: ['view', 'edit'], advanced: [] } }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: '测试部门',
|
||||
description: '用于系统测试的部门',
|
||||
positions: [
|
||||
{ name: '内部测试账号', has_permission: true, permission_details: { basic: ['view', 'edit', 'add', 'delete'], advanced: ['admin', 'debug'] } }
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
// 初始化数据库表并插入测试数据
|
||||
async function seedDatabase() {
|
||||
try {
|
||||
console.log('开始同步数据库表结构...');
|
||||
// 同步数据库表结构
|
||||
await sequelize.sync({ alter: true });
|
||||
console.log('数据库表结构同步完成!');
|
||||
|
||||
console.log('开始插入测试数据...');
|
||||
|
||||
// 逐个创建部门及其岗位
|
||||
for (const deptData of departments) {
|
||||
// 创建部门
|
||||
const department = await Department.create({
|
||||
name: deptData.name,
|
||||
description: deptData.description,
|
||||
created_by: 1,
|
||||
updated_by: 1
|
||||
});
|
||||
|
||||
console.log(`已创建部门: ${department.name}`);
|
||||
|
||||
// 创建该部门下的岗位
|
||||
for (const posData of deptData.positions) {
|
||||
const position = await Position.create({
|
||||
department_id: department.id,
|
||||
name: posData.name,
|
||||
has_permission: posData.has_permission,
|
||||
permission_details: posData.permission_details,
|
||||
created_by: 1,
|
||||
updated_by: 1
|
||||
});
|
||||
|
||||
console.log(` - 已创建岗位: ${position.name} (权限: ${position.has_permission ? '已设置' : '未设置'})`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log('测试数据插入完成!');
|
||||
} catch (error) {
|
||||
console.error('数据库初始化失败:', error);
|
||||
process.exit(1);
|
||||
} finally {
|
||||
// 关闭数据库连接
|
||||
await sequelize.close();
|
||||
}
|
||||
}
|
||||
|
||||
// 执行播种函数
|
||||
seedDatabase();
|
||||
181
government-backend/scripts/seedAdminStaffData.js
Normal file
181
government-backend/scripts/seedAdminStaffData.js
Normal file
@@ -0,0 +1,181 @@
|
||||
const Department = require('../models/Department');
|
||||
const Position = require('../models/Position');
|
||||
const AdminStaff = require('../models/AdminStaff');
|
||||
const sequelize = require('../config/database');
|
||||
|
||||
// 测试数据
|
||||
const departmentsData = [
|
||||
{
|
||||
name: '防疫部门',
|
||||
description: '负责疫情防控和动物健康监测'
|
||||
},
|
||||
{
|
||||
name: '行政管理部门',
|
||||
description: '负责日常行政事务管理'
|
||||
},
|
||||
{
|
||||
name: '数据分析部门',
|
||||
description: '负责数据收集、分析和报告'
|
||||
},
|
||||
{
|
||||
name: '市场监管部门',
|
||||
description: '负责市场价格监管和交易监督'
|
||||
}
|
||||
];
|
||||
|
||||
const positionsData = [
|
||||
{ name: '部门主管', has_permission: true },
|
||||
{ name: '防疫专员', has_permission: false },
|
||||
{ name: '行政主管', has_permission: true },
|
||||
{ name: '行政助理', has_permission: false },
|
||||
{ name: '数据分析主管', has_permission: true },
|
||||
{ name: '数据分析师', has_permission: false },
|
||||
{ name: '市场监管主管', has_permission: true },
|
||||
{ name: '市场监管员', has_permission: false }
|
||||
];
|
||||
|
||||
const adminStaffData = [
|
||||
{
|
||||
name: '张三',
|
||||
phone: '13800138001',
|
||||
id_card: '110101199003070010',
|
||||
status: true
|
||||
},
|
||||
{
|
||||
name: '李四',
|
||||
phone: '13800138002',
|
||||
id_card: '110101199104150020',
|
||||
status: true
|
||||
},
|
||||
{
|
||||
name: '王五',
|
||||
phone: '13800138003',
|
||||
id_card: '110101199205200030',
|
||||
status: true
|
||||
},
|
||||
{
|
||||
name: '赵六',
|
||||
phone: '13800138004',
|
||||
id_card: '110101199306250040',
|
||||
status: true
|
||||
},
|
||||
{
|
||||
name: '孙七',
|
||||
phone: '13800138005',
|
||||
id_card: '110101199407300050',
|
||||
status: true
|
||||
},
|
||||
{
|
||||
name: '周八',
|
||||
phone: '13800138006',
|
||||
id_card: '110101199508310060',
|
||||
status: false
|
||||
},
|
||||
{
|
||||
name: '吴九',
|
||||
phone: '13800138007',
|
||||
id_card: '110101199609150070',
|
||||
status: true
|
||||
},
|
||||
{
|
||||
name: '郑十',
|
||||
phone: '13800138008',
|
||||
id_card: '110101199710200080',
|
||||
status: true
|
||||
}
|
||||
];
|
||||
|
||||
// 添加测试数据到数据库
|
||||
async function seedData() {
|
||||
try {
|
||||
console.log('开始添加测试数据...');
|
||||
|
||||
// 先检查是否已有行政人员数据
|
||||
const existingStaffCount = await AdminStaff.count();
|
||||
if (existingStaffCount > 0) {
|
||||
console.log(`数据库中已有 ${existingStaffCount} 个行政人员数据,跳过所有数据添加`);
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
// 开始事务
|
||||
await sequelize.transaction(async (transaction) => {
|
||||
// 先删除可能存在的软删除数据
|
||||
await AdminStaff.destroy({ where: {}, force: true, transaction });
|
||||
await Position.destroy({ where: {}, force: true, transaction });
|
||||
await Department.destroy({ where: {}, force: true, transaction });
|
||||
|
||||
console.log('已清空所有表数据(包括软删除的数据)');
|
||||
|
||||
// 添加部门数据
|
||||
console.log('添加部门数据...');
|
||||
const departments = await Department.bulkCreate(departmentsData, {
|
||||
transaction,
|
||||
ignoreDuplicates: true
|
||||
});
|
||||
console.log(`成功添加 ${departments.length} 个部门`);
|
||||
|
||||
// 添加岗位数据,为每个部门添加相应的岗位
|
||||
console.log('添加岗位数据...');
|
||||
let positionId = 1;
|
||||
const createdPositions = [];
|
||||
|
||||
for (let i = 0; i < departments.length; i++) {
|
||||
const deptId = departments[i].id;
|
||||
// 每个部门添加2个岗位
|
||||
for (let j = 0; j < 2; j++) {
|
||||
const posIndex = i * 2 + j;
|
||||
if (posIndex < positionsData.length) {
|
||||
const position = await Position.create({
|
||||
department_id: deptId,
|
||||
name: positionsData[posIndex].name,
|
||||
has_permission: positionsData[posIndex].has_permission
|
||||
}, {
|
||||
transaction
|
||||
});
|
||||
createdPositions.push(position);
|
||||
console.log(` 添加岗位: ${position.name} (ID: ${position.id}, 部门ID: ${deptId})`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`总共添加了 ${createdPositions.length} 个岗位`);
|
||||
|
||||
// 添加行政人员数据,关联到实际创建的部门和岗位
|
||||
console.log('添加行政人员数据...');
|
||||
const createdStaff = [];
|
||||
|
||||
for (let i = 0; i < adminStaffData.length; i++) {
|
||||
const staffData = adminStaffData[i];
|
||||
// 根据索引分配部门和岗位
|
||||
const deptIndex = Math.floor(i / 2); // 每2个人员属于同一个部门
|
||||
const posIndex = i;
|
||||
|
||||
if (deptIndex < departments.length && posIndex < createdPositions.length) {
|
||||
const staff = await AdminStaff.create({
|
||||
name: staffData.name,
|
||||
department_id: departments[deptIndex].id,
|
||||
position_id: createdPositions[posIndex].id,
|
||||
phone: staffData.phone,
|
||||
id_card: staffData.id_card,
|
||||
status: staffData.status
|
||||
}, {
|
||||
transaction
|
||||
});
|
||||
createdStaff.push(staff);
|
||||
console.log(` 添加行政人员: ${staff.name} (ID: ${staff.id}, 部门: ${departments[deptIndex].name})`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`总共添加了 ${createdStaff.length} 个行政人员`);
|
||||
});
|
||||
|
||||
console.log('所有测试数据添加完成!');
|
||||
process.exit(0);
|
||||
} catch (error) {
|
||||
console.error('添加测试数据失败:', error);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// 执行数据添加
|
||||
seedData();
|
||||
Reference in New Issue
Block a user