chore: mqsrv backend

This commit is contained in:
Chen Gu
2026-05-09 00:52:04 +08:00
commit b84f111e8f
21 changed files with 4593 additions and 0 deletions

167
README.md Normal file
View File

@@ -0,0 +1,167 @@
# 码枪堂后端 API
基于 Express + Prisma + PostgreSQL 的后端服务。
## 快速开始
### 1. 安装依赖
```bash
pnpm install
# 或
npm install
```
### 2. 配置环境变量
```bash
cp .env.example .env
```
编辑 `.env` 文件:
```env
# 数据库连接
DATABASE_URL="postgresql://postgres:password@localhost:5432/maqt?schema=public"
# JWT 密钥(请修改为随机字符串)
JWT_SECRET="your-super-secret-jwt-key-change-this-in-production"
# 数据加密密钥32字节
ENCRYPTION_KEY="0123456789abcdef0123456789abcdef"
# 服务端口
PORT=3001
```
### 3. 初始化数据库
```bash
# 生成 Prisma Client
pnpm db:generate
# 同步数据库结构
pnpm db:push
# 生成种子数据VIP卡密等
pnpm db:seed
```
### 4. 启动服务
```bash
# 开发模式(热重载)
pnpm dev
# 生产模式
pnpm build
pnpm start
```
## API 接口
### 认证
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/register` | POST | 注册用户 |
| `/api/login` | POST | 用户登录 |
| `/api/session-status` | GET | 会话状态 |
| `/api/vip-status` | GET | VIP 状态 |
| `/api/activate-vip` | POST | VIP 卡密激活 |
### 用户管理
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/user/username` | PUT | 更新用户名 |
| `/api/user/email` | PUT | 更新邮箱 |
| `/api/user/avatar` | PUT | 更新头像 |
| `/api/user/stats/:userId` | GET | 用户统计 |
| `/api/user/schemes/:userId` | GET | 用户方案列表 |
### 方案分享
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/schemes/` | GET | 烽火地带方案列表 |
| `/api/schemes/:id` | GET | 方案详情 |
| `/api/schemes/` | POST | 创建方案 |
| `/api/schemes/:id` | DELETE | 删除方案 |
| `/api/schemes_aob/` | GET | 全面战场方案列表 |
| `/api/schemes_aob/:id` | GET | 方案详情 |
| `/api/schemes_aob/` | POST | 创建方案 |
### 滤镜分享
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/filter-shares/` | GET | 滤镜列表 |
| `/api/filter-shares/:id` | GET | 滤镜详情 |
| `/api/filter-shares/` | POST | 创建滤镜 |
| `/api/filter-shares/:id` | DELETE | 删除滤镜 |
### 收藏
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/favorites/` | GET | 收藏列表 |
| `/api/favorites/` | POST | 添加收藏 |
| `/api/favorites/:id` | DELETE | 取消收藏 |
| `/api/favorites/check` | GET | 检查是否收藏 |
## VIP 卡密管理
### 生成卡密
运行种子脚本会自动生成卡密:
```bash
pnpm db:seed
```
生成的卡密格式:
- 月卡:`VIP30-XXXX-XXXX-XXXX-XXXX`
- 季卡:`VIP90-XXXX-XXXX-XXXX-XXXX`
- 年卡:`VIP365-XXXX-XXXX-XXXX-XXXX`
### 查询卡密
```bash
npx prisma studio
```
打开 Prisma Studio 可视化管理数据库。
## 项目结构
```
maqt-backend/
├── prisma/
│ ├── schema.prisma # 数据库模型
│ └── seed.ts # 种子数据
├── src/
│ ├── index.ts # 主入口
│ ├── middleware/
│ │ └── auth.ts # 认证中间件
│ ├── routes/
│ │ ├── auth.ts # 认证路由
│ │ ├── user.ts # 用户路由
│ │ ├── schemes.ts # 烽火地带方案
│ │ ├── schemesAob.ts# 全面战场方案
│ │ ├── filters.ts # 滤镜分享
│ │ ├── favorites.ts # 收藏
│ │ └── vip.ts # VIP 激活
│ └── utils/
│ ├── jwt.ts # JWT 工具
│ └── encryption.ts# 加密工具
├── package.json
├── tsconfig.json
└── .env.example
```
## 注意事项
1. **生产环境**请务必修改 `.env` 中的密钥
2. **数据库**推荐使用 PostgreSQL
3. **部署**建议配合 PM2 或 Docker