Files
ai-dimension/backend/wdkj-server/README.md
T
Yuzhiran Dev 24cd9cef53 🎉 feat: initialize 宇之然AI维度 project
- 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
2026-07-10 13:26:04 +08:00

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