first commit

This commit is contained in:
sjk
2025-12-19 22:36:48 +08:00
commit 6802624e59
185 changed files with 43430 additions and 0 deletions

240
go_backend/README.md Normal file
View 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