TransactionType.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace App\Enums;
  3. /**
  4. * 交易类型枚举类
  5. */
  6. enum TransactionType: int
  7. {
  8. /**
  9. * 交易类型:充值
  10. */
  11. case RECHARGE = 1;
  12. /**
  13. * 交易类型:提现
  14. */
  15. case WITHDRAW = 2;
  16. /**
  17. * 交易类型:支付
  18. */
  19. case PAYMENT = 3;
  20. /**
  21. * 交易类型:退款
  22. */
  23. case REFUND = 4;
  24. /**
  25. * 交易类型:佣金
  26. */
  27. case COMMISSION = 5;
  28. /**
  29. * 交易类型:奖励
  30. */
  31. case BONUS = 6;
  32. /**
  33. * 交易类型:罚款
  34. */
  35. case PENALTY = 7;
  36. /**
  37. * 获取类型的显示文本
  38. *
  39. * @return string 类型的中文描述
  40. */
  41. public function label(): string
  42. {
  43. return match ($this) {
  44. self::RECHARGE => '充值',
  45. self::WITHDRAW => '提现',
  46. self::PAYMENT => '支付',
  47. self::REFUND => '退款',
  48. self::COMMISSION => '佣金',
  49. self::BONUS => '奖励',
  50. self::PENALTY => '罚款',
  51. };
  52. }
  53. /**
  54. * 获取类型的整数值
  55. *
  56. * @return int 类型值
  57. */
  58. public function value(): int
  59. {
  60. return $this->value;
  61. }
  62. /**
  63. * 检查当前类型是否与指定类型相同
  64. *
  65. * @param self $type 要比较的类型
  66. * @return bool 如果类型相同返回 true,否则返回 false
  67. */
  68. public function is(self $type): bool
  69. {
  70. return $this === $type;
  71. }
  72. /**
  73. * 根据整数值创建对应的类型枚举实例
  74. *
  75. * @param int $value 类型值
  76. * @return self|null 返回对应的类型枚举实例,如果值无效则返回 null
  77. */
  78. public static function fromValue(int $value): ?self
  79. {
  80. return match ($value) {
  81. self::RECHARGE->value => self::RECHARGE,
  82. self::WITHDRAW->value => self::WITHDRAW,
  83. self::PAYMENT->value => self::PAYMENT,
  84. self::REFUND->value => self::REFUND,
  85. self::COMMISSION->value => self::COMMISSION,
  86. self::BONUS->value => self::BONUS,
  87. self::PENALTY->value => self::PENALTY,
  88. default => null
  89. };
  90. }
  91. /**
  92. * 获取所有类型的值数组
  93. *
  94. * @return array 包含所有类型值的数组
  95. */
  96. public static function values(): array
  97. {
  98. return array_column(self::cases(), 'value');
  99. }
  100. /**
  101. * 获取所有类型的键值对数组
  102. *
  103. * @return array 类型值作为键,显示文本作为值的关联数组
  104. */
  105. public static function all(): array
  106. {
  107. return [
  108. self::RECHARGE->value => self::RECHARGE->label(),
  109. self::WITHDRAW->value => self::WITHDRAW->label(),
  110. self::PAYMENT->value => self::PAYMENT->label(),
  111. self::REFUND->value => self::REFUND->label(),
  112. self::COMMISSION->value => self::COMMISSION->label(),
  113. self::BONUS->value => self::BONUS->label(),
  114. self::PENALTY->value => self::PENALTY->label(),
  115. ];
  116. }
  117. }