Files
ai_wht_wechat/go_backend/README.md
2025-12-19 22:36:48 +08:00

241 lines
4.9 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.

# 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