# 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
