server.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. const express = require('express');
  2. const cors = require('cors');
  3. const bodyParser = require('body-parser');
  4. const path = require('path');
  5. const app = express();
  6. const PORT = process.env.PORT || 3000;
  7. app.use(cors());
  8. app.use(bodyParser.json());
  9. app.use(express.static(path.join(__dirname, 'public')));
  10. // 模拟数据
  11. let members = [
  12. { id: 1, name: '张三', attendance: [] },
  13. { id: 2, name: '李四', attendance: [] },
  14. ];
  15. // API 路由
  16. app.get('/api/members', (req, res) => {
  17. res.json(members);
  18. });
  19. app.post('/api/members', (req, res) => {
  20. const newMember = {
  21. id: members.length + 1,
  22. name: req.body.name,
  23. attendance: []
  24. };
  25. members.push(newMember);
  26. res.status(201).json(newMember);
  27. });
  28. app.post('/api/attendance', (req, res) => {
  29. const { memberId, date } = req.body;
  30. const member = members.find(m => m.id === memberId);
  31. if (member) {
  32. member.attendance.push(date);
  33. res.json(member);
  34. } else {
  35. res.status(404).json({ message: '会员不存在' });
  36. }
  37. });
  38. app.get('/api/attendance/:memberId', (req, res) => {
  39. const memberId = parseInt(req.params.memberId);
  40. const member = members.find(m => m.id === memberId);
  41. if (member) {
  42. res.json(member.attendance);
  43. } else {
  44. res.status(404).json({ message: '会员不存在' });
  45. }
  46. });
  47. // 处理所有其他路由,返回 index.html
  48. app.get('*', (req, res) => {
  49. res.sendFile(path.join(__dirname, 'public', 'index.html'));
  50. });
  51. app.listen(PORT, () => {
  52. console.log(`Server is running on port ${PORT}`);
  53. });