与团队模块集成.md 7.4 KB

农场模块与团队模块集成

1. 概述

农场模块与团队模块的集成主要围绕作物收获收益的分成机制展开。当用户在农场收获作物时,系统会根据用户的推荐关系,将部分收益分配给其上级推荐人,实现"直间推播种收获贡献百分比农作物收益"的核心功能。

2. 集成目标

  1. 收益分成:作物收获时触发收益分成,按比例分配给推荐人
  2. 达人加成:达人等级影响农场产出,提高团队整体收益
  3. 团队协作:支持团队成员协同完成农场任务
  4. 数据共享:农场活动数据共享给团队模块,用于统计和分析

3. 收益分成机制

3.1 收益来源

农场模块中的收益主要来自作物收获,当用户收获作物时,系统会:

  1. 计算作物的基础产量
  2. 应用土地类型、房屋等级和灾害影响等因素
  3. 得出最终产量作为用户的原始收益
  4. 触发收益分成事件

3.2 分成比例

根据团队模块的规则,收益分成比例如下:

  • 直推分成:直推上级获得下级收益的5%
  • 间推分成:间推上级根据达人等级获得下级收益的1%-3%
  • 分成范围:间推分成仅对20代以内的团队成员有效

3.3 分成流程

  1. 用户收获作物,获得原始收益
  2. 农场模块触发CropHarvestedEvent事件
  3. 团队模块监听该事件,获取收益信息
  4. 团队模块查询用户的推荐关系
  5. 根据推荐关系和达人等级计算分成
  6. 将分成收益添加到推荐人账户
  7. 记录分成明细

4. 达人加成机制

4.1 产出加成

团队模块中的达人等级可以为农场产量提供额外加成:

达人等级 名称 产出加成
1 初级达人 +1%
2 中级达人 +2%
3 高级达人 +3%
4 资深达人 +4%
5 顶级达人 +5%

4.2 加成应用

农场模块在计算作物最终产量时,会调用团队模块的接口获取达人加成:

// 计算最终产量
$finalOutput = $baseOutput * (1 + $landBonus) * (1 + $houseBonus) * (1 - $disasterImpact) * (1 + $talentBonus);

其中$talentBonus就是从团队模块获取的达人产出加成。

5. 事件交互

5.1 农场模块触发的事件

5.1.1 作物收获事件

/**
 * 作物收获事件
 * 
 * @param int $userId 用户ID
 * @param int $cropId 作物ID
 * @param int $outputItemId 产出物品ID
 * @param int $outputAmount 产出数量
 */
class CropHarvestedEvent

当用户收获作物时,农场模块会触发此事件,团队模块监听该事件并处理收益分成。

5.1.2 作物种植事件

/**
 * 作物种植事件
 * 
 * @param int $userId 用户ID
 * @param int $landId 土地ID
 * @param int $seedId 种子ID
 */
class CropPlantedEvent

当用户种植作物时,农场模块会触发此事件,团队模块可以监听该事件用于任务统计。

5.2 团队模块触发的事件

5.2.1 达人等级变更事件

/**
 * 达人等级变更事件
 * 
 * @param int $userId 用户ID
 * @param int $oldLevel 旧等级
 * @param int $newLevel 新等级
 */
class TalentLevelChangedEvent

当用户达人等级变更时,团队模块会触发此事件,农场模块可以监听该事件更新产出加成。

6. 接口调用

6.1 农场模块调用团队模块接口

6.1.1 获取达人产出加成

/**
 * 获取用户的达人产出加成
 * 
 * @param int $userId 用户ID
 * @return float 产出加成比例
 */
public function getTalentOutputBonus(int $userId): float

农场模块在计算作物产量时调用此接口获取达人加成。

6.1.2 获取团队成员信息

/**
 * 获取用户的团队成员信息
 * 
 * @param int $userId 用户ID
 * @return array 团队成员信息
 */
public function getTeamMembers(int $userId): array

农场模块在团队任务中调用此接口获取团队成员信息。

6.2 团队模块调用农场模块接口

6.2.1 获取农场活动统计

/**
 * 获取用户的农场活动统计
 * 
 * @param int $userId 用户ID
 * @param int $days 统计天数
 * @return array 活动统计
 */
public function getUserFarmActivityStats(int $userId, int $days = 7): array

团队模块在计算团队活跃度时调用此接口获取农场活动数据。

7. 团队任务系统

7.1 团队种植任务

团队模块可以创建团队种植任务,要求团队成员在农场中种植特定作物:

/**
 * 创建团队种植任务
 * 
 * @param int $creatorId 创建者ID
 * @param int $seedId 种子ID
 * @param int $targetCount 目标数量
 * @param array $rewards 奖励信息
 * @return array 任务信息
 */
public function createTeamPlantingTask(int $creatorId, int $seedId, int $targetCount, array $rewards): array

7.2 团队收获任务

团队模块可以创建团队收获任务,要求团队成员在农场中收获特定数量的作物:

/**
 * 创建团队收获任务
 * 
 * @param int $creatorId 创建者ID
 * @param int $seedId 种子ID
 * @param int $targetCount 目标数量
 * @param array $rewards 奖励信息
 * @return array 任务信息
 */
public function createTeamHarvestTask(int $creatorId, int $seedId, int $targetCount, array $rewards): array

8. 数据统计与分析

8.1 团队农场活跃度

团队模块可以统计团队成员在农场中的活跃度:

/**
 * 统计团队农场活跃度
 * 
 * @param int $userId 用户ID
 * @param int $days 统计天数
 * @return array 活跃度统计
 */
public function calculateTeamFarmActivity(int $userId, int $days = 7): array

返回的统计数据包括:

  • 种植次数
  • 收获次数
  • 活跃成员数
  • 人均种植和收获
  • 活跃率

8.2 团队收益分析

团队模块可以分析团队在农场中的收益情况:

/**
 * 分析团队农场收益
 * 
 * @param int $userId 用户ID
 * @param string $timeRange 时间范围
 * @return array 收益分析
 */
public function analyzeTeamFarmProfit(int $userId, string $timeRange = 'month'): array

返回的分析数据包括:

  • 总收益
  • 直推收益
  • 间推收益
  • 收益比例
  • 时间趋势

9. 实现步骤

9.1 前置条件

  1. 农场模块已实现作物收获事件
  2. 团队模块已实现推荐关系和达人等级系统
  3. 两个模块都已注册到应用中

9.2 实现步骤

  1. 配置事件监听:在团队模块中注册监听农场模块的事件
  2. 实现收益分成:在团队模块中实现农场收益的分成逻辑
  3. 添加达人权益:在农场模块中调用团队模块接口获取达人加成
  4. 实现团队任务:创建和管理与农场相关的团队任务
  5. 数据统计分析:实现团队在农场模块中的活跃度和收益分析

10. 总结

农场模块与团队模块的集成主要通过事件驱动机制实现,核心功能是"直间推播种收获贡献百分比农作物收益"。当农场模块中的用户收获作物时,团队模块会根据用户的推荐关系计算并分配收益给其上级。同时,团队模块的达人等级系统也为农场模块提供产出加成,提高达人用户的游戏体验。

这种集成方式保持了模块间的松耦合,同时提供了灵活的收益分成机制,鼓励用户发展团队,形成良性的社交生态。通过团队任务和数据统计分析,进一步增强了两个模块的协同效应,提升了游戏的社交性和粘性。