新功能: - 创建AI聊天助手组件(AIChatWidget) - 支持文字+图片多模态对话 - 集成Gemini AI API - 支持图片编辑和内容生成 - 实时对话历史管理 - 优雅的UI设计,支持黑夜模式 技术实现: - 后端API代理Gemini API(/api/ai-chat) - 支持最多5张图片上传 - 流式响应处理 - 对话历史管理 - Base64图片处理 配置: - 在.env中添加Gemini API配置 - GEMINI_API_KEY - GEMINI_API_BASE_URL - GEMINI_MODEL 替换原弹幕功能,提供更强大的AI助手体验!
80 lines
2.1 KiB
JavaScript
Executable File
80 lines
2.1 KiB
JavaScript
Executable File
const { connectDB, mongoose } = require('./server/db/mongoose');
|
|
const bcrypt = require('bcryptjs');
|
|
|
|
// 默认管理员信息
|
|
const defaultAdmin = {
|
|
username: 'admin',
|
|
email: 'admin@example.com',
|
|
password: 'Admin123!',
|
|
role: 'admin',
|
|
credits: 100
|
|
};
|
|
|
|
async function initDatabase() {
|
|
try {
|
|
console.log('开始初始化数据库...');
|
|
|
|
// 连接数据库
|
|
const connection = await connectDB();
|
|
|
|
// 检查连接状态
|
|
if (!connection || mongoose.connection.readyState !== 1) {
|
|
throw new Error('数据库连接失败');
|
|
}
|
|
|
|
console.log('数据库连接成功,开始初始化...');
|
|
|
|
// 检查是否已有用户集合
|
|
const collections = await mongoose.connection.db.listCollections().toArray();
|
|
const hasUsers = collections.some(col => col.name === 'users');
|
|
|
|
if (hasUsers) {
|
|
// 检查是否已有管理员用户
|
|
const User = mongoose.model('User', new mongoose.Schema({
|
|
username: String,
|
|
email: String,
|
|
password: String,
|
|
role: String,
|
|
credits: Number
|
|
}));
|
|
|
|
const adminCount = await User.countDocuments({ role: 'admin' });
|
|
|
|
if (adminCount > 0) {
|
|
console.log('数据库中已有管理员用户,跳过创建默认管理员');
|
|
} else {
|
|
console.log('创建默认管理员用户...');
|
|
|
|
// 加密密码
|
|
const salt = await bcrypt.genSalt(10);
|
|
const hashedPassword = await bcrypt.hash(defaultAdmin.password, salt);
|
|
|
|
// 创建管理员用户
|
|
const admin = new User({
|
|
...defaultAdmin,
|
|
password: hashedPassword
|
|
});
|
|
|
|
await admin.save();
|
|
console.log('默认管理员用户创建成功');
|
|
}
|
|
} else {
|
|
console.log('用户集合不存在,将在首次注册时自动创建');
|
|
}
|
|
|
|
console.log('数据库初始化完成');
|
|
|
|
// 关闭连接
|
|
await mongoose.disconnect();
|
|
console.log('数据库连接已关闭');
|
|
|
|
process.exit(0);
|
|
} catch (error) {
|
|
console.error('初始化数据库时出错:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
// 执行初始化
|
|
initDatabase();
|