| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- namespace App\Module\UrsPromotion\Enums;
- /**
- * URS推广关系层级枚举
- *
- * 定义URS推广系统中的推荐关系层级
- */
- enum UrsPromotionRelationLevel: int
- {
- /**
- * 直推关系 - 第一层级
- */
- case DIRECT = 1;
- /**
- * 间推关系 - 第二层级及以上
- */
- case INDIRECT = 2;
- /**
- * 获取层级名称
- */
- public function getName(): string
- {
- return match($this) {
- self::DIRECT => '直推',
- self::INDIRECT => '间推',
- };
- }
- /**
- * 获取层级描述
- */
- public function getDescription(): string
- {
- return match($this) {
- self::DIRECT => '直接推荐的下级用户',
- self::INDIRECT => '间接推荐的下级用户(二级及以上)',
- };
- }
- /**
- * 获取所有层级
- */
- public static function getAllLevels(): array
- {
- return [
- self::DIRECT->value => self::DIRECT->getName(),
- self::INDIRECT->value => self::INDIRECT->getName(),
- ];
- }
- /**
- * 检查是否为有效层级
- */
- public static function isValidLevel(int $level): bool
- {
- return $level >= self::DIRECT->value && $level <= self::getMaxLevel();
- }
- /**
- * 获取最大层级(支持20代)
- */
- public static function getMaxLevel(): int
- {
- return 20;
- }
- /**
- * 获取团队统计深度(达人等级计算使用)
- */
- public static function getTeamStatsDepth(): int
- {
- return 20;
- }
- /**
- * 根据深度获取层级类型
- */
- public static function getLevelByDepth(int $depth): int
- {
- return $depth === 1 ? self::DIRECT->value : self::INDIRECT->value;
- }
- /**
- * 获取层级名称(根据深度)
- */
- public static function getLevelNameByDepth(int $depth): string
- {
- if ($depth === 1) {
- return '直推';
- } elseif ($depth <= 20) {
- return $depth . '级间推';
- } else {
- return '超级间推';
- }
- }
- }
|