本文档定义了团队模块中使用的所有枚举类型,包括推荐关系类型、达人等级、收益来源类型等。这些枚举类型在模块的各个部分都有使用,是理解模块功能的重要基础。
推荐层级枚举定义了用户之间的推荐关系类型。
namespace App\Module\Promotion\Enums;
enum REFERRAL_LEVEL: int {
case DIRECT = 1; // 直推关系
case INDIRECT = 2; // 间推关系
}
| 层级类型 | 值 | 说明 | 分成权益 |
|---|---|---|---|
| 直推关系 | 1 | 用户A直接推荐用户B | 固定比例分成(通常为5%) |
| 间推关系 | 2 | 用户A通过中间用户间接推荐用户C | 根据达人等级获得分成 |
达人等级枚举定义了用户的达人等级。
namespace App\Module\Promotion\Enums;
enum TALENT_LEVEL: int {
case NONE = 0; // 非达人
case JUNIOR = 1; // 初级达人
case INTERMEDIATE = 2; // 中级达人
case SENIOR = 3; // 高级达人
case EXPERT = 4; // 资深达人
case MASTER = 5; // 顶级达人
}
| 达人等级 | 值 | 名称 | 升级条件 | 间推分成比例 |
|---|---|---|---|---|
| 非达人 | 0 | 非达人 | 默认 | 0% |
| 初级达人 | 1 | 初级达人 | 直推5人且团队总人数≥10 | 1% |
| 中级达人 | 2 | 中级达人 | 直推10人且团队总人数≥30 | 1.5% |
| 高级达人 | 3 | 高级达人 | 直推20人且团队总人数≥50 | 2% |
| 资深达人 | 4 | 资深达人 | 直推30人且团队总人数≥100 | 2.5% |
| 顶级达人 | 5 | 顶级达人 | 直推50人且团队总人数≥200 | 3% |
收益来源类型枚举定义了团队收益的来源。
namespace App\Module\Promotion\Enums;
enum PROFIT_SOURCE_TYPE: string {
case FARM_HARVEST = 'farm_harvest'; // 农场收获
case TASK_COMPLETE = 'task_complete'; // 任务完成
case ITEM_SELL = 'item_sell'; // 物品出售
}
| 来源类型 | 值 | 说明 | 默认直推分成 |
|---|---|---|---|
| 农场收获 | farm_harvest | 来自Farm模块的作物收获 | 5% |
| 任务完成 | task_complete | 来自Task模块的任务奖励 | 3% |
| 物品出售 | item_sell | 来自GameItems模块的物品出售 | 2% |
收益记录状态枚举定义了团队收益记录的状态。
namespace App\Module\Promotion\Enums;
enum PROFIT_RECORD_STATUS: int {
case PENDING = 0; // 待处理
case SUCCESS = 1; // 成功
case FAILED = 2; // 失败
}
| 状态 | 值 | 说明 |
|---|---|---|
| 待处理 | 0 | 收益记录已创建但尚未处理 |
| 成功 | 1 | 收益已成功分配到用户账户 |
| 失败 | 2 | 收益分配失败,需要重试或人工处理 |
团队任务类型枚举定义了团队可以执行的任务类型。
namespace App\Module\Promotion\Enums;
enum TEAM_TASK_TYPE: string {
case PLANTING = 'planting'; // 种植任务
case HARVESTING = 'harvesting'; // 收获任务
case REFERRAL = 'referral'; // 推荐任务
case ACTIVITY = 'activity'; // 活跃度任务
}
| 任务类型 | 值 | 说明 | 完成条件 |
|---|---|---|---|
| 种植任务 | planting | 团队成员种植特定作物 | 累计种植数量达标 |
| 收获任务 | harvesting | 团队成员收获特定作物 | 累计收获数量达标 |
| 推荐任务 | referral | 团队成员发展新成员 | 新增团队成员数量达标 |
| 活跃度任务 | activity | 团队成员保持活跃 | 活跃成员比例达标 |
团队任务状态枚举定义了团队任务的状态。
namespace App\Module\Promotion\Enums;
enum TEAM_TASK_STATUS: int {
case ACTIVE = 1; // 进行中
case COMPLETED = 2; // 已完成
case EXPIRED = 3; // 已过期
case CANCELLED = 4; // 已取消
}
| 状态 | 值 | 说明 |
|---|---|---|
| 进行中 | 1 | 任务正在进行中 |
| 已完成 | 2 | 任务已完成并发放奖励 |
| 已过期 | 3 | 任务未完成但已过期 |
| 已取消 | 4 | 任务被创建者或管理员取消 |
推荐码状态枚举定义了推荐码的状态。
namespace App\Module\Promotion\Enums;
enum REFERRAL_CODE_STATUS: int {
case INACTIVE = 0; // 未激活
case ACTIVE = 1; // 有效
case DISABLED = 2; // 已禁用
}
| 状态 | 值 | 说明 |
|---|---|---|
| 未激活 | 0 | 推荐码已生成但尚未激活 |
| 有效 | 1 | 推荐码有效,可以使用 |
| 已禁用 | 2 | 推荐码已被禁用,无法使用 |
// 判断是否为直推关系
public function isDirectReferral(int $level): bool
{
return $level == REFERRAL_LEVEL::DIRECT;
}
// 获取推荐关系描述
public function getReferralLevelDescription(int $level): string
{
switch ($level) {
case REFERRAL_LEVEL::DIRECT:
return '直接推荐';
case REFERRAL_LEVEL::INDIRECT:
return '间接推荐';
default:
return '未知关系';
}
}
// 判断是否为达人
public function isTalent(int $level): bool
{
return $level > TALENT_LEVEL::NONE;
}
// 获取达人等级名称
public function getTalentLevelName(int $level): string
{
switch ($level) {
case TALENT_LEVEL::NONE:
return '非达人';
case TALENT_LEVEL::JUNIOR:
return '初级达人';
case TALENT_LEVEL::INTERMEDIATE:
return '中级达人';
case TALENT_LEVEL::SENIOR:
return '高级达人';
case TALENT_LEVEL::EXPERT:
return '资深达人';
case TALENT_LEVEL::MASTER:
return '顶级达人';
default:
return '未知等级';
}
}
// 判断是否为农场收益
public function isFarmProfit(string $sourceType): bool
{
return $sourceType == PROFIT_SOURCE_TYPE::FARM_HARVEST;
}
// 获取收益来源描述
public function getProfitSourceDescription(string $sourceType): string
{
switch ($sourceType) {
case PROFIT_SOURCE_TYPE::FARM_HARVEST:
return '农场收获';
case PROFIT_SOURCE_TYPE::TASK_COMPLETE:
return '任务完成';
case PROFIT_SOURCE_TYPE::ITEM_SELL:
return '物品出售';
default:
return '未知来源';
}
}
// 判断任务是否可以参与
public function isTaskJoinable(int $status): bool
{
return $status == TEAM_TASK_STATUS::ACTIVE;
}
// 获取任务状态描述
public function getTaskStatusDescription(int $status): string
{
switch ($status) {
case TEAM_TASK_STATUS::ACTIVE:
return '进行中';
case TEAM_TASK_STATUS::COMPLETED:
return '已完成';
case TEAM_TASK_STATUS::EXPIRED:
return '已过期';
case TEAM_TASK_STATUS::CANCELLED:
return '已取消';
default:
return '未知状态';
}
}
如需添加新的枚举值,请按照以下步骤操作:
例如,添加新的达人等级:
// 在TALENT_LEVEL枚举中添加新的达人等级
enum TALENT_LEVEL: int {
case NONE = 0; // 非达人
case JUNIOR = 1; // 初级达人
case INTERMEDIATE = 2; // 中级达人
case SENIOR = 3; // 高级达人
case EXPERT = 4; // 资深达人
case MASTER = 5; // 顶级达人
case LEGENDARY = 6; // 传奇达人(新增)
}
然后更新相关的业务逻辑:
// 在TalentService中添加新达人等级的分成比例
public function getTalentProfitRate(int $level): float
{
switch ($level) {
case TALENT_LEVEL::NONE:
return 0.0;
case TALENT_LEVEL::JUNIOR:
return 0.01;
case TALENT_LEVEL::INTERMEDIATE:
return 0.015;
case TALENT_LEVEL::SENIOR:
return 0.02;
case TALENT_LEVEL::EXPERT:
return 0.025;
case TALENT_LEVEL::MASTER:
return 0.03;
case TALENT_LEVEL::LEGENDARY: // 新增
return 0.035;
default:
return 0.0;
}
}
本文档定义了团队模块中使用的所有枚举类型,包括推荐关系类型、达人等级、收益来源类型等。这些枚举类型是模块功能的重要基础,理解这些枚举类型有助于理解模块的整体功能和业务逻辑。
在开发过程中,应该严格按照枚举定义使用这些类型,避免使用魔法数字或字符串,以提高代码的可读性和可维护性。如需添加新的枚举值,请按照枚举扩展指南进行操作,确保相关的业务逻辑和文档都得到更新。