topfans/backend/services/userService/INIT.md
2026-04-07 22:29:48 +08:00

96 lines
2.2 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.

# UserService 初始化说明
## 项目结构
```
backend/
├── pkg/
│ ├── database/ # 数据库连接包(可复用)
│ │ └── database.go
│ └── models/ # 数据模型包
│ └── user.go
└── services/
└── userService/
├── main.go
├── go.mod
└── README.md
```
## 设计说明
### 1. 数据库连接独立出来(推荐)
**为什么独立出来**
-**可复用**其他服务Asset Service、Social Service等也可以使用
-**便于管理**:统一管理连接池配置、重连逻辑等
-**便于测试**可以轻松mock数据库连接
-**符合分层架构**:基础设施层与业务逻辑层分离
### 2. 项目结构
```
pkg/database/ - 数据库基础设施层(可复用)
pkg/models/ - 数据模型定义
services/ - 业务服务层
```
## 安装依赖
在根目录执行:
```bash
cd /Users/haihuizhu/infinite_matrix/top-fans/backend
# 添加GORM依赖
go get gorm.io/gorm
go get gorm.io/driver/postgres
# 整理依赖
go mod tidy
```
## 使用方式
### 在任何服务中使用数据库连接:
```go
import (
"github.com/topfans/backend/pkg/database"
"github.com/topfans/backend/pkg/models"
)
// 初始化数据库
config := database.Config{
Host: "localhost",
Port: 5432,
User: "haihuizhu",
Password: "admin",
DBName: "top-fans",
SSLMode: "disable",
TimeZone: "Asia/Shanghai",
}
if err := database.Init(config); err != nil {
log.Fatal(err)
}
// 使用数据库
db := database.GetDB()
var user models.User
db.Where("mobile = ?", "13800000000").First(&user)
```
## 注意事项
1. **连接池配置**:已在 `pkg/database/database.go` 中配置了合理的连接池参数
2. **时区处理**统一使用UTC时间在存储时转换为毫秒时间戳
3. **软删除**User模型支持软删除DeletedAt字段
4. **自动迁移**:启动时会自动创建/更新表结构
## 后续开发
1. 实现Repository层数据访问层
2. 实现Service层业务逻辑层
3. 实现gRPC Handler层API接口层