189 lines
3.7 KiB
Markdown
189 lines
3.7 KiB
Markdown
# Top Fans Backend
|
||
|
||
微服务后端项目,使用 Go 1.25.5 和 gRPC。
|
||
|
||
## 项目架构
|
||
|
||
- **UserSocialService**: 用户与社交服务(用户、社交、展位、任务)
|
||
- **AssetChainService**: 资产与链服务
|
||
- **Gateway**: API 网关(REST API)
|
||
|
||
## 环境要求
|
||
|
||
- Go 1.25.5
|
||
- Protocol Buffers Compiler (protoc) 3.x+
|
||
- Make
|
||
|
||
## 快速开始
|
||
|
||
### 1. 安装 Go 环境
|
||
|
||
```bash
|
||
# 使用 Homebrew (macOS)
|
||
brew install go@1.25.5
|
||
|
||
# 或从官网下载
|
||
# https://go.dev/dl/
|
||
```
|
||
|
||
### 2. 配置环境
|
||
|
||
运行安装脚本:
|
||
|
||
```bash
|
||
chmod +x scripts/setup.sh
|
||
./scripts/setup.sh
|
||
```
|
||
|
||
或手动安装:
|
||
|
||
```bash
|
||
# 设置 Go 代理(可选,加速下载)
|
||
export GOPROXY=https://goproxy.cn,direct
|
||
|
||
# 下载依赖
|
||
go mod download
|
||
go mod tidy
|
||
|
||
# 安装 protoc 插件
|
||
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
|
||
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
|
||
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest
|
||
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest
|
||
|
||
# 安装 googleapis
|
||
go get github.com/googleapis/googleapis
|
||
```
|
||
|
||
### 3. 安装 Protocol Buffers
|
||
|
||
```bash
|
||
# macOS
|
||
brew install protobuf
|
||
|
||
# Linux (Ubuntu/Debian)
|
||
apt-get install protobuf-compiler
|
||
|
||
# Linux (CentOS/RHEL)
|
||
yum install protobuf-compiler
|
||
```
|
||
|
||
### 4. 生成代码
|
||
|
||
```bash
|
||
# 生成 gRPC 代码
|
||
make proto
|
||
|
||
# 生成 REST API 代码和 Swagger 文档
|
||
make swagger
|
||
|
||
# 生成所有代码
|
||
make all
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
backend/
|
||
├── api/
|
||
│ └── gateway/ # 生成的 REST API Gateway 代码
|
||
├── pkg/
|
||
│ └── proto/ # 生成的 gRPC 代码
|
||
├── proto/ # Proto 定义文件
|
||
│ ├── common.proto
|
||
│ ├── user.proto
|
||
│ └── asset-chain.proto
|
||
├── swagger/ # Swagger 文档
|
||
├── scripts/ # 脚本文件
|
||
├── go.mod # Go 模块定义
|
||
├── go.work # Go 工作区配置
|
||
├── Makefile # 构建脚本
|
||
└── README.md
|
||
```
|
||
|
||
## 开发工具
|
||
|
||
### 代码检查
|
||
|
||
项目使用 golangci-lint 进行代码检查:
|
||
|
||
```bash
|
||
# 安装 golangci-lint
|
||
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
||
|
||
# 运行检查
|
||
golangci-lint run
|
||
```
|
||
|
||
### 代码格式化
|
||
|
||
```bash
|
||
# 格式化代码
|
||
go fmt ./...
|
||
|
||
# 整理 imports
|
||
goimports -w .
|
||
```
|
||
|
||
## 依赖管理
|
||
|
||
主要依赖:
|
||
|
||
- `google.golang.org/protobuf`: Protocol Buffers Go 支持
|
||
- `google.golang.org/grpc`: gRPC 框架
|
||
- `github.com/grpc-ecosystem/grpc-gateway/v2`: gRPC 到 REST 的转换
|
||
- `github.com/gin-gonic/gin`: HTTP Web 框架
|
||
- `github.com/googleapis/googleapis`: Google API 定义
|
||
|
||
## Makefile 命令
|
||
|
||
```bash
|
||
make help # 显示帮助信息
|
||
make proto # 生成 gRPC 代码
|
||
make swagger # 生成 REST API 代码和 Swagger 文档
|
||
make all # 生成所有代码
|
||
make clean-proto # 清理生成的 proto 代码
|
||
make clean-swagger # 清理生成的 gateway 代码和 swagger
|
||
make clean # 清理所有生成的代码
|
||
```
|
||
|
||
## 版本管理
|
||
|
||
- Go 版本: 1.25.5 (在 `.go-version` 文件中指定)
|
||
- 使用 Go Workspace 模式管理多模块项目
|
||
|
||
## 注意事项
|
||
|
||
1. 生成的代码(`pkg/proto`、`api/gateway`)不要手动修改
|
||
2. 修改接口时,先更新 `.proto` 文件,再运行 `make all` 重新生成
|
||
3. 确保 `GOPATH/bin` 在 `PATH` 中,以便使用 protoc 插件
|
||
|
||
## 问题排查
|
||
|
||
### protoc 插件未找到
|
||
|
||
确保 `$GOPATH/bin` 或 `$HOME/go/bin` 在 PATH 中:
|
||
|
||
```bash
|
||
export PATH=$PATH:$(go env GOPATH)/bin
|
||
```
|
||
|
||
### googleapis 未找到
|
||
|
||
```bash
|
||
go get github.com/googleapis/googleapis
|
||
```
|
||
|
||
### 生成代码失败
|
||
|
||
检查 protoc 版本:
|
||
|
||
```bash
|
||
protoc --version # 应该是 3.x 版本
|
||
```
|
||
|
||
## 许可证
|
||
|
||
[添加许可证信息]
|
||
|