Files
f9-web-ai-test/server/index.js
T
2026-10-08 10:43:59 +08:00

56 lines
2.1 KiB
JavaScript

import express from 'express';
import cors from 'cors';
import authRouter from './routes/auth.js';
import postsRouter from './routes/posts.js';
import noticesRouter from './routes/notices.js';
import secondhandRouter from './routes/secondhand.js';
import housekeepingRouter from './routes/housekeeping.js';
import db from './db.js';
import bcrypt from 'bcryptjs';
const app = express();
app.use(cors());
app.use(express.json({ limit: '10mb' }));
// 初始化管理员账号
function seedAdmin() {
const admin = db.prepare('SELECT id FROM users WHERE username = ?').get('admin');
if (!admin) {
const hash = bcrypt.hashSync('admin123', 10);
db.prepare('INSERT INTO users (username, password, nickname, role, building) VALUES (?, ?, ?, ?, ?)')
.run('admin', hash, '社区管理员', 'admin', '物业中心');
console.log('已创建管理员账号: admin / admin123');
}
// 初始化示例通知
const count = db.prepare('SELECT COUNT(*) as c FROM notices').get().c;
if (count === 0) {
db.prepare('INSERT INTO notices (title, content, type) VALUES (?, ?, ?)')
.run('停水通知', '因管道维修,本周六 8:00-12:00 小区将停水,请各位业主提前储水。', '通知');
db.prepare('INSERT INTO notices (title, content, type) VALUES (?, ?, ?)')
.run('关于规范电动车停放的通知', '请将电动车停放在指定充电棚,严禁上楼充电,感谢配合。', '通知');
}
}
seedAdmin();
app.use('/api/auth', authRouter);
app.use('/api/posts', postsRouter);
app.use('/api/notices', noticesRouter);
app.use('/api/secondhand', secondhandRouter);
app.use('/api/housekeeping', housekeepingRouter);
// 静态文件(前端构建产物)
import path from 'path';
import { fileURLToPath } from 'url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
app.use(express.static(path.join(__dirname, '../client/dist')));
app.use((err, req, res, next) => {
console.error(err);
res.status(500).json({ message: '服务器内部错误' });
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`生活圈系统后端已启动: http://localhost:${PORT}`);
});