This commit is contained in:
Kyaru
2026-06-30 23:12:21 +08:00

43
db.js
View File

@@ -244,25 +244,25 @@ async function initDB() {
// ============ 2.4 种子数据 ============ // ============ 2.4 种子数据 ============
await seedDepartmentsAndPermissions() await seedDepartmentsAndPermissions()
await seedDefaultUsers() await seedDefaultUsers()
await seedBusinessData() // await seedBusinessData()
// ============ 2.5 数据库迁移(兼容已有数据的旧库) ============ // // ============ 2.5 数据库迁移(兼容已有数据的旧库) ============
// 为财务部补上 product:read 权限 // // 为财务部补上 product:read 权限
try { // try {
const [financeDept] = await pool.query("SELECT id FROM departments WHERE name = 'finance' LIMIT 1") // const [financeDept] = await pool.query("SELECT id FROM departments WHERE name = 'finance' LIMIT 1")
if (financeDept.length > 0) { // if (financeDept.length > 0) {
const [prodPerm] = await pool.query("SELECT id FROM permissions WHERE name = 'product:read' LIMIT 1") // const [prodPerm] = await pool.query("SELECT id FROM permissions WHERE name = 'product:read' LIMIT 1")
if (prodPerm.length > 0) { // if (prodPerm.length > 0) {
await pool.query( // await pool.query(
'INSERT IGNORE INTO department_permissions (department_id, permission_id) VALUES (?, ?)', // 'INSERT IGNORE INTO department_permissions (department_id, permission_id) VALUES (?, ?)',
[financeDept[0].id, prodPerm[0].id] // [financeDept[0].id, prodPerm[0].id]
) // )
console.log('[migrate] 财务部已补上 product:read 权限') // console.log('[migrate] 财务部已补上 product:read 权限')
} // }
} // }
} catch (e) { // } catch (e) {
console.log('[migrate] 财务部权限迁移跳过:', e.message) // console.log('[migrate] 财务部权限迁移跳过:', e.message)
} // }
} }
// ============ 3. 种子数据:部门与权限 ============ // ============ 3. 种子数据:部门与权限 ============
@@ -374,7 +374,7 @@ async function seedDepartmentsAndPermissions() {
console.log('[init] 已初始化部门-权限映射') console.log('[init] 已初始化部门-权限映射')
} }
// ============ 4. 种子数据:默认用户 ============ // ============ 4. 种子数据:默认用户(仅保留总经理账号) ============
async function seedDefaultUsers() { async function seedDefaultUsers() {
const hash = await bcrypt.hash('123456', 10) const hash = await bcrypt.hash('123456', 10)
@@ -415,15 +415,12 @@ async function seedDefaultUsers() {
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1)`, VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1)`,
[emp.name, emp.gender, emp.age, emp.education, emp.department, emp.entry_date, emp.position, emp.salary, emp.phone, emp.email] [emp.name, emp.gender, emp.age, emp.education, emp.department, emp.entry_date, emp.position, emp.salary, emp.phone, emp.email]
) )
const empId = empResult.insertId
// 再插入 users关联 employee 和 department
await pool.query( await pool.query(
`INSERT INTO users (username, password, is_active, department_id, employee_id, role_level) `INSERT INTO users (username, password, is_active, department_id, employee_id, role_level)
VALUES (?, ?, 1, ?, ?, ?)`, VALUES (?, ?, 1, ?, ?, ?)`,
[usr.username, hash, deptIdMap[usr.deptName], empId, usr.role_level] [usr.username, hash, deptIdMap[usr.deptName], empId, usr.role_level]
) )
console.log(`[init] 已创建用户 ${usr.username} (${emp.name} - ${emp.department})`) console.log(`[init] 已创建用户 ${usr.username} (${emp.name})`)
} }
} }