TransferStatus.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace App\Module\Transfer\Enums;
  3. use UCore\Enum\EnumCore;
  4. use UCore\Enum\EnumExpression;
  5. use UCore\Enum\EnumToInt;
  6. /**
  7. * 划转订单状态枚举
  8. */
  9. enum TransferStatus: int
  10. {
  11. use EnumToInt, EnumCore, EnumExpression;
  12. /**
  13. * 已创建 - 订单已创建,等待处理
  14. */
  15. case CREATED = 1;
  16. /**
  17. * 处理中 - 正在处理中,等待回调
  18. */
  19. case PROCESSING = 20;
  20. /**
  21. * 已回调 - 回调成功,等待最终确认
  22. */
  23. case CALLBACK = 30;
  24. /**
  25. * 已完成 - 订单处理完成
  26. */
  27. case COMPLETED = 100;
  28. /**
  29. * 失败 - 订单处理失败
  30. */
  31. case FAILED = -1;
  32. /**
  33. * 获取状态描述
  34. */
  35. public function getDescription(): string
  36. {
  37. return match ($this) {
  38. self::CREATED => '已创建',
  39. self::PROCESSING => '处理中',
  40. self::CALLBACK => '已回调',
  41. self::COMPLETED => '已完成',
  42. self::FAILED => '失败',
  43. };
  44. }
  45. /**
  46. * 获取状态颜色(用于后台显示)
  47. */
  48. public function getColor(): string
  49. {
  50. return match ($this) {
  51. self::CREATED => 'info',
  52. self::PROCESSING => 'warning',
  53. self::CALLBACK => 'primary',
  54. self::COMPLETED => 'success',
  55. self::FAILED => 'danger',
  56. };
  57. }
  58. /**
  59. * 判断是否为最终状态
  60. */
  61. public function isFinal(): bool
  62. {
  63. return in_array($this, [self::COMPLETED, self::FAILED]);
  64. }
  65. /**
  66. * 判断是否可以重试
  67. */
  68. public function canRetry(): bool
  69. {
  70. return $this === self::FAILED;
  71. }
  72. }