OrderStatus.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <?php
  2. namespace App\Enums;
  3. /**
  4. * 订单状态枚举类
  5. */
  6. enum OrderStatus: int
  7. {
  8. /**
  9. * 订单状态:下单
  10. */
  11. case CREATED = 1;
  12. /**
  13. * 订单状态:指定
  14. */
  15. case ASSIGNED = 2;
  16. /**
  17. * 订单状态:支付
  18. */
  19. case PAID = 3;
  20. /**
  21. * 订单状态:取消
  22. */
  23. case CANCELLED = 4;
  24. /**
  25. * 订单状态:退款中
  26. */
  27. case REFUNDING = 5;
  28. /**
  29. * 订单状态:退款成功
  30. */
  31. case REFUNDED = 6;
  32. /**
  33. * 订单状态:退款失败
  34. */
  35. case REFUND_FAILED = 7;
  36. /**
  37. * 订单状态:接单
  38. */
  39. case ACCEPTED = 8;
  40. /**
  41. * 订单状态:出发
  42. */
  43. case DEPARTED = 9;
  44. /**
  45. * 订单状态:到达
  46. */
  47. case ARRIVED = 10;
  48. /**
  49. * 订单状态:开始服务
  50. */
  51. case STARTED = 11;
  52. /**
  53. * 订单状态:服务中
  54. */
  55. case SERVING = 12;
  56. /**
  57. * 订单状态:服务结束
  58. */
  59. case FINISHED = 13;
  60. /**
  61. * 订单状态:撤离
  62. */
  63. case LEFT = 14;
  64. /**
  65. * 订单状态:已评价
  66. */
  67. case COMMENTED = 15;
  68. /**
  69. * 订单状态:已拒单
  70. */
  71. case REJECTED = 16;
  72. /**
  73. * 订单状态:报警
  74. */
  75. case ALARM = 17;
  76. /**
  77. * 订单状态:服务完成
  78. */
  79. case COMPLETED = 18;
  80. /**
  81. * 获取状态的显示文本
  82. *
  83. * @return string 状态的中文描述
  84. */
  85. public function label(): string
  86. {
  87. return match ($this) {
  88. self::CREATED => '下单',
  89. self::ASSIGNED => '指定',
  90. self::PAID => '支付',
  91. self::CANCELLED => '取消',
  92. self::REFUNDING => '退款中',
  93. self::REFUNDED => '退款成功',
  94. self::REFUND_FAILED => '退款失败',
  95. self::ACCEPTED => '接单',
  96. self::DEPARTED => '出发',
  97. self::ARRIVED => '到达',
  98. self::STARTED => '开始服务',
  99. self::SERVING => '服务中',
  100. self::FINISHED => '服务结束',
  101. self::LEFT => '撤离',
  102. self::COMMENTED => '已评价',
  103. self::REJECTED => '已拒单',
  104. self::ALARM => '报警',
  105. self::COMPLETED => '服务完成',
  106. };
  107. }
  108. /**
  109. * 获取状态的整数值
  110. *
  111. * @return int 状态值
  112. */
  113. public function value(): int
  114. {
  115. return $this->value;
  116. }
  117. /**
  118. * 检查当前状态是否与指定状态相同
  119. *
  120. * @param self $status 要比较的状态
  121. * @return bool 如果状态相同返回 true,否则返回 false
  122. */
  123. public function is(self $status): bool
  124. {
  125. return $this === $status;
  126. }
  127. /**
  128. * 根据整数值创建对应的状态枚举实例
  129. *
  130. * @param int $value 状态值
  131. * @return self|null 返回对应的状态枚举实例,如果值无效则返回 null
  132. */
  133. public static function fromValue(int $value): ?self
  134. {
  135. return match ($value) {
  136. self::CREATED->value => self::CREATED,
  137. self::ASSIGNED->value => self::ASSIGNED,
  138. self::PAID->value => self::PAID,
  139. self::CANCELLED->value => self::CANCELLED,
  140. self::REFUNDING->value => self::REFUNDING,
  141. self::REFUNDED->value => self::REFUNDED,
  142. self::REFUND_FAILED->value => self::REFUND_FAILED,
  143. self::ACCEPTED->value => self::ACCEPTED,
  144. self::DEPARTED->value => self::DEPARTED,
  145. self::ARRIVED->value => self::ARRIVED,
  146. self::SERVING->value => self::SERVING,
  147. self::FINISHED->value => self::FINISHED,
  148. self::LEFT->value => self::LEFT,
  149. self::COMMENTED->value => self::COMMENTED,
  150. self::REJECTED->value => self::REJECTED,
  151. self::ALARM->value => self::ALARM,
  152. self::COMPLETED->value => self::COMPLETED,
  153. default => null
  154. };
  155. }
  156. /**
  157. * 获取所有状态的值数组
  158. *
  159. * @return array 包含所有状态值的数组
  160. */
  161. public static function values(): array
  162. {
  163. return array_column(self::cases(), 'value');
  164. }
  165. /**
  166. * 获取所有状态的键值对数组
  167. *
  168. * @return array 状态值作为键,显示文本作为值的关联数组
  169. */
  170. public static function all(): array
  171. {
  172. return [
  173. self::CREATED->value => self::CREATED->label(),
  174. self::ASSIGNED->value => self::ASSIGNED->label(),
  175. self::PAID->value => self::PAID->label(),
  176. self::CANCELLED->value => self::CANCELLED->label(),
  177. self::REFUNDING->value => self::REFUNDING->label(),
  178. self::REFUNDED->value => self::REFUNDED->label(),
  179. self::REFUND_FAILED->value => self::REFUND_FAILED->label(),
  180. self::ACCEPTED->value => self::ACCEPTED->label(),
  181. self::DEPARTED->value => self::DEPARTED->label(),
  182. self::ARRIVED->value => self::ARRIVED->label(),
  183. self::SERVING->value => self::SERVING->label(),
  184. self::FINISHED->value => self::FINISHED->label(),
  185. self::LEFT->value => self::LEFT->label(),
  186. self::COMMENTED->value => self::COMMENTED->label(),
  187. self::REJECTED->value => self::REJECTED->label(),
  188. self::ALARM->value => self::ALARM->label(),
  189. self::COMPLETED->value => self::COMPLETED->label(),
  190. ];
  191. }
  192. }