基于 Node.js + TypeScript + Express + MySQL 构建的酒店预订平台后端服务。
- Node.js 24.x
- TypeScript 5.9.3
- Express 5.2.1
- MySQL (mysql2 3.16.2)
- JWT + bcryptjs
- 阿里云 OSS
- pnpm 10.27.0+
- Node.js 24.x
- pnpm 10.27.0+
- MySQL 5.7+
pnpm install在项目根目录下创建 .env 文件:
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=yisutrip
JWT_SECRET=your_jwt_secret_key
OSS_ACCESS_KEY_ID=your_access_key_id
OSS_ACCESS_KEY_SECRET=your_access_key_secret
OSS_STS_ROLE_ARN=your_sts_role_arn
OSS_DOMAIN=https://your-oss-domain.com
WX_APPID=your_wechat_appid
WX_SECRET=your_wechat_secret
NGROK_DOMAIN=https://your-ngrok-domain.com
BACKEND_DOMAIN=https://your-backend-domain.compnpm start服务器将在 http://127.0.0.1:3000 启动。
src/
├── config/
│ └── db.ts # 数据库配置
├── middleware/
│ └── auth.middleware.ts # JWT 认证中间件
├── routes/
│ ├── auth.route.ts # 认证路由
│ ├── hotel.route.ts # 酒店管理路由
│ ├── oss.route.ts # OSS 文件上传路由
│ └── wx.route.ts # 微信小程序路由
├── service/
│ └── oss.service.ts # OSS 签名生成服务
├── types/ # TypeScript 类型定义
├── utils/ # 工具函数
└── index.ts # 应用入口
POST /api/auth/register- 用户注册POST /api/auth/login- 用户登录GET /api/auth/wxLogin- 微信小程序登录
GET /api/hotels- 获取所有酒店GET /api/hotels/:id- 获取酒店详情POST /api/hotels- 创建酒店PUT /api/hotels/:id- 更新酒店DELETE /api/hotels/:id- 删除酒店
GET /api/wx/hotels- 搜索酒店列表GET /api/wx/hotels/:id/room-prices- 获取酒店房型价格
GET /api/oss/get_post_signature_for_oss_upload- 获取 OSS 上传签名
pnpm start # 启动开发服务器
pnpm lint # 运行 ESLint 检查
pnpm lint-fix # 自动修复 ESLint 问题
pnpm commit # 规范化 Git 提交项目配置了 GitHub Actions 自动部署到阿里云 ECS,推送代码到 main 分支即可触发自动部署。
LuoJuntao & Liangliangyu
MIT License