56 lines
2.1 KiB
JavaScript
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}`);
|
|
});
|