初始化提交

This commit is contained in:
2025-12-14 15:40:49 +08:00
commit 410b2f068d
72 changed files with 10460 additions and 0 deletions

312
README.md Normal file
View File

@@ -0,0 +1,312 @@
# 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