主要更新: - ✅ 完成主题配色从暗色到亮蓝白配色的全面转换 - ✅ 实现高薪岗位页面及后端API集成 - ✅ 完成登录注册页面及认证系统 - ✅ 实现预招录确认功能 - ✅ 添加数据库管理和维护工具脚本 - ✅ 优化错误处理和用户体验 核心功能: 1. 首页 (index.html) - 3D地球、专业分类、过渡岗位 2. 高薪岗位页面 (high.html) - 岗位详情、预招录确认、成功案例 3. 登录注册 (auth.html) - 用户认证、专业分类选择 4. 后端API - RESTful接口,JWT认证,MySQL数据库 技术栈: - 前端:Three.js, GSAP, 原生JavaScript - 后端:Node.js, Express, MySQL - 认证:JWT, bcrypt - 样式:自定义CSS,响应式设计 数据库工具: - kill-by-ids.js - 批量终止MySQL进程 - unlock-all-tables.js - 解锁数据库表 - init-db.js - 初始化数据库 - 其他管理脚本 🤖 Generated with Claude Code Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
88 lines
3.0 KiB
JavaScript
88 lines
3.0 KiB
JavaScript
/**
|
||
* 创建默认管理员账号
|
||
* 在数据库和表已经创建后运行此脚本
|
||
*/
|
||
|
||
require('dotenv').config();
|
||
const mysql = require('mysql2/promise');
|
||
const bcrypt = require('bcryptjs');
|
||
|
||
// 数据库配置
|
||
const dbConfig = {
|
||
host: process.env.DB_HOST,
|
||
port: process.env.DB_PORT,
|
||
user: process.env.DB_USER,
|
||
password: process.env.DB_PASSWORD,
|
||
database: process.env.DB_DATABASE || 'ddcz_platform'
|
||
};
|
||
|
||
async function createAdminUser() {
|
||
let connection;
|
||
|
||
try {
|
||
console.log('🔌 正在连接到MySQL数据库...');
|
||
console.log(` 数据库: ${dbConfig.database}`);
|
||
|
||
connection = await mysql.createConnection(dbConfig);
|
||
console.log('✅ 数据库连接成功!\n');
|
||
|
||
// 生成管理员密码哈希
|
||
console.log('🔐 正在生成管理员密码...');
|
||
const defaultPassword = 'admin123456';
|
||
const passwordHash = await bcrypt.hash(defaultPassword, 10);
|
||
console.log('✅ 密码哈希生成成功!\n');
|
||
|
||
// 插入或更新管理员账号
|
||
console.log('👤 正在创建管理员账号...');
|
||
const [result] = await connection.query(`
|
||
INSERT INTO users (username, password_hash, email, role, status)
|
||
VALUES (?, ?, ?, ?, ?)
|
||
ON DUPLICATE KEY UPDATE
|
||
password_hash = VALUES(password_hash),
|
||
email = VALUES(email),
|
||
updated_at = CURRENT_TIMESTAMP
|
||
`, ['admin', passwordHash, 'admin@ddcz.com', 'admin', 'active']);
|
||
|
||
if (result.affectedRows > 0) {
|
||
console.log('✅ 管理员账号创建/更新成功!\n');
|
||
console.log('📝 管理员登录信息:');
|
||
console.log(' 用户名: admin');
|
||
console.log(' 密码: admin123456');
|
||
console.log(' ⚠️ 请在首次登录后立即修改密码!\n');
|
||
}
|
||
|
||
// 验证表是否存在
|
||
console.log('📊 验证数据库表...');
|
||
const [tables] = await connection.query('SHOW TABLES');
|
||
console.log(`✅ 数据库中共有 ${tables.length} 个表:`);
|
||
tables.forEach(table => {
|
||
const tableName = Object.values(table)[0];
|
||
console.log(` - ${tableName}`);
|
||
});
|
||
|
||
console.log('\n🎉 管理员账号设置完成!');
|
||
|
||
} catch (error) {
|
||
console.error('\n❌ 操作失败:');
|
||
console.error(error.message);
|
||
|
||
if (error.code === 'ECONNREFUSED') {
|
||
console.error('\n💡 无法连接到MySQL服务器');
|
||
} else if (error.code === 'ER_ACCESS_DENIED_ERROR') {
|
||
console.error('\n💡 用户名或密码错误');
|
||
} else if (error.code === 'ER_NO_SUCH_TABLE') {
|
||
console.error('\n💡 表不存在,请先在Navicat中执行 database-setup.sql');
|
||
}
|
||
|
||
process.exit(1);
|
||
} finally {
|
||
if (connection) {
|
||
await connection.end();
|
||
console.log('🔌 数据库连接已关闭');
|
||
}
|
||
}
|
||
}
|
||
|
||
// 执行
|
||
createAdminUser();
|