chore: Initial clean commit

- Removed YuMi/Library/ (138 MB, not tracked)
- Removed YuMi/Resources/ (23 MB, not tracked)
- Removed old version assets (566 files, not tracked)
- Excluded Pods/, xcuserdata/ and other build artifacts
- Clean repository optimized for company server deployment
This commit is contained in:
edwinQQQ
2025-10-09 16:19:14 +08:00
commit a35a711be6
5582 changed files with 408913 additions and 0 deletions

236
gift_system_architecture.md Normal file
View File

@@ -0,0 +1,236 @@
# 礼物系统架构图
## 系统整体架构
```
┌─────────────────────────────────────────────────────────────────┐
│ 礼物系统架构 │
├─────────────────────────────────────────────────────────────────┤
│ UI层 (Presentation Layer) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ XPSendGiftView │ │RoomAnimationView│ │GiftComboFlagView│ │
│ │ (发送界面) │ │ (动画容器) │ │ (连击标识) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 业务逻辑层 (Business Logic Layer) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │XPGiftPresenter │ │GiftComboManager │ │GiftAnimationMgr │ │
│ │ (发送逻辑) │ │ (连击管理) │ │ (动画管理) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 数据层 (Data Layer) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ XPGiftStorage │ │ Api+Gift │ │ GiftInfoModel │ │
│ │ (数据缓存) │ │ (网络请求) │ │ (数据模型) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
## 礼物发送流程
```
用户操作
┌─────────────────┐
│ XPSendGiftView │ ← UI层用户选择礼物、数量、接收者
└─────────────────┘
┌─────────────────┐
│XPGiftPresenter │ ← 业务层:验证参数、处理业务逻辑
└─────────────────┘
┌─────────────────┐
│ Api+Gift │ ← 数据层:发送网络请求
└─────────────────┘
┌─────────────────┐
│ 服务器响应 │ ← 外部:处理礼物发送
└─────────────────┘
┌─────────────────┐
│ 成功回调处理 │ ← 业务层:更新状态、触发动画
└─────────────────┘
```
## 礼物接收流程
```
网络消息
┌─────────────────┐
│RoomAnimationView│ ← UI层接收消息、分发处理
└─────────────────┘
┌─────────────────┐
│GiftAnimationMgr │ ← 业务层:管理动画队列、控制播放
└─────────────────┘
┌─────────────────┐
│GiftComboManager │ ← 业务层:处理连击逻辑、状态管理
└─────────────────┘
┌─────────────────┐
│ 动画播放 │ ← UI层SVGA/MP4/PAG动画渲染
└─────────────────┘
```
## 数据存储架构
```
┌─────────────────┐
│ XPGiftStorage │ ← 单例缓存管理器
└─────────────────┘
┌─────────────────┐
│ roomGiftCache │ ← 房间礼物缓存 (NSCache)
└─────────────────┘
┌─────────────────┐
│roomGiftPanelTags│ ← 礼物面板缓存 (NSCache)
└─────────────────┘
┌─────────────────┐
│ GiftInfoModel │ ← 礼物数据模型
└─────────────────┘
```
## 礼物类型处理架构
```
礼物类型枚举
┌─────────────────┐
│ GiftType │ ← 21种不同礼物类型
└─────────────────┘
┌─────────────────┐
│ 类型分发处理 │ ← 根据类型选择不同处理逻辑
└─────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 普通礼物 │ │ 福袋礼物 │ │ VIP礼物 │
│ (标准流程) │ │ (特殊逻辑) │ │ (特权处理) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
## 动画播放架构
```
动画请求
┌─────────────────┐
│GiftAnimationMgr │ ← 动画管理器:队列管理、状态控制
└─────────────────┘
┌─────────────────┐
│ 动画类型判断 │ ← 根据礼物类型选择动画方式
└─────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ SVGA动画 │ │ MP4动画 │ │ PAG动画 │
│ (vggUrl) │ │ (viewUrl) │ │ (viewUrl) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────────┐
│ 动画渲染 │ ← UI层实际动画播放
└─────────────────┘
```
## 连击管理架构
```
连击触发
┌─────────────────┐
│GiftComboManager │ ← 连击管理器:状态跟踪、队列管理
└─────────────────┘
┌─────────────────┐
│ 网络请求队列 │ ← 管理发送请求的队列
└─────────────────┘
┌─────────────────┐
│ UI动画队列 │ ← 管理UI更新的队列
└─────────────────┘
┌─────────────────┐
│GiftComboFlagView│ ← UI层连击标识显示
└─────────────────┘
```
## 可分离性分析图
```
┌─────────────────────────────────────────────────────────────────┐
│ 可分离性分析 │
├─────────────────────────────────────────────────────────────────┤
│ 高可分离性 (可脱离UI使用) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ XPGiftStorage │ │ Api+Gift │ │ GiftInfoModel │ │
│ │ (数据缓存) │ │ (网络请求) │ │ (数据模型) │ │
│ │ 可分离度: 90% │ │ 可分离度: 95% │ │ 可分离度: 100% │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 中等可分离性 (需要重构) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │XPGiftPresenter │ │GiftAnimationMgr │ │ 业务逻辑验证 │ │
│ │ (发送逻辑) │ │ (动画管理) │ │ (数据处理) │ │
│ │ 可分离度: 60% │ │ 可分离度: 40% │ │ 可分离度: 70% │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 低可分离性 (UI强依赖) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ XPSendGiftView │ │RoomAnimationView│ │GiftComboManager │ │
│ │ (发送界面) │ │ (动画容器) │ │ (连击管理) │ │
│ │ 可分离度: 20% │ │ 可分离度: 10% │ │ 可分离度: 30% │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
## 重构建议架构
```
┌─────────────────────────────────────────────────────────────────┐
│ 重构后架构 │
├─────────────────────────────────────────────────────────────────┤
│ UI层 (Presentation Layer) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │GiftUIViewController│ │AnimationContainer│ │ComboUIView │ │
│ │ (纯UI展示) │ │ (动画容器) │ │ (连击UI) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 业务逻辑层 (Business Logic Layer) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │GiftBusinessService│ │AnimationService │ │ComboService │ │
│ │ (业务逻辑) │ │ (动画逻辑) │ │ (连击逻辑) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 数据层 (Data Layer) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │GiftDataService │ │NetworkService │ │CacheService │ │
│ │ (数据服务) │ │ (网络服务) │ │ (缓存服务) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
## 总结
### 当前架构特点
1. **三层架构**: UI层、业务层、数据层基本分离
2. **职责混合**: 部分类承担了过多职责
3. **耦合度高**: UI与业务逻辑深度耦合
4. **扩展性差**: 新增功能需要修改多处代码
### 重构目标
1. **清晰分层**: 每层职责明确,依赖关系清晰
2. **低耦合**: 通过协议和依赖注入降低耦合
3. **高内聚**: 每个类只负责一个核心功能
4. **易测试**: 业务逻辑可独立测试
5. **易扩展**: 新增功能只需修改对应层
### 脱离UI使用可行性
- **完全可分离**: 数据层 (100%)
- **部分可分离**: 业务层 (60-70%)
- **难以分离**: UI层 (10-30%)
通过重构可以将约70%的功能脱离UI使用为未来的功能扩展和测试提供更好的基础。