push
This commit is contained in:
54
db.js
54
db.js
@@ -42,6 +42,7 @@ async function initDB() {
|
||||
is_active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '账号状态: 0-禁用, 1-启用',
|
||||
department_id INT DEFAULT NULL COMMENT '部门ID (关联departments表)',
|
||||
employee_id INT DEFAULT NULL COMMENT '员工ID (关联employees表)',
|
||||
role_level TINYINT NOT NULL DEFAULT 4 COMMENT '角色级别: 1-总经理, 2-部门经理, 3-部门副经理, 4-一般专员',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
@@ -176,6 +177,14 @@ async function initDB() {
|
||||
// 列已删除则忽略
|
||||
}
|
||||
|
||||
// users 表添加 role_level(角色级别)
|
||||
try {
|
||||
await pool.query(`ALTER TABLE users ADD COLUMN role_level TINYINT NOT NULL DEFAULT 4 COMMENT '角色级别: 1-总经理, 2-部门经理, 3-部门副经理, 4-一般专员' AFTER employee_id`)
|
||||
console.log('[init] users 表已添加 role_level 字段')
|
||||
} catch (e) {
|
||||
// 字段已存在则忽略
|
||||
}
|
||||
|
||||
console.log('[init] 数据表初始化完成')
|
||||
|
||||
// ============ 2.3 部门与权限相关表 ============
|
||||
@@ -314,8 +323,7 @@ async function seedDepartmentsAndPermissions() {
|
||||
const deptPermMap = {
|
||||
admin: [
|
||||
'user:manage',
|
||||
'customer:read', 'contract:read', 'after_sale:read',
|
||||
'product:read', 'supplier:read', 'employee:read',
|
||||
'employee:read',
|
||||
],
|
||||
general_manager: [
|
||||
'customer:read', 'contract:read', 'after_sale:read',
|
||||
@@ -330,7 +338,6 @@ async function seedDepartmentsAndPermissions() {
|
||||
],
|
||||
operations_manager: [
|
||||
'customer:read',
|
||||
'contract:read',
|
||||
'after_sale:read', 'after_sale:create', 'after_sale:update', 'after_sale:delete',
|
||||
'employee:read',
|
||||
],
|
||||
@@ -348,7 +355,6 @@ async function seedDepartmentsAndPermissions() {
|
||||
hr: [
|
||||
'employee:read', 'employee:create', 'employee:update', 'employee:delete',
|
||||
'user:manage',
|
||||
'customer:read',
|
||||
],
|
||||
}
|
||||
|
||||
@@ -386,13 +392,13 @@ async function seedDefaultUsers() {
|
||||
]
|
||||
|
||||
const seedUsers = [
|
||||
{ username: 'zhangchao', deptName: 'general_manager' },
|
||||
{ username: 'liming', deptName: 'franchise_manager' },
|
||||
{ username: 'wangli', deptName: 'operations_manager' },
|
||||
{ username: 'zhaoqiang', deptName: 'procurement_manager' },
|
||||
{ username: 'chenfang', deptName: 'finance' },
|
||||
{ username: 'admin', deptName: 'admin' },
|
||||
{ username: 'yangfan', deptName: 'hr' },
|
||||
{ username: 'zhangchao', deptName: 'general_manager', role_level: 1 },
|
||||
{ username: 'liming', deptName: 'franchise_manager', role_level: 2 },
|
||||
{ username: 'wangli', deptName: 'operations_manager', role_level: 2 },
|
||||
{ username: 'zhaoqiang', deptName: 'procurement_manager',role_level: 2 },
|
||||
{ username: 'chenfang', deptName: 'finance', role_level: 2 },
|
||||
{ username: 'admin', deptName: 'admin', role_level: 2 },
|
||||
{ username: 'yangfan', deptName: 'hr', role_level: 2 },
|
||||
]
|
||||
|
||||
for (let i = 0; i < seedUsers.length; i++) {
|
||||
@@ -413,9 +419,9 @@ async function seedDefaultUsers() {
|
||||
|
||||
// 再插入 users,关联 employee 和 department
|
||||
await pool.query(
|
||||
`INSERT INTO users (username, password, is_active, department_id, employee_id)
|
||||
VALUES (?, ?, 1, ?, ?)`,
|
||||
[usr.username, hash, deptIdMap[usr.deptName], empId]
|
||||
`INSERT INTO users (username, password, is_active, department_id, employee_id, role_level)
|
||||
VALUES (?, ?, 1, ?, ?, ?)`,
|
||||
[usr.username, hash, deptIdMap[usr.deptName], empId, usr.role_level]
|
||||
)
|
||||
console.log(`[init] 已创建用户 ${usr.username} (${emp.name} - ${emp.department})`)
|
||||
}
|
||||
@@ -452,14 +458,14 @@ async function seedBusinessData() {
|
||||
const deptIdMap2 = Object.fromEntries(deptRows.map(d => [d.name, d.id]))
|
||||
|
||||
const extraUsers = [
|
||||
{ empName: '刘洋', username: 'liuyang', deptName: 'franchise_manager' },
|
||||
{ empName: '孙婷', username: 'sunting', deptName: 'franchise_manager' },
|
||||
{ empName: '周杰', username: 'zhoujie', deptName: 'operations_manager' },
|
||||
{ empName: '吴敏', username: 'wumin', deptName: 'operations_manager' },
|
||||
{ empName: '郑伟', username: 'zhengwei', deptName: 'operations_manager' },
|
||||
{ empName: '黄磊', username: 'huanglei', deptName: 'procurement_manager' },
|
||||
{ empName: '马丽', username: 'mali', deptName: 'finance' },
|
||||
{ empName: '林峰', username: 'linfeng', deptName: 'general_manager' },
|
||||
{ empName: '刘洋', username: 'liuyang', deptName: 'franchise_manager', role_level: 4 },
|
||||
{ empName: '孙婷', username: 'sunting', deptName: 'franchise_manager', role_level: 4 },
|
||||
{ empName: '周杰', username: 'zhoujie', deptName: 'operations_manager', role_level: 4 },
|
||||
{ empName: '吴敏', username: 'wumin', deptName: 'operations_manager', role_level: 4 },
|
||||
{ empName: '郑伟', username: 'zhengwei', deptName: 'operations_manager', role_level: 4 },
|
||||
{ empName: '黄磊', username: 'huanglei', deptName: 'procurement_manager',role_level: 4 },
|
||||
{ empName: '马丽', username: 'mali', deptName: 'finance', role_level: 4 },
|
||||
{ empName: '林峰', username: 'linfeng', deptName: 'general_manager', role_level: 2 },
|
||||
]
|
||||
|
||||
const [newEmps] = await pool.query("SELECT id, name, department FROM employees WHERE name IN ('刘洋','孙婷','周杰','吴敏','郑伟','黄磊','马丽','林峰')")
|
||||
@@ -471,8 +477,8 @@ async function seedBusinessData() {
|
||||
const [userCheck] = await pool.query('SELECT id FROM users WHERE username = ?', [u.username])
|
||||
if (userCheck.length > 0) continue
|
||||
await pool.query(
|
||||
'INSERT INTO users (username, password, is_active, department_id, employee_id) VALUES (?, ?, 1, ?, ?)',
|
||||
[u.username, hash, deptIdMap2[u.deptName], emp.id]
|
||||
'INSERT INTO users (username, password, is_active, department_id, employee_id, role_level) VALUES (?, ?, 1, ?, ?, ?)',
|
||||
[u.username, hash, deptIdMap2[u.deptName], emp.id, u.role_level]
|
||||
)
|
||||
console.log(`[init] 已创建用户 ${u.username} (${u.empName} - ${emp.department})`)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user