first commit
This commit is contained in:
240
go_backend/README.md
Normal file
240
go_backend/README.md
Normal file
@@ -0,0 +1,240 @@
|
||||
# AI小红书 - Go后端服务
|
||||
|
||||
基于Go + Gin + GORM + MySQL开发的小红书营销助手后端服务。
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **Web框架**: Gin
|
||||
- **ORM**: GORM
|
||||
- **数据库**: MySQL 8.0+
|
||||
- **配置管理**: Viper
|
||||
- **认证**: JWT
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
go_backend/
|
||||
├── config/ # 配置文件
|
||||
│ ├── config.go # 配置加载
|
||||
│ ├── config.dev.yaml # 开发环境配置
|
||||
│ └── config.prod.yaml# 生产环境配置
|
||||
├── models/ # 数据模型
|
||||
│ └── models.go
|
||||
├── database/ # 数据库
|
||||
│ └── database.go
|
||||
├── service/ # 业务逻辑层
|
||||
│ └── employee_service.go
|
||||
├── controller/ # 控制器层
|
||||
│ └── employee_controller.go
|
||||
├── router/ # 路由
|
||||
│ └── router.go
|
||||
├── middleware/ # 中间件
|
||||
│ └── auth.go
|
||||
├── common/ # 公共模块
|
||||
│ └── response.go
|
||||
├── utils/ # 工具函数
|
||||
│ └── jwt.go
|
||||
├── main.go # 入口文件
|
||||
├── go.mod # 依赖管理
|
||||
├── start.sh # Linux/Mac启动脚本
|
||||
├── start.bat # Windows开发环境启动脚本
|
||||
└── start_prod.bat # Windows生产环境启动脚本
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 环境要求
|
||||
|
||||
- Go 1.21+
|
||||
- MySQL 8.0+
|
||||
|
||||
### 2. 数据库准备
|
||||
|
||||
创建数据库:
|
||||
|
||||
```sql
|
||||
-- 开发环境
|
||||
CREATE DATABASE ai_xhs_dev DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- 生产环境
|
||||
CREATE DATABASE ai_xhs_prod DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
```
|
||||
|
||||
### 3. 配置文件
|
||||
|
||||
配置文件位于 `config/` 目录:
|
||||
|
||||
- `config.dev.yaml` - 开发环境配置
|
||||
- `config.prod.yaml` - 生产环境配置
|
||||
|
||||
根据需要修改数据库连接信息和JWT密钥。
|
||||
|
||||
### 4. 安装依赖
|
||||
|
||||
```bash
|
||||
go mod tidy
|
||||
```
|
||||
|
||||
### 5. 启动服务
|
||||
|
||||
#### Windows开发环境
|
||||
|
||||
双击运行 `start.bat` 或命令行执行:
|
||||
|
||||
```bash
|
||||
start.bat
|
||||
```
|
||||
|
||||
#### Windows生产环境
|
||||
|
||||
双击运行 `start_prod.bat` 或命令行执行:
|
||||
|
||||
```bash
|
||||
start_prod.bat
|
||||
```
|
||||
|
||||
#### Linux/Mac
|
||||
|
||||
```bash
|
||||
chmod +x start.sh
|
||||
./start.sh
|
||||
```
|
||||
|
||||
或手动启动:
|
||||
|
||||
```bash
|
||||
# 开发环境
|
||||
go run main.go -env=dev
|
||||
|
||||
# 生产环境
|
||||
go run main.go -env=prod
|
||||
```
|
||||
|
||||
### 6. 验证服务
|
||||
|
||||
访问健康检查接口:
|
||||
|
||||
```bash
|
||||
curl http://localhost:8080/health
|
||||
```
|
||||
|
||||
返回:
|
||||
|
||||
```json
|
||||
{
|
||||
"status": "ok"
|
||||
}
|
||||
```
|
||||
|
||||
## API接口
|
||||
|
||||
所有接口都需要在请求头中携带JWT Token(除登录接口外):
|
||||
|
||||
```
|
||||
Authorization: Bearer <token>
|
||||
```
|
||||
|
||||
### 员工端接口
|
||||
|
||||
| 接口 | 方法 | 路径 | 说明 |
|
||||
|------|------|------|------|
|
||||
| 获取个人信息 | GET | `/api/employee/profile` | 获取当前员工信息 |
|
||||
| 绑定小红书 | POST | `/api/employee/bind-xhs` | 绑定小红书账号 |
|
||||
| 解绑小红书 | POST | `/api/employee/unbind-xhs` | 解绑小红书账号 |
|
||||
| 可领取文案 | GET | `/api/employee/available-copies` | 获取可领取的文案列表 |
|
||||
| 领取文案 | POST | `/api/employee/claim-copy` | 领取指定文案 |
|
||||
| 随机领取 | POST | `/api/employee/claim-random-copy` | 随机领取文案 |
|
||||
| 发布内容 | POST | `/api/employee/publish` | 发布内容到小红书 |
|
||||
| 发布记录 | GET | `/api/employee/my-publish-records` | 获取我的发布记录 |
|
||||
| 产品列表 | GET | `/api/employee/products` | 获取产品列表 |
|
||||
|
||||
详细接口文档请参考项目需求文档。
|
||||
|
||||
## 数据库表结构
|
||||
|
||||
系统会在启动时自动创建以下数据表:
|
||||
|
||||
- `enterprises` - 企业表
|
||||
- `employees` - 员工表
|
||||
- `products` - 产品表
|
||||
- `copies` - 文案表
|
||||
- `copy_claims` - 文案领取记录表
|
||||
- `publish_records` - 发布记录表
|
||||
|
||||
## 开发说明
|
||||
|
||||
### 添加新接口
|
||||
|
||||
1. 在 `models/` 中定义数据模型
|
||||
2. 在 `service/` 中实现业务逻辑
|
||||
3. 在 `controller/` 中创建控制器方法
|
||||
4. 在 `router/router.go` 中注册路由
|
||||
|
||||
### 环境切换
|
||||
|
||||
通过 `-env` 参数切换环境:
|
||||
|
||||
```bash
|
||||
go run main.go -env=dev # 开发环境
|
||||
go run main.go -env=prod # 生产环境
|
||||
```
|
||||
|
||||
### 日志
|
||||
|
||||
GORM日志级别在 `database/database.go` 中配置,默认为 `Info` 级别。
|
||||
|
||||
## 部署
|
||||
|
||||
### 编译
|
||||
|
||||
```bash
|
||||
# Windows
|
||||
go build -o ai_xhs.exe main.go
|
||||
|
||||
# Linux/Mac
|
||||
go build -o ai_xhs main.go
|
||||
```
|
||||
|
||||
### 运行
|
||||
|
||||
```bash
|
||||
# Windows
|
||||
ai_xhs.exe -env=prod
|
||||
|
||||
# Linux/Mac
|
||||
./ai_xhs -env=prod
|
||||
```
|
||||
|
||||
### 生产环境注意事项
|
||||
|
||||
1. 修改 `config.prod.yaml` 中的JWT密钥
|
||||
2. 配置正确的数据库连接信息
|
||||
3. 设置服务器防火墙规则
|
||||
4. 建议使用进程管理工具(如systemd、supervisor)
|
||||
5. 配置反向代理(如Nginx)
|
||||
6. 启用HTTPS
|
||||
|
||||
## 常见问题
|
||||
|
||||
### 1. 数据库连接失败
|
||||
|
||||
检查:
|
||||
- MySQL服务是否启动
|
||||
- 数据库名称是否正确
|
||||
- 用户名密码是否正确
|
||||
- 数据库字符集是否为 utf8mb4
|
||||
|
||||
### 2. 端口已被占用
|
||||
|
||||
修改配置文件中的 `server.port` 配置项。
|
||||
|
||||
### 3. JWT认证失败
|
||||
|
||||
检查:
|
||||
- Token是否正确携带
|
||||
- Token格式是否为 `Bearer <token>`
|
||||
- Token是否过期
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user