UrsTalentLevel.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. namespace App\Module\UrsPromotion\Enums;
  3. /**
  4. * URS达人等级枚举
  5. *
  6. * 定义URS推广系统中的达人等级
  7. */
  8. enum UrsTalentLevel: int
  9. {
  10. /**
  11. * 非达人 - 默认等级
  12. */
  13. case NONE = 0;
  14. /**
  15. * 初级达人
  16. */
  17. case JUNIOR = 1;
  18. /**
  19. * 中级达人
  20. */
  21. case INTERMEDIATE = 2;
  22. /**
  23. * 高级达人
  24. */
  25. case SENIOR = 3;
  26. /**
  27. * 资深达人
  28. */
  29. case EXPERT = 4;
  30. /**
  31. * 顶级达人
  32. */
  33. case MASTER = 5;
  34. /**
  35. * 获取等级名称
  36. */
  37. public function getName(): string
  38. {
  39. return match($this) {
  40. self::NONE => '青铜',
  41. self::JUNIOR => '白银',
  42. self::INTERMEDIATE => '黄金',
  43. self::SENIOR => '钻石',
  44. self::EXPERT => '至尊',
  45. self::MASTER => '合伙人',
  46. };
  47. }
  48. /**
  49. * 获取等级描述
  50. */
  51. public function getDescription(): string
  52. {
  53. return match($this) {
  54. self::NONE => '普通用户,无达人等级',
  55. self::JUNIOR => '初级达人,享有基础推广收益',
  56. self::INTERMEDIATE => '中级达人,享有更高推广收益',
  57. self::SENIOR => '高级达人,享有优质推广收益',
  58. self::EXPERT => '资深达人,享有专业推广收益',
  59. self::MASTER => '顶级达人,享有最高推广收益',
  60. };
  61. }
  62. /**
  63. * 获取所有等级
  64. */
  65. public static function getAllLevels(): array
  66. {
  67. return [
  68. self::NONE->value => self::NONE->getName(),
  69. self::JUNIOR->value => self::JUNIOR->getName(),
  70. self::INTERMEDIATE->value => self::INTERMEDIATE->getName(),
  71. self::SENIOR->value => self::SENIOR->getName(),
  72. self::EXPERT->value => self::EXPERT->getName(),
  73. self::MASTER->value => self::MASTER->getName(),
  74. ];
  75. }
  76. /**
  77. * 检查是否为有效等级
  78. */
  79. public static function isValidLevel(int $level): bool
  80. {
  81. return in_array($level, [
  82. self::NONE->value,
  83. self::JUNIOR->value,
  84. self::INTERMEDIATE->value,
  85. self::SENIOR->value,
  86. self::EXPERT->value,
  87. self::MASTER->value,
  88. ]);
  89. }
  90. /**
  91. * 获取最高等级
  92. */
  93. public static function getMaxLevel(): int
  94. {
  95. return self::MASTER->value;
  96. }
  97. /**
  98. * 检查是否为达人等级(非0级)
  99. */
  100. public function isTalent(): bool
  101. {
  102. return $this !== self::NONE;
  103. }
  104. /**
  105. * 从整数创建枚举实例
  106. */
  107. public static function fromInt(int $level): ?self
  108. {
  109. return match($level) {
  110. 0 => self::NONE,
  111. 1 => self::JUNIOR,
  112. 2 => self::INTERMEDIATE,
  113. 3 => self::SENIOR,
  114. 4 => self::EXPERT,
  115. 5 => self::MASTER,
  116. default => null,
  117. };
  118. }
  119. /**
  120. * 根据等级值获取等级名称
  121. */
  122. public static function getLevelName(int $level): string
  123. {
  124. $enum = self::fromInt($level);
  125. return $enum ? $enum->getName() : '未知等级';
  126. }
  127. }