# JustFans - 付费内容创作者SaaS平台
## 项目概述
- **项目类型**:内容创作者订阅平台(类似OnlyFans)
- **主要功能**:
- 创作者订阅系统(免费/付费订阅)
- 内容发布管理(图片、视频、音频、文字)
- 付费解锁内容(PPV - Pay Per View)
- 实时直播功能(WebRTC/RTMP)
- 私信系统(付费消息)
- 打赏/小费功能
- 创作者收益管理(订阅费、打赏、PPV收入)
- 提现系统
- 推荐返利系统
- 内容审核与管理
- 故事/快拍功能(24小时消失)
- 投票/问卷功能
- 用户列表管理
- 多语言支持
- **技术栈**:
- **后端**:PHP 8.2+, Laravel 12.x
- **前端**:Blade模板, Bootstrap 4.6, jQuery, Livewire 3.x
- **管理后台**:Filament 4.x
- **数据库**:MySQL/MariaDB
- **缓存/队列**:Redis
- **实时通信**:Pusher, Laravel Echo, WebSockets
- **视频处理**:FFmpeg, Laravel-FFMpeg
- **直播**:WebRTC, RTMP
- **支付**:Stripe, PayPal, Razorpay, MercadoPago, Paystack等
- **存储**:AWS S3, 本地存储
- **PWA**:支持渐进式Web应用
## 模块结构
```
Script/
├── app/
│ ├── Console/ # 命令行工具
│ │ └── Commands/ # 自定义Artisan命令
│ ├── Events/ # 事件类
│ │ ├── NewStreamChatMessage.php
│ │ ├── NewStreamTip.php
│ │ └── NewUserMessage.php
│ ├── Http/
│ │ ├── Controllers/ # 控制器
│ │ ├── Middleware/ # 中间件
│ │ ├── Requests/ # 表单请求验证
│ │ └── Kernel.php # HTTP内核
│ ├── Model/ # Eloquent模型
│ ├── Filament/ # Filament管理后台
│ │ ├── Resources/ # 资源管理
│ │ ├── Pages/ # 自定义页面
│ │ └── Widgets/ # 仪表板小部件
│ ├── Helpers/ # 辅助函数
│ ├── Observers/ # 模型观察者
│ ├── Policies/ # 授权策略
│ ├── Providers/ # 服务提供者
│ ├── Rules/ # 自定义验证规则
│ └── Settings/ # 系统设置类
├── config/ # 配置文件
├── database/
│ ├── migrations/ # 数据库迁移(2100+个迁移文件)
│ └── seeders/ # 数据填充
├── resources/
│ ├── views/ # Blade视图
│ │ ├── auth/ # 认证视图
│ │ ├── elements/ # 组件元素
│ │ ├── emails/ # 邮件模板
│ │ ├── errors/ # 错误页面
│ │ ├── filament/ # Filament自定义视图
│ │ ├── layouts/ # 布局模板
│ │ ├── pages/ # 页面视图
│ │ └── template/ # 主题模板
│ └── sass/ # SCSS样式
├── routes/ # 路由
│ ├── web.php # Web路由
│ ├── api.php # API路由
│ └── channels.php # 广播频道
├── public/ # 公共资源
│ ├── css/ # 编译后的CSS
│ ├── js/ # JavaScript文件
│ └── libs/ # 第三方库
└── lang/ # 语言文件
├── en/ # 英文
└── ro/ # 罗马尼亚语
```
### 核心模块说明
1. **用户与认证模块**
- 多角色系统(普通用户、创作者、管理员)
- 邮箱/手机验证
- 2FA双因素认证
- 设备验证
- 社交媒体登录
2. **内容管理模块**
- 帖子发布(文字、图片、视频、音频)
- PPV付费内容设置
- 内容排期发布
- 草稿管理
- 内容审核状态
3. **订阅系统模块**
- 免费/付费订阅
- 订阅价格设置
- 订阅时长管理(月付/年付)
- 自动续费
- 订阅到期提醒
4. **直播模块**
- WebRTC实时直播
- RTMP推流支持
- 付费直播间
- 直播打赏
- 直播聊天室
5. **消息系统模块**
- 私信功能
- 付费消息(解锁查看)
- 群发消息
- 消息已读状态
6. **财务模块**
- 钱包系统
- 订阅收入统计
- PPV收入统计
- 打赏收入统计
- 提现申请与处理
- 平台佣金计算
7. **互动功能模块**
- 点赞、评论
- 故事/快拍(24小时)
- 投票/问卷
- 用户书签
- 用户列表(分组管理粉丝)
8. **管理后台模块(Filament)**
- 用户管理
- 内容审核
- 财务管理
- 系统设置
- 数据统计
## 核心业务逻辑
### 1. 创作者订阅流程
```
用户注册 → 成为创作者 → 设置订阅价格 → 发布内容 → 用户订阅 → 获得收益
↓
身份验证
设置收款账户
```
**订阅类型**:
- **免费订阅**:用户可免费关注,查看免费内容
- **付费订阅**:按月/年付费,查看所有内容
- **PPV内容**:单条内容付费解锁
### 2. 内容发布与权限控制
```
创作者发布 → 设置可见性 → 内容存储 → 粉丝通知 → 权限验证 → 内容展示
↓
公开/订阅者/付费
```
**内容可见性级别**:
1. **Public**:所有人可见
2. **Subscribers**:仅订阅者可见
3. **PPV**:需额外付费解锁
4. **Scheduled**:定时发布
**权限检查逻辑**:
```php
// 检查用户是否有权限查看内容
public function canViewPost($user, $post)
{
// 公开内容
if ($post->visibility === 'public') return true;
// 检查订阅状态
if ($post->visibility === 'subscribers') {
return Subscription::where('creator_id', $post->user_id)
->where('subscriber_id', $user->id)
->where('expires_at', '>', now())
->exists();
}
// 检查PPV购买记录
if ($post->visibility === 'ppv') {
return Transaction::where('post_id', $post->id)
->where('user_id', $user->id)
->where('type', 'ppv_purchase')
->exists();
}
... (content truncated)