24cd9cef53
- uni-app Vue3 frontend with dark glassmorphism theme - 5 AI dimensions: Origin / Development / Current / Learning / Trend - AI Chat system prompt updated from geometry to AI - 23 AI knowledge articles initialized in DB - Trend API + cron job for daily news - Product pricing (Pro ¥19.9, VIP ¥39.9) - Pinia stores + API utilities - AGENTS.md documentation
6.3 KiB
Executable File
6.3 KiB
Executable File
宇之然·星辰绘线 - 后端服务
项目简介
这是宇之然·星辰绘线项目的后端服务,提供 RESTful API 接口,支持微信小程序和后台管理系统。
1. 查找占用指定端口的进程ID
netstat -tunlp | grep :3001
2. 根据进程ID kill进程
kill -9 进程ID
技术栈
- 运行时: Node.js 18+
- 框架: Express.js 4.18
- 数据库: MongoDB (Mongoose ODM)
- 认证: JWT
- 安全: Helmet, CORS, Rate Limit
项目结构
wdkj-server/
├── src/
│ ├── config/ # 配置文件
│ │ └── database.js # 数据库连接
│ ├── middleware/ # 中间件
│ │ └── auth.js # 认证中间件
│ ├── models/ # 数据模型
│ │ ├── User.js # 用户模型
│ │ ├── Order.js # 订单模型
│ │ ├── Gallery.js # 画廊模型
│ │ ├── Knowledge.js # 知识库模型
│ │ ├── ShopItem.js # 商品模型
│ │ ├── Admin.js # 管理员模型
│ │ └── AdminLog.js # 操作日志模型
│ ├── routes/ # 路由
│ │ ├── auth.js # 认证路由
│ │ ├── user.js # 用户路由
│ │ ├── payment.js # 支付路由
│ │ ├── gallery.js # 画廊路由
│ │ ├── knowledge.js # 知识库路由
│ │ ├── admin.js # 管理后台路由
│ │ └── index.js # 路由汇总
│ ├── utils/ # 工具函数
│ │ ├── response.js # 统一响应
│ │ ├── logger.js # 日志工具
│ │ └── weixin.js # 微信API工具
│ └── index.js # 主入口
├── logs/ # 日志目录
├── .env # 环境变量
├── package.json # 项目配置
└── README.md # 项目说明
快速开始
1. 安装依赖
cd wdkj-server
npm install
2. 配置环境变量
复制 .env.example 为 .env 并修改配置:
# 服务配置
PORT=3000
NODE_ENV=development
# MongoDB 配置
MONGODB_URI=mongodb://wdkj123:wdkj123@192.168.136.130:27017/wdkj?authSource=wdkj
# JWT 配置
JWT_SECRET=your_secret_key_here
JWT_EXPIRE=7d
# 微信小程序配置
WX_APPID=wxdad62baf4ccd09e3
WX_SECRET=your_wx_app_secret
# 微信支付配置
WX_PAY_MCH_ID=1108945993
WX_PAY_API_KEY=your_apiv3_key
3. 启动服务
# 开发环境
npm run dev
# 生产环境
npm start
4. 验证服务
访问健康检查接口:
curl http://localhost:3000/health
API 文档
认证相关
POST /api/auth/login- 小程序登录POST /api/auth/admin/login- 管理员登录GET /api/auth/me- 获取当前用户信息
用户相关
GET /api/user/progress- 获取用户进度POST /api/user/progress- 保存用户进度GET /api/user/leaderboard- 获取排行榜
支付相关
POST /api/payment/create-order- 创建订单POST /api/payment/callback- 支付回调POST /api/payment/verify- 验证支付GET /api/payment/products- 获取商品列表
画廊相关
GET /api/gallery- 获取作品列表POST /api/gallery- 上传作品GET /api/gallery/:id- 获取作品详情POST /api/gallery/:id/like- 点赞作品
知识库相关
GET /api/knowledge- 获取知识列表GET /api/knowledge/:id- 获取知识详情POST /api/knowledge/:id/collect- 收藏知识GET /api/knowledge/:dim/questions- 获取问答
管理后台
GET /api/admin/dashboard- 获取仪表盘数据GET /api/admin/users- 获取用户列表GET /api/admin/users/:id- 获取用户详情GET /api/admin/knowledge- 获取知识列表POST /api/admin/knowledge- 创建/更新知识POST /api/admin/knowledge/review- 审核知识GET /api/admin/gallery- 获取画廊作品POST /api/admin/gallery/review- 审核作品GET /api/admin/orders- 获取订单列表GET /api/admin/shop- 获取商品列表POST /api/admin/shop- 保存商品GET /api/admin/logs- 获取操作日志
数据库初始化
首次启动服务时,需要初始化管理员账户:
// 可以创建一个初始化脚本
const Admin = require('./src/models/Admin')
async function initAdmin() {
const admin = new Admin({
username: 'admin',
password: 'admin123456',
email: 'admin@wdkj.com',
role: 'super_admin',
permissions: ['*']
})
await admin.save()
}
开发指南
代码规范
- 使用 ES6+ 语法
- 异步操作使用 async/await
- 错误统一通过 ApiResponse 处理
- 所有操作记录日志
日志系统
日志级别:
debug: 调试信息info: 常规信息warn: 警告信息error: 错误信息
使用示例:
const logger = require('./utils/logger')
logger.info('用户登录', { openid: 'xxx' })
logger.error('数据库错误', error)
权限系统
角色权限矩阵:
| 角色 | 权限范围 |
|---|---|
| super_admin | 所有权限 (*) |
| content_manager | 知识库、画廊、用户查看 |
| shop_manager | 商品、订单、用户查看 |
| viewer | 仪表盘、分析、用户查看 |
生产部署
使用 PM2
# 安装 PM2
npm install -g pm2
# 启动服务
pm2 start src/index.js --name wdkj-server
# 查看状态
pm2 status
# 查看日志
pm2 logs wdkj-server
使用 Docker
创建 Dockerfile:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
构建并运行:
docker build -t wdkj-server .
docker run -p 3000:3000 -d wdkj-server
注意事项
- 安全: 生产环境必须修改 JWT_SECRET
- 数据库: 确保 MongoDB 已正确配置访问权限
- 支付: 微信支付需要真实的商户证书和密钥
- 日志: 生产环境会自动写入日志文件
- 限流: 已配置 API 请求频率限制
许可证
MIT License