Files
tyapi-server/README.md
2025-07-13 16:36:20 +08:00

241 lines
6.0 KiB
Markdown
Raw 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.

# TYAPI Server
基于 DDD 和 Clean Architecture 的企业级后端 API 服务,采用 Gin 框架构建支持用户管理、JWT 认证、企业认证、财务管理等功能。
## 🚀 快速开始
### 启动服务
```bash
# 开发模式启动
make dev
# 或者直接运行
go run cmd/api/main.go
```
### API 文档
启动服务后,可以通过以下地址访问 API 文档:
- **Swagger UI**: http://localhost:8080/swagger/index.html
- **API 文档信息**: http://localhost:8080/api/docs
- **重定向地址**: http://localhost:8080/docs
详细的 API 文档使用说明请参考:[docs/swagger/README.md](docs/swagger/README.md)
## 📋 功能特性
- 🔐 **用户认证**: 支持密码登录和短信验证码登录
- 👤 **用户管理**: 用户注册、信息管理、密码修改
- 👨‍💼 **管理员系统**: 管理员认证和权限管理
- 🏢 **企业认证**: 企业信息认证、营业执照上传、人脸验证
- 💰 **财务管理**: 钱包管理、充值提现、交易记录
- 🔑 **密钥管理**: API 访问密钥的创建和管理
- 📊 **监控统计**: 完整的业务数据统计和分析
## 🏗️ 技术架构
- **框架**: Gin (Go Web Framework)
- **架构**: DDD + Clean Architecture
- **数据库**: PostgreSQL + GORM
- **缓存**: Redis
- **认证**: JWT
- **文档**: Swagger/OpenAPI
- **依赖注入**: Uber FX
- **日志**: Zap
- **配置**: Viper
## 📁 项目结构
```
tyapi-server-gin/
├── cmd/api/ # 应用入口
├── internal/ # 内部包
│ ├── app/ # 应用层
│ ├── application/ # 应用服务层
│ ├── config/ # 配置管理
│ ├── container/ # 依赖注入容器
│ ├── domains/ # 领域层
│ ├── infrastructure/ # 基础设施层
│ └── shared/ # 共享组件
├── docs/swagger/ # API 文档
├── scripts/ # 脚本文件
└── deployments/ # 部署配置
```
## 🔧 开发指南
### 环境要求
- Go 1.23+
- PostgreSQL 12+
- Redis 6+
- Docker (可选)
### 安装依赖
```bash
# 安装 Go 依赖
go mod download
go mod tidy
# 安装开发工具
go install github.com/swaggo/swag/cmd/swag@latest
```
### 数据库迁移
```bash
# 运行数据库迁移
make migrate
```
### 更新 API 文档
```bash
# 使用 Makefile
make docs
# 使用 PowerShell 脚本 (Windows)
.\scripts\update-docs.ps1
# 更新文档并重启服务器
.\scripts\update-docs.ps1 -Restart
```
## 🐳 Docker 部署
```bash
# 开发环境
docker-compose -f docker-compose.dev.yml up -d
# 生产环境
docker-compose -f docker-compose.prod.yml up -d
```
## 📝 配置系统
TYAPI 服务端采用分层配置系统,使配置管理更加灵活和清晰:
1. **基础配置文件** (`config.yaml`): 包含所有配置项和默认值
2. **环境特定配置文件** (`configs/env.<环境>.yaml`): 包含特定环境需要覆盖的配置项
3. **环境变量**: 可以覆盖任何配置项,优先级最高
### 配置文件格式
所有配置文件采用 YAML 格式,保持相同的结构层次。
#### 基础配置文件 (config.yaml)
包含所有配置项和默认值,作为配置的基础。
#### 环境配置文件
环境配置文件只需包含需要覆盖的配置项,保持与基础配置相同的层次结构:
- `configs/env.development.yaml`: 开发环境配置
- `configs/env.testing.yaml`: 测试环境配置
- `configs/env.production.yaml`: 生产环境配置
### 配置加载顺序
系统按以下顺序加载配置,后加载的会覆盖先加载的:
1. 首先加载基础配置文件 `config.yaml`
2. 然后加载环境特定配置文件 `configs/env.<环境>.yaml`
3. 最后应用环境变量覆盖
### 环境确定方式
系统按以下优先级确定当前环境:
1. `CONFIG_ENV` 环境变量
2. `ENV` 环境变量
3. `APP_ENV` 环境变量
4. 默认值 `development`
### 统一配置项
某些配置项在所有环境中保持一致,直接在基础配置文件中设置:
1. **短信配置**: 所有环境使用相同的短信服务配置
2. **基础服务地址**: 如第三方服务端点等
### 使用示例
#### 基础配置 (config.yaml)
```yaml
app:
name: "TYAPI Server"
version: "1.0.0"
env: "development"
database:
host: "localhost"
port: "5432"
user: "postgres"
password: "default_password"
# 统一的短信配置
sms:
access_key_id: "LTAI5tKGB3TVJbMHSoZN3yr9"
access_key_secret: "OCQ30GWp4yENMjmfOAaagksE18bp65"
endpoint_url: "dysmsapi.aliyuncs.com"
```
#### 环境配置 (configs/env.production.yaml)
```yaml
app:
env: "production"
database:
host: "prod-db.example.com"
password: "prod_secure_password"
```
#### 运行时
```bash
# 使用开发环境配置
go run cmd/api/main.go
# 使用生产环境配置
ENV=production go run cmd/api/main.go
# 使用环境变量覆盖特定配置
ENV=production DB_PASSWORD=custom_password go run cmd/api/main.go
```
### 敏感信息处理
对于敏感信息(如密码、密钥等):
1. 开发环境:可以放在环境配置文件中
2. 生产环境:应通过环境变量注入,不应出现在配置文件中
### 配置验证
系统在启动时会验证必要的配置项,确保应用能够正常运行。如果缺少关键配置,系统将拒绝启动并提供明确的错误信息。
## 📚 相关文档
- [API 文档使用指南](docs/swagger/README.md)
- [开发指南](docs/开始指南/开发指南.md)
- [架构设计文档](docs/开始指南/架构设计文档.md)
- [部署指南](docs/开始指南/部署指南.md)
## 🤝 贡献指南
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 打开 Pull Request
## 📄 许可证
本项目采用 Apache 2.0 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。