团队模块是开心农场系统的核心模块之一,负责管理用户之间的推荐关系、团队结构、达人等级和收益分成机制。该模块通过建立用户间的直推和间推关系,形成团队结构,并在团队成员产生收益时进行分成,鼓励用户发展团队,形成良性的社交生态。
团队模块采用分层架构设计,包括以下层次:
┌─────────────┐
│ Controller │ 控制器层:处理HTTP请求
└──────┬──────┘
│
▼
┌─────────────┐ ┌─────────────┐
│ Event │◄──┤ Service │ 服务层:对外提供服务接口
└─────────────┘ └──────┬──────┘
│
▼
┌─────────────┐
│ Logic │ 逻辑层:实现业务逻辑
└──────┬──────┘
│
▼
┌─────────────┐
│ Repository │ 仓库层:数据访问和持久化
└──────┬──────┘
│
▼
┌─────────────┐
│ Model │ 模型层:数据结构定义
└─────────────┘
Service:对外提供服务接口,是模块的主要入口
Logic:实现业务逻辑,处理复杂的业务规则
Repository:数据访问和持久化,封装数据库操作
Model:数据结构定义,对应数据库表
Event:事件定义,用于模块间通信
团队模块与其他模块的依赖关系:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ User模块 │◄────►│ Promotion模块 │◄────►│ Farm模块 │
└─────────────┘ └──────┬──────┘ └─────────────┘
│
▼
┌─────────────┐
│GameItems模块│
└─────────────┘
┌─────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 用户 │ │ UserService │ │ReferralService│ │ReferralLogic│
└────┬────┘ └──────┬──────┘ └───────┬─────┘ └───────┬─────┘
│ │ │ │
│ 注册(推荐码) │ │ │
│────────────────►│ │ │
│ │ │ │
│ │ 验证推荐码 │ │
│ │───────────────────►│ │
│ │ │ │
│ │ │ 解析推荐人ID │
│ │ │───────────────────►
│ │ │ │
│ │ │ │
│ │ │◄───────────────────
│ │ │ │
│ │ │ 建立推荐关系 │
│ │ │───────────────────►
│ │ │ │
│ │ │ │
│ │ │◄───────────────────
│ │ │ │
│ │◄───────────────────│ │
│ │ │ │
│◄────────────────│ │ │
│ │ │ │
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ReferralService│ │TalentService │ │ TalentLogic │
└───────┬─────┘ └───────┬─────┘ └───────┬─────┘
│ │ │
│ 建立推荐关系 │ │
│───────────────────┼───────────────────┼────►
│ │ │
│ 触发检查达人等级 │ │
│───────────────────► │
│ │ │
│ │ 获取团队规模 │
│ │───────────────────►
│ │ │
│ │ │
│ │◄───────────────────
│ │ │
│ │ 计算新达人等级 │
│ │───────────────────►
│ │ │
│ │ │
│ │◄───────────────────
│ │ │
│ │ 更新达人等级 │
│ │───────────────────►
│ │ │
│ │ │
│ │◄───────────────────
│ │ │
│ │ 触发等级提升事件 │
│ │───────────────────►
│ │ │
┌─────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│Farm模块 │ │PromotionProfitService│ │ ProfitLogic │ │GameItems模块│
└────┬────┘ └───────┬─────┘ └───────┬─────┘ └───────┬─────┘
│ │ │ │
│ 收获事件 │ │ │
│─────────────────►│ │ │
│ │ │ │
│ │ 获取推荐关系 │ │
│ │───────────────────► │
│ │ │ │
│ │ │ │
│ │◄─────────────────── │
│ │ │ │
│ │ 计算分成比例 │ │
│ │───────────────────► │
│ │ │ │
│ │ │ │
│ │◄─────────────────── │
│ │ │ │
│ │ 记录分成收益 │ │
│ │───────────────────► │
│ │ │ │
│ │ │ │
│ │◄─────────────────── │
│ │ │ │
│ │ 添加收益物品 │ │
│ │───────────────────┼───────────────────►
│ │ │ │
│ │ │ │
│ │◄───────────────────┼───────────────────
│ │ │ │
团队模块采用扁平化存储推荐关系,即直接存储用户与其所有上级(直推和间推)的关系,而不是仅存储直接推荐关系。这种设计有以下优点:
示例数据结构:
user_id | referrer_id | level
--------|------------|------
2 | 1 | 1 # 用户1直推了用户2
3 | 2 | 1 # 用户2直推了用户3
3 | 1 | 2 # 用户1间推了用户3
达人等级计算采用定期更新和事件触发相结合的方式:
收益分成采用灵活的策略模式设计:
模块间采用事件驱动的松耦合通信方式:
达人等级系统设计为可扩展的:
收益分成系统支持多种收益来源:
分成规则设计为可扩展的:
所有输入数据进行严格验证:
防止恶意刷取团队收益:
确保数据安全和隔离:
优化数据库设计和查询:
合理使用缓存提高性能:
耗时操作采用异步处理:
团队模块作为开心农场系统的核心模块之一,通过建立用户间的推荐关系、团队结构、达人等级和收益分成机制,鼓励用户发展团队,形成良性的社交生态。模块设计注重灵活性、可扩展性和性能,采用分层架构和事件驱动通信,与其他模块保持松耦合关系。通过合理的数据结构设计和优化策略,确保系统在大规模用户场景下的稳定运行。