rootandClaude Opus 5 acb9a34520 [AI] fix: 修复短剧剧集重复显示
两处原因,分别处理:

1. contentsync 只按 _id 水位线插新增,源库事后打上的 isDelete 传不过来,
   源站删掉的重复集在目标库一直留着。每轮同步后补扫一次 media /
   media_content / video_info,把源库的软删除标记同步过去,并按
   web/service/mediacontentser 的同一口径重算父级 currentEpisode /
   freeEpisode。只做「源库删了→目标也删」一个方向,不与本地下架保护冲突。

2. 各站 skd 的媒资库同步会为同一集(mediaId+hashId 相同)另插一条自己的 _id,
   与 contentsync 带过来的源库那条并存。媒资库那条在 SaleCoin=0 时
   listenPermission=2,本该收费的集可以白看。插入时若发现本地已有同一集,
   把本地那条 isActive:false 下架;并新增 skd 配置开关
   switch.mediaSyncDisabled,非源站可直接关掉这条同步链。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-29 20:18:36 +08:00
2026-09-21 17:14:20 +08:00
2026-09-21 17:14:20 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-21 17:14:20 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-21 17:14:20 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00
2026-09-15 13:57:10 +08:00

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 功能(换脸/脱衣/文生图/文生视频/文生小说)
  • 运营工具(活动/公告/签到/任务/兑换码)
  • 广告系统
  • 裸聊/代充
  • 后台管理(用户管理/内容审核/数据统计/配置管理)

构建与部署

# 构建
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 — 部署调度服务(测试环境)
S
Description
No description provided
Readme
2.5 MiB
Languages
Go 96.7%
HTML 2.9%
Go Template 0.2%