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
264 lines
6.3 KiB
Markdown
Executable File
264 lines
6.3 KiB
Markdown
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. 安装依赖
|
|
|
|
```bash
|
|
cd wdkj-server
|
|
npm install
|
|
```
|
|
|
|
### 2. 配置环境变量
|
|
|
|
复制 `.env.example` 为 `.env` 并修改配置:
|
|
|
|
```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. 启动服务
|
|
|
|
```bash
|
|
# 开发环境
|
|
npm run dev
|
|
|
|
# 生产环境
|
|
npm start
|
|
```
|
|
|
|
### 4. 验证服务
|
|
|
|
访问健康检查接口:
|
|
|
|
```bash
|
|
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` - 获取操作日志
|
|
|
|
## 数据库初始化
|
|
|
|
首次启动服务时,需要初始化管理员账户:
|
|
|
|
```javascript
|
|
// 可以创建一个初始化脚本
|
|
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`: 错误信息
|
|
|
|
使用示例:
|
|
|
|
```javascript
|
|
const logger = require('./utils/logger')
|
|
|
|
logger.info('用户登录', { openid: 'xxx' })
|
|
logger.error('数据库错误', error)
|
|
```
|
|
|
|
### 权限系统
|
|
|
|
角色权限矩阵:
|
|
|
|
| 角色 | 权限范围 |
|
|
|------|----------|
|
|
| super_admin | 所有权限 (*) |
|
|
| content_manager | 知识库、画廊、用户查看 |
|
|
| shop_manager | 商品、订单、用户查看 |
|
|
| viewer | 仪表盘、分析、用户查看 |
|
|
|
|
## 生产部署
|
|
|
|
### 使用 PM2
|
|
|
|
```bash
|
|
# 安装 PM2
|
|
npm install -g pm2
|
|
|
|
# 启动服务
|
|
pm2 start src/index.js --name wdkj-server
|
|
|
|
# 查看状态
|
|
pm2 status
|
|
|
|
# 查看日志
|
|
pm2 logs wdkj-server
|
|
```
|
|
|
|
### 使用 Docker
|
|
|
|
创建 `Dockerfile`:
|
|
|
|
```dockerfile
|
|
FROM node:18-alpine
|
|
WORKDIR /app
|
|
COPY package*.json ./
|
|
RUN npm ci --only=production
|
|
COPY . .
|
|
EXPOSE 3000
|
|
CMD ["npm", "start"]
|
|
```
|
|
|
|
构建并运行:
|
|
|
|
```bash
|
|
docker build -t wdkj-server .
|
|
docker run -p 3000:3000 -d wdkj-server
|
|
```
|
|
|
|
## 注意事项
|
|
|
|
1. **安全**: 生产环境必须修改 JWT_SECRET
|
|
2. **数据库**: 确保 MongoDB 已正确配置访问权限
|
|
3. **支付**: 微信支付需要真实的商户证书和密钥
|
|
4. **日志**: 生产环境会自动写入日志文件
|
|
5. **限流**: 已配置 API 请求频率限制
|
|
|
|
## 许可证
|
|
|
|
MIT License
|