const bcrypt = require('bcryptjs'); const db = require('./db'); async function fixUsers() { const password = 'X123c321@'; const hash = bcrypt.hashSync(password, 12); try { await db.query('UPDATE users SET password = $1, password_hash = $2 WHERE username = $3', [password, hash, 'admin']); console.log('admin密码已更新为: ' + password); } catch (e) { console.log('更新admin密码错误: ' + e.message); } const users = [ ['finance', password, hash, '财务专员', 'finance@example.com', '', 'finance'], ['manager', password, hash, '项目经理', 'manager@example.com', '', 'manager'], ['employee', password, hash, '普通员工', 'employee@example.com', '', 'user'] ]; for (const [username, pwd, pwdHash, name, email, phone, role] of users) { try { const existing = await db.query('SELECT id FROM users WHERE username = $1', [username]); if (existing.rows.length > 0) { await db.query('UPDATE users SET password = $1, password_hash = $2 WHERE username = $3', [pwd, pwdHash, username]); console.log(username + ' 用户密码已更新'); } else { await db.query( 'INSERT INTO users (username, password, password_hash, name, email, phone, role, created_at, updated_at) VALUES ($1, $2, $3, $4, $5, $6, $7, NOW(), NOW())', [username, pwd, pwdHash, name, email, phone, role] ); console.log(username + ' 用户已创建'); } } catch (e) { console.log(username + ' 错误: ' + e.message); } } const result = await db.query('SELECT id, username, name, role FROM users ORDER BY id'); console.log('\n当前用户列表:'); result.rows.forEach(r => console.log(' ' + r.id + ': ' + r.username + ' (' + r.name + ') - ' + r.role)); process.exit(0); } fixUsers().catch(e => { console.error(e); process.exit(1); });