EXTERNAL_STATUS.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace App\Module\Point\Enums;
  3. use UCore\Enum\EnumCore;
  4. use UCore\Enum\EnumToInt;
  5. /**
  6. * 外部状态枚举
  7. *
  8. * 定义积分操作的外部状态,用于标识操作的处理状态
  9. */
  10. enum EXTERNAL_STATUS: int
  11. {
  12. use EnumToInt, EnumCore;
  13. /**
  14. * 待处理
  15. */
  16. case PENDING = 0;
  17. /**
  18. * 处理中
  19. */
  20. case PROCESSING = 1;
  21. /**
  22. * 已完成
  23. */
  24. case COMPLETED = 2;
  25. /**
  26. * 已失败
  27. */
  28. case FAILED = 3;
  29. /**
  30. * 已取消
  31. */
  32. case CANCELLED = 4;
  33. /**
  34. * 获取状态名称
  35. *
  36. * @return string 状态名称
  37. */
  38. public function getStatusName(): string
  39. {
  40. return match($this) {
  41. self::PENDING => '待处理',
  42. self::PROCESSING => '处理中',
  43. self::COMPLETED => '已完成',
  44. self::FAILED => '已失败',
  45. self::CANCELLED => '已取消',
  46. };
  47. }
  48. /**
  49. * 获取状态描述
  50. *
  51. * @return string 状态描述
  52. */
  53. public function getDescription(): string
  54. {
  55. return match($this) {
  56. self::PENDING => '操作已提交,等待处理',
  57. self::PROCESSING => '操作正在处理中',
  58. self::COMPLETED => '操作已成功完成',
  59. self::FAILED => '操作处理失败',
  60. self::CANCELLED => '操作已被取消',
  61. };
  62. }
  63. /**
  64. * 判断是否为最终状态
  65. *
  66. * @return bool 是否为最终状态
  67. */
  68. public function isFinalStatus(): bool
  69. {
  70. return match($this) {
  71. self::COMPLETED,
  72. self::FAILED,
  73. self::CANCELLED => true,
  74. default => false,
  75. };
  76. }
  77. /**
  78. * 获取所有状态
  79. *
  80. * @return array 所有状态数组
  81. */
  82. public static function getAllStatuses(): array
  83. {
  84. return [
  85. self::PENDING->value => self::PENDING->getStatusName(),
  86. self::PROCESSING->value => self::PROCESSING->getStatusName(),
  87. self::COMPLETED->value => self::COMPLETED->getStatusName(),
  88. self::FAILED->value => self::FAILED->getStatusName(),
  89. self::CANCELLED->value => self::CANCELLED->getStatusName(),
  90. ];
  91. }
  92. }