SOCIAL_ACTION.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace App\Module\SocialFarm\Enums;
  3. /**
  4. * 社交行为枚举
  5. *
  6. * 定义社交农场中的各种行为类型
  7. */
  8. enum SOCIAL_ACTION: string
  9. {
  10. case STEAL = 'steal'; // 偷菜
  11. case HELP_WATER = 'help_water'; // 帮助浇水
  12. case HELP_FERTILIZE = 'help_fertilize'; // 帮助施肥
  13. case HELP_WEED = 'help_weed'; // 帮助除草
  14. case HELP_PEST = 'help_pest'; // 帮助杀虫
  15. case HELP_HARVEST = 'help_harvest'; // 帮助收获
  16. case VISIT = 'visit'; // 访问农场
  17. case GIFT = 'gift'; // 赠送礼物
  18. case LIKE = 'like'; // 点赞
  19. /**
  20. * 获取行为描述
  21. */
  22. public function getDescription(): string
  23. {
  24. return match($this) {
  25. self::STEAL => '偷菜',
  26. self::HELP_WATER => '帮助浇水',
  27. self::HELP_FERTILIZE => '帮助施肥',
  28. self::HELP_WEED => '帮助除草',
  29. self::HELP_PEST => '帮助杀虫',
  30. self::HELP_HARVEST => '帮助收获',
  31. self::VISIT => '访问农场',
  32. self::GIFT => '赠送礼物',
  33. self::LIKE => '点赞',
  34. };
  35. }
  36. /**
  37. * 获取行为图标
  38. */
  39. public function getIcon(): string
  40. {
  41. return match($this) {
  42. self::STEAL => '🥕',
  43. self::HELP_WATER => '💧',
  44. self::HELP_FERTILIZE => '🌱',
  45. self::HELP_WEED => '🌿',
  46. self::HELP_PEST => '🐛',
  47. self::HELP_HARVEST => '🌾',
  48. self::VISIT => '👀',
  49. self::GIFT => '🎁',
  50. self::LIKE => '👍',
  51. };
  52. }
  53. /**
  54. * 是否为帮助类行为
  55. */
  56. public function isHelpAction(): bool
  57. {
  58. return in_array($this, [
  59. self::HELP_WATER,
  60. self::HELP_FERTILIZE,
  61. self::HELP_WEED,
  62. self::HELP_PEST,
  63. self::HELP_HARVEST,
  64. ]);
  65. }
  66. /**
  67. * 是否为负面行为
  68. */
  69. public function isNegativeAction(): bool
  70. {
  71. return $this === self::STEAL;
  72. }
  73. /**
  74. * 是否为正面行为
  75. */
  76. public function isPositiveAction(): bool
  77. {
  78. return $this->isHelpAction() || in_array($this, [
  79. self::GIFT,
  80. self::LIKE,
  81. ]);
  82. }
  83. /**
  84. * 获取行为分类
  85. */
  86. public function getCategory(): string
  87. {
  88. return match($this) {
  89. self::STEAL => 'steal',
  90. self::HELP_WATER, self::HELP_FERTILIZE, self::HELP_WEED,
  91. self::HELP_PEST, self::HELP_HARVEST => 'help',
  92. self::VISIT => 'visit',
  93. self::GIFT, self::LIKE => 'social',
  94. };
  95. }
  96. /**
  97. * 获取所有帮助类行为
  98. */
  99. public static function getHelpActions(): array
  100. {
  101. return [
  102. self::HELP_WATER,
  103. self::HELP_FERTILIZE,
  104. self::HELP_WEED,
  105. self::HELP_PEST,
  106. self::HELP_HARVEST,
  107. ];
  108. }
  109. /**
  110. * 获取所有行为选项(用于后台管理)
  111. */
  112. public static function getOptions(): array
  113. {
  114. return [
  115. self::STEAL->value => self::STEAL->getDescription(),
  116. self::HELP_WATER->value => self::HELP_WATER->getDescription(),
  117. self::HELP_FERTILIZE->value => self::HELP_FERTILIZE->getDescription(),
  118. self::HELP_WEED->value => self::HELP_WEED->getDescription(),
  119. self::HELP_PEST->value => self::HELP_PEST->getDescription(),
  120. self::HELP_HARVEST->value => self::HELP_HARVEST->getDescription(),
  121. self::VISIT->value => self::VISIT->getDescription(),
  122. self::GIFT->value => self::GIFT->getDescription(),
  123. self::LIKE->value => self::LIKE->getDescription(),
  124. ];
  125. }
  126. }