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
|