SendStatusUtil.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. namespace common\components\delivery\platform\fengniao;
  3. /**
  4. * Class FengniaoStatusUtil
  5. * 蜂鸟配送平台状态转换工具类
  6. * @package common\components\delivery\helpers
  7. */
  8. class SendStatusUtil
  9. {
  10. /**
  11. * 蜂鸟平台订单状态到系统 sendStatus 的转换映射
  12. *
  13. * 蜂鸟平台状态码说明:
  14. * 0 - 订单生成
  15. * 1 - 运单生成成功
  16. * 20 - 骑手接单
  17. * 80 - 骑手到店
  18. * 2 - 配送中
  19. * 3 - 已完成
  20. * 4 - 已取消
  21. * 5 - 配送异常
  22. *
  23. * 系统内 sendStatus 状态码说明:
  24. * 0 - 订单生成
  25. * 1 - 系统已接单
  26. * 2 - 派单中
  27. * 3 - 待取货
  28. * 4 - 配送中
  29. * 5 - 已送达
  30. * -1 - 已取消
  31. * -2 - 异常
  32. * 10 - 改派中
  33. * 20 - 已分配骑手
  34. * 30 - 骑手已到店
  35. * 40 - 申请取消中
  36. * 50 - 客服介入处理中
  37. */
  38. const STATUS_MAPPING = [
  39. 0 => 0, // 订单生成 -> 订单生成
  40. 1 => 1, // 运单生成成功 -> 系统已接单
  41. 20 => 20, // 骑手接单 -> 已分配骑手
  42. 80 => 30, // 骑手到店 -> 骑手已到店
  43. 2 => 4, // 配送中 -> 配送中
  44. 3 => 5, // 已完成 -> 已送达
  45. 4 => -1, // 已取消 -> 已取消
  46. 5 => -2, // 配送异常 -> 异常
  47. ];
  48. /**
  49. * 将蜂鸟平台的订单状态转换为系统内的 sendStatus
  50. *
  51. * @param int $fengniaoStatus 蜂鸟平台的订单状态码
  52. * @return int 转换后的系统 orderStatus 状态码
  53. * @throws \Exception 当状态码无法转换时抛出异常
  54. */
  55. public static function convertOrderStatus($fengniaoStatus)
  56. {
  57. $fengniaoStatus = (int)$fengniaoStatus;
  58. if (!isset(self::STATUS_MAPPING[$fengniaoStatus])) {
  59. throw new \Exception("无效的蜂鸟订单状态码:{$fengniaoStatus}");
  60. }
  61. return self::STATUS_MAPPING[$fengniaoStatus];
  62. }
  63. /**
  64. * 获取蜂鸟平台的状态描述
  65. *
  66. * @param int $fengniaoStatus 蜂鸟平台的订单状态码
  67. * @return string 状态描述
  68. */
  69. public static function getStatusDesc($fengniaoStatus)
  70. {
  71. $statusDescMap = [
  72. 0 => '订单生成',
  73. 1 => '运单生成成功',
  74. 20 => '骑手接单',
  75. 80 => '骑手到店',
  76. 2 => '配送中',
  77. 3 => '已完成',
  78. 4 => '已取消',
  79. 5 => '配送异常',
  80. ];
  81. return $statusDescMap[$fengniaoStatus] ?? '未知状态';
  82. }
  83. /**
  84. * 获取系统 orderStatus 的状态描述
  85. *
  86. * @param int $orderStatus 系统的 orderStatus 状态码
  87. * @return string 状态描述
  88. */
  89. public static function getOrderStatusDesc($orderStatus)
  90. {
  91. $statusDescMap = [
  92. 0 => '订单生成',
  93. 1 => '系统已接单',
  94. 2 => '派单中',
  95. 3 => '待取货',
  96. 4 => '配送中',
  97. 5 => '已送达',
  98. -1 => '已取消',
  99. -2 => '异常',
  100. 10 => '改派中',
  101. 20 => '已分配骑手',
  102. 30 => '骑手已到店',
  103. 40 => '申请取消中',
  104. 50 => '客服介入处理中',
  105. ];
  106. return $statusDescMap[$orderStatus] ?? '未知状态';
  107. }
  108. }