| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- <?php
- namespace common\components\delivery\platform\fengniao;
- /**
- * Class FengniaoStatusUtil
- * 蜂鸟配送平台状态转换工具类
- * @package common\components\delivery\helpers
- */
- class SendStatusUtil
- {
- /**
- * 蜂鸟平台订单状态到系统 sendStatus 的转换映射
- *
- * 蜂鸟平台状态码说明:
- * 0 - 订单生成
- * 1 - 运单生成成功
- * 20 - 骑手接单
- * 80 - 骑手到店
- * 2 - 配送中
- * 3 - 已完成
- * 4 - 已取消
- * 5 - 配送异常
- *
- * 系统内 sendStatus 状态码说明:
- * 0 - 订单生成
- * 1 - 系统已接单
- * 2 - 派单中
- * 3 - 待取货
- * 4 - 配送中
- * 5 - 已送达
- * -1 - 已取消
- * -2 - 异常
- * 10 - 改派中
- * 20 - 已分配骑手
- * 30 - 骑手已到店
- * 40 - 申请取消中
- * 50 - 客服介入处理中
- */
- const STATUS_MAPPING = [
- 0 => 0, // 订单生成 -> 订单生成
- 1 => 1, // 运单生成成功 -> 系统已接单
- 20 => 20, // 骑手接单 -> 已分配骑手
- 80 => 30, // 骑手到店 -> 骑手已到店
- 2 => 4, // 配送中 -> 配送中
- 3 => 5, // 已完成 -> 已送达
- 4 => -1, // 已取消 -> 已取消
- 5 => -2, // 配送异常 -> 异常
- ];
- /**
- * 将蜂鸟平台的订单状态转换为系统内的 sendStatus
- *
- * @param int $fengniaoStatus 蜂鸟平台的订单状态码
- * @return int 转换后的系统 orderStatus 状态码
- * @throws \Exception 当状态码无法转换时抛出异常
- */
- public static function convertOrderStatus($fengniaoStatus)
- {
- $fengniaoStatus = (int)$fengniaoStatus;
-
- if (!isset(self::STATUS_MAPPING[$fengniaoStatus])) {
- throw new \Exception("无效的蜂鸟订单状态码:{$fengniaoStatus}");
- }
-
- return self::STATUS_MAPPING[$fengniaoStatus];
- }
- /**
- * 获取蜂鸟平台的状态描述
- *
- * @param int $fengniaoStatus 蜂鸟平台的订单状态码
- * @return string 状态描述
- */
- public static function getStatusDesc($fengniaoStatus)
- {
- $statusDescMap = [
- 0 => '订单生成',
- 1 => '运单生成成功',
- 20 => '骑手接单',
- 80 => '骑手到店',
- 2 => '配送中',
- 3 => '已完成',
- 4 => '已取消',
- 5 => '配送异常',
- ];
-
- return $statusDescMap[$fengniaoStatus] ?? '未知状态';
- }
- /**
- * 获取系统 orderStatus 的状态描述
- *
- * @param int $orderStatus 系统的 orderStatus 状态码
- * @return string 状态描述
- */
- public static function getOrderStatusDesc($orderStatus)
- {
- $statusDescMap = [
- 0 => '订单生成',
- 1 => '系统已接单',
- 2 => '派单中',
- 3 => '待取货',
- 4 => '配送中',
- 5 => '已送达',
- -1 => '已取消',
- -2 => '异常',
- 10 => '改派中',
- 20 => '已分配骑手',
- 30 => '骑手已到店',
- 40 => '申请取消中',
- 50 => '客服介入处理中',
- ];
-
- return $statusDescMap[$orderStatus] ?? '未知状态';
- }
- }
|