STEAL_STATUS.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace App\Module\SocialFarm\Enums;
  3. /**
  4. * 偷菜状态枚举
  5. *
  6. * 定义偷菜操作的各种状态
  7. */
  8. enum STEAL_STATUS: int
  9. {
  10. case SUCCESS = 1; // 偷菜成功
  11. case FAILED = 2; // 偷菜失败
  12. case PROTECTED = 3; // 受保护无法偷
  13. case NO_PERMISSION = 4; // 无权限偷菜
  14. case LIMIT_EXCEEDED = 5; // 超过次数限制
  15. case CROP_NOT_READY = 6; // 作物未成熟
  16. case ALREADY_STOLEN = 7; // 已被偷过
  17. /**
  18. * 获取状态描述
  19. */
  20. public function getDescription(): string
  21. {
  22. return match($this) {
  23. self::SUCCESS => '偷菜成功',
  24. self::FAILED => '偷菜失败',
  25. self::PROTECTED => '受保护无法偷菜',
  26. self::NO_PERMISSION => '无权限偷菜',
  27. self::LIMIT_EXCEEDED => '超过每日偷菜次数限制',
  28. self::CROP_NOT_READY => '作物未成熟',
  29. self::ALREADY_STOLEN => '作物已被偷过',
  30. };
  31. }
  32. /**
  33. * 获取状态颜色(用于前端显示)
  34. */
  35. public function getColor(): string
  36. {
  37. return match($this) {
  38. self::SUCCESS => 'green',
  39. self::FAILED => 'red',
  40. self::PROTECTED => 'orange',
  41. self::NO_PERMISSION => 'red',
  42. self::LIMIT_EXCEEDED => 'orange',
  43. self::CROP_NOT_READY => 'gray',
  44. self::ALREADY_STOLEN => 'gray',
  45. };
  46. }
  47. /**
  48. * 是否为成功状态
  49. */
  50. public function isSuccess(): bool
  51. {
  52. return $this === self::SUCCESS;
  53. }
  54. /**
  55. * 是否为失败状态
  56. */
  57. public function isFailed(): bool
  58. {
  59. return !$this->isSuccess();
  60. }
  61. /**
  62. * 获取所有状态选项(用于后台管理)
  63. */
  64. public static function getOptions(): array
  65. {
  66. return [
  67. self::SUCCESS->value => self::SUCCESS->getDescription(),
  68. self::FAILED->value => self::FAILED->getDescription(),
  69. self::PROTECTED->value => self::PROTECTED->getDescription(),
  70. self::NO_PERMISSION->value => self::NO_PERMISSION->getDescription(),
  71. self::LIMIT_EXCEEDED->value => self::LIMIT_EXCEEDED->getDescription(),
  72. self::CROP_NOT_READY->value => self::CROP_NOT_READY->getDescription(),
  73. self::ALREADY_STOLEN->value => self::ALREADY_STOLEN->getDescription(),
  74. ];
  75. }
  76. }