枚举定义.md 9.6 KB

团队模块枚举定义

1. 概述

本文档定义了团队模块中使用的所有枚举类型,包括推荐关系类型、达人等级、收益来源类型等。这些枚举类型在模块的各个部分都有使用,是理解模块功能的重要基础。

2. 推荐关系相关枚举

2.1 推荐层级 (REFERRAL_LEVEL)

推荐层级枚举定义了用户之间的推荐关系类型。

namespace App\Module\Promotion\Enums;

enum REFERRAL_LEVEL: int {
    case DIRECT = 1;     // 直推关系
    case INDIRECT = 2;   // 间推关系
}

推荐层级说明

层级类型 说明 分成权益
直推关系 1 用户A直接推荐用户B 固定比例分成(通常为5%)
间推关系 2 用户A通过中间用户间接推荐用户C 根据达人等级获得分成

3. 达人等级相关枚举

3.1 达人等级 (TALENT_LEVEL)

达人等级枚举定义了用户的达人等级。

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%

4. 收益相关枚举

4.1 收益来源类型 (PROFIT_SOURCE_TYPE)

收益来源类型枚举定义了团队收益的来源。

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%

4.2 收益记录状态 (PROFIT_RECORD_STATUS)

收益记录状态枚举定义了团队收益记录的状态。

namespace App\Module\Promotion\Enums;

enum PROFIT_RECORD_STATUS: int {
    case PENDING = 0;    // 待处理
    case SUCCESS = 1;    // 成功
    case FAILED = 2;     // 失败
}

收益记录状态说明

状态 说明
待处理 0 收益记录已创建但尚未处理
成功 1 收益已成功分配到用户账户
失败 2 收益分配失败,需要重试或人工处理

5. 团队任务相关枚举

5.1 团队任务类型 (TEAM_TASK_TYPE)

团队任务类型枚举定义了团队可以执行的任务类型。

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 团队成员保持活跃 活跃成员比例达标

5.2 团队任务状态 (TEAM_TASK_STATUS)

团队任务状态枚举定义了团队任务的状态。

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 任务被创建者或管理员取消

6. 推荐码相关枚举

6.1 推荐码状态 (REFERRAL_CODE_STATUS)

推荐码状态枚举定义了推荐码的状态。

namespace App\Module\Promotion\Enums;

enum REFERRAL_CODE_STATUS: int {
    case INACTIVE = 0;   // 未激活
    case ACTIVE = 1;     // 有效
    case DISABLED = 2;   // 已禁用
}

推荐码状态说明

状态 说明
未激活 0 推荐码已生成但尚未激活
有效 1 推荐码有效,可以使用
已禁用 2 推荐码已被禁用,无法使用

7. 枚举使用示例

7.1 推荐关系类型判断

// 判断是否为直推关系
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 '未知关系';
    }
}

7.2 达人等级判断

// 判断是否为达人
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 '未知等级';
    }
}

7.3 收益来源类型判断

// 判断是否为农场收益
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 '未知来源';
    }
}

7.4 团队任务状态判断

// 判断任务是否可以参与
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 '未知状态';
    }
}

8. 枚举扩展指南

如需添加新的枚举值,请按照以下步骤操作:

  1. 在对应的枚举类中添加新的枚举值
  2. 更新相关的业务逻辑,处理新的枚举值
  3. 更新前端展示逻辑,显示新的枚举值
  4. 更新文档,说明新的枚举值的含义和用法

例如,添加新的达人等级:

// 在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;
    }
}

9. 总结

本文档定义了团队模块中使用的所有枚举类型,包括推荐关系类型、达人等级、收益来源类型等。这些枚举类型是模块功能的重要基础,理解这些枚举类型有助于理解模块的整体功能和业务逻辑。

在开发过程中,应该严格按照枚举定义使用这些类型,避免使用魔法数字或字符串,以提高代码的可读性和可维护性。如需添加新的枚举值,请按照枚举扩展指南进行操作,确保相关的业务逻辑和文档都得到更新。