241 lines
4.9 KiB
Markdown
241 lines
4.9 KiB
Markdown
|
|
# 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
|