Files
NBATransfer/README.md
2025-12-14 15:40:49 +08:00

313 lines
7.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Nano Banana API 中转平台
一个完整的大模型 API 中转购买平台支持用户注册、充值、API 调用等功能。
## 项目简介
本项目是一个前后端分离的 API 中转服务平台,用户可以通过注册账户、充值余额来使用 Nano Banana 文生图 API 服务。
### 主要功能
- 📧 邮箱注册登录系统(支持邮箱验证)
- 💰 用户余额管理和充值系统
- 💳 支付接口(支持支付宝/微信支付)
- 🎨 Nano Banana 文生图 API 中转
- 🔑 API 密钥管理
- 📊 用户统计和订单管理
- 👨‍💼 管理员后台
- 📱 响应式设计(支持手机端和电脑端)
## 技术栈
### 后端 (NBATransfer-backend)
- **框架**: Flask 3.0
- **数据库**: SQLite
- **ORM**: Flask-SQLAlchemy
- **认证**: Flask-JWT-Extended
- **跨域**: Flask-CORS
- **邮件**: Flask-Mail
### 前端 (NBATransfer-frontend)
- **框架**: React 19 + TypeScript
- **构建工具**: Vite
- **UI 组件库**: Ant Design
- **状态管理**: Zustand
- **路由**: React Router
- **HTTP 客户端**: Axios
- **图表**: Recharts
## 项目结构
```
.
├── NBATransfer-backend/ # 后端项目
│ ├── app.py # Flask 应用入口
│ ├── config.py # 配置文件
│ ├── models.py # 数据库模型
│ ├── routes/ # 路由模块
│ │ ├── auth.py # 认证相关
│ │ ├── user.py # 用户相关
│ │ ├── order.py # 订单相关
│ │ ├── api_service.py # API 服务
│ │ ├── admin.py # 管理员
│ │ ├── apikey.py # API 密钥
│ │ └── v1_api.py # V1 API 接口
│ ├── services/ # 业务逻辑层
│ ├── modelapiservice/ # 模型 API 服务
│ │ ├── DeepSeek/ # DeepSeek 服务
│ │ └── NanoBanana/ # NanoBanana 服务
│ └── requirements.txt # Python 依赖
├── NBATransfer-frontend/ # 前端项目
│ ├── src/
│ │ ├── api/ # API 接口定义
│ │ ├── components/ # 公共组件
│ │ ├── pages/ # 页面组件
│ │ ├── store/ # 状态管理
│ │ ├── types/ # TypeScript 类型
│ │ └── utils/ # 工具函数
│ └── package.json # Node.js 依赖
└── README.md # 项目说明文档
```
## 快速开始
### 环境要求
- Python 3.9+
- Node.js 18+
- npm 或 yarn
### 后端启动
1. 进入后端目录:
```bash
cd NBATransfer-backend
```
2. 安装依赖:
```bash
pip install -r requirements.txt
```
3. 配置环境变量(可选):
创建 `.env` 文件并配置以下变量:
```env
SECRET_KEY=your-secret-key
JWT_SECRET_KEY=your-jwt-secret-key
DATABASE_URI=sqlite:///nba_transfer.db
MAIL_SERVER=smtp.qq.com
MAIL_PORT=465
MAIL_USE_SSL=True
MAIL_USERNAME=your-email@qq.com
MAIL_PASSWORD=your-email-password
```
4. 运行后端:
```bash
python app.py
```
或者使用批处理文件Windows
```bash
启动后端.bat
```
后端服务将在 `http://localhost:5000` 启动
### 前端启动
1. 进入前端目录:
```bash
cd NBATransfer-frontend
```
2. 安装依赖:
```bash
npm install
```
3. 配置环境变量(可选):
创建 `.env` 文件:
```env
VITE_API_URL=http://localhost:5000/api
```
4. 运行前端:
```bash
npm run dev
```
或者使用批处理文件Windows
```bash
启动前端.bat
```
前端服务将在 `http://localhost:5173` 启动Vite 默认端口)
## 默认账户
### 管理员账户
- **邮箱**: admin@nba.com
- **密码**: admin123
⚠️ **首次登录后请立即修改密码!**
## API 文档
### 认证相关 `/api/auth`
- `POST /register` - 用户注册
- `POST /login` - 用户登录
- `POST /refresh` - 刷新令牌
- `GET /me` - 获取当前用户信息
- `POST /change-password` - 修改密码
### 用户相关 `/api/user`
- `GET /profile` - 获取用户资料
- `PUT /profile` - 更新用户资料
- `GET /balance` - 获取账户余额
- `GET /transactions` - 获取交易记录
- `GET /api-calls` - 获取 API 调用记录
- `GET /stats` - 获取统计信息
### 订单相关 `/api/order`
- `POST /create` - 创建充值订单
- `GET /list` - 获取订单列表
- `GET /<order_id>` - 获取订单详情
- `POST /notify/<order_no>` - 支付通知(测试用)
### API 服务 `/api/service`
- `POST /text-to-image` - 文生图 API
- `GET /models` - 获取可用模型
- `GET /pricing` - 获取价格信息
- `GET /call/<call_id>` - 获取 API 调用详情
### API 密钥 `/api/apikey`
- `GET /list` - 获取 API 密钥列表
- `POST /create` - 创建 API 密钥
- `PUT /<key_id>/toggle` - 启用/禁用密钥
- `DELETE /<key_id>` - 删除密钥
### V1 API `/v1`
- `POST /chat/completions` - 聊天完成接口
- `POST /images/generations` - 图片生成接口
### 管理员 `/api/admin`
- `GET /users` - 获取用户列表
- `GET /users/<user_id>` - 获取用户详情
- `POST /users/<user_id>/toggle-status` - 启用/禁用用户
- `POST /users/<user_id>/adjust-balance` - 调整用户余额
- `GET /orders` - 获取所有订单
- `GET /api-calls` - 获取所有 API 调用
- `GET /stats/overview` - 获取总览统计
- `GET /stats/chart` - 获取图表数据
## 数据库结构
### 用户表 (users)
- 邮箱、密码、用户名
- 余额、激活状态、管理员标识
- 邮箱验证状态
- 创建时间、更新时间
### 订单表 (orders)
- 订单号、用户ID、金额
- 支付方式、订单状态
- 第三方交易ID、支付时间
### 交易记录表 (transactions)
- 用户ID、交易类型充值/消费/退款)
- 金额、前后余额
- 关联订单、关联API调用
### API调用表 (api_calls)
- 用户ID、API类型
- 提示词、参数、状态
- 结果URL、费用、错误信息
### API密钥表 (api_keys)
- 用户ID、密钥名称
- API密钥、激活状态
- 最后使用时间
### 验证码表 (verification_codes)
- 用户ID、邮箱
- 验证码、用途、使用状态
- 过期时间
## 价格策略
- **文生图 API**: 0.15 元/张
## 开发说明
### 添加新的路由
**后端**
1.`routes/` 目录下创建新的蓝图文件
2.`app.py` 中注册蓝图
**前端**
1.`src/api/modules/` 下创建 API 模块
2.`src/pages/` 下创建页面组件
3.`src/router/` 中配置路由
### 数据库迁移
```bash
# 进入 Python shell
python
>>> from app import create_app
>>> from models import db
>>> app = create_app()
>>> with app.app_context():
... db.create_all()
```
## 部署建议
### 后端部署
#### 使用 Gunicorn (生产环境)
```bash
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:app
```
#### 使用 Docker
```dockerfile
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "app:app"]
```
### 前端部署
```bash
npm run build
```
构建产物在 `dist/` 目录,可以部署到 Nginx、Vercel、Netlify 等平台。
## 注意事项
1. ⚠️ 生产环境请修改所有默认密钥
2. ⚠️ 配置实际的邮件服务器
3. ⚠️ 接入真实的支付接口
4. ⚠️ 配置 HTTPS
5. ⚠️ 定期备份数据库
6. ⚠️ 设置合适的 CORS 策略
## 许可证
MIT License
## 贡献
欢迎提交 Issue 和 Pull Request