# 91porn-server Go 语言后端服务项目,基于 Gin 框架 ## 架构 单仓库多服务(Monorepo),包含 3 个独立可部署的服务: | 服务 | 入口 | 端口 | 说明 | |------|------|------|------| | **app** | `app/main.go` | 8182 | 面向客户端的 API 服务(移动端/APP) | | **web** | `web/main.go` | - | 后台管理系统 API | | **skd** | `skd/main.go` | - | 定时任务/后台 Job 调度服务 | 根目录 `main.go` 仅用于 Swagger 文档生成(端口 20114)。 ## 目录结构 ``` ├── app/ # APP 端服务 │ ├── api/ # 接口处理层 │ ├── router/ # 路由定义 │ ├── service/ # 业务逻辑层 │ ├── middleware/ # APP 专用中间件 │ ├── config/ # APP 配置 │ └── proto/ # 请求/响应结构体 ├── web/ # 后台管理端服务 │ ├── api/ # 接口处理层 │ ├── router/ # 路由定义 │ ├── service/ # 业务逻辑层 │ ├── middleware/ # Web 专用中间件 │ ├── config/ # Web 配置 │ └── proto/ # 请求/响应结构体 ├── skd/ # 调度任务服务 │ ├── job/ # 定时任务定义 │ ├── service/ # 任务业务逻辑 │ ├── once/ # 一次性脚本 │ └── config/ # 调度配置 ├── models/ # 数据模型层(数据库表结构、缓存模型) ├── common/ # 公共模块 │ ├── db/ # 数据库连接 │ ├── redis/ # Redis 客户端 │ ├── cache/ cachev2/ # 缓存层 │ ├── kafka/ # Kafka 消息队列 │ ├── elastic/ # Elasticsearch │ ├── log/ # 日志 │ ├── conf/ # 配置加载 │ ├── tg/ # Telegram 机器人通知 │ ├── email/ sms/ # 邮件/短信通知 │ ├── filter/ # 内容过滤 │ ├── dataReport/ # 数据上报 │ ├── datacenter/ # 数据中心 │ ├── aiMate/ aiService/# AI 功能 │ ├── laosiji/ # 老司机模块 │ ├── store/ # 对象存储 │ └── ... # 其他工具模块 ├── middleware/ # 通用中间件(CORS、IP、UA、请求ID) ├── generate/ # 代码生成 ├── script/ # 脚本 └── swagger/ # Swagger 文档 ``` ## 技术栈 - **Web 框架**:Gin - **ORM**:GORM - **数据库**:MySQL - **搜索引擎**:Elasticsearch - **缓存**:Redis - **消息队列**:Kafka (Sarama) - **对象存储**:AWS S3 - **API 文档**:Swagger (swaggo) - **部署**:Docker + Shell 脚本 ## 业务功能 - 用户体系(注册/登录/JWT 鉴权/VIP) - 视频/媒体管理(上传/播放/标签/搜索) - 支付系统(充值/提现/钱包/金币) - 社区功能(评论/关注/点赞/排行榜) - IM 即时通讯(群组/消息) - AI 功能(换脸/脱衣/文生图/文生视频/文生小说) - 运营工具(活动/公告/签到/任务/兑换码) - 广告系统 - 裸聊/代充 - 后台管理(用户管理/内容审核/数据统计/配置管理) ## 构建与部署 ```bash # 构建 make build # 测试 make test # Docker 构建 make docker ``` 生产部署脚本: - `app_update_prod.sh` — 部署 APP 服务 - `web_update_prod.sh` — 部署 Web 后台服务 - `skd_update_prod.sh` — 部署调度服务 - `skd_update_test.sh` — 部署调度服务(测试环境)