'fengniao', 'orderId'=>$data['order_id']], true); // 将蜂鸟平台的订单状态转换为系统内的 orderStatus $sendStatus = OrderStatusUtil::convertOrderStatus($data['order_status']); $deliveryOrder->orderStatus = $sendStatus; $deliveryOrder->save(); $order = OrderClass::getById($deliveryOrder->ghsOrderId, true, 'id,sendType,sendStatus,deliveryId,purchaseId,customId,status'); $order->sendStatus = $sendStatus; $order->save(); // 确认送达或取消订单,更新主订单状态 if ($sendStatus == 5) { OrderClass::confirmReach($order, ['staffId' => 0, 'staffName' => '']); } if ($sendStatus == -1 || $sendStatus == -2) { OrderClass::cancelOrderSend($order, ['staffId' => 0, 'staffName' => '']); } return true; } /** * 处理异常报备回调 * @param array $data 回调数据 * @return bool 处理结果 */ private function handleAbnormalReportNotify($data) { Yii::info('蜂鸟异常报备回调: ' . json_encode($data, JSON_UNESCAPED_UNICODE), 'fengniao'); return $data; } /** * 处理商户出餐回调 * @param array $data 回调数据 * @return bool 处理结果 */ private function handleCookingFinishNotify($data) { Yii::info('蜂鸟商户出餐回调: ' . json_encode($data, JSON_UNESCAPED_UNICODE), 'fengniao'); return $data; } /** * 处理门店状态变更回调 * @param array $data 回调数据 * @return bool 处理结果 */ private function handleChainstoreStatusNotify($data) { Yii::info('蜂鸟门店状态变更回调: ' . json_encode($data, JSON_UNESCAPED_UNICODE), 'fengniao'); $statusMap = [ 10 => '上架审核中', 20 => '正常(已上架)', 30 => '上架审核失败', 40 => '已冻结', 50 => '已下架', ]; $modifyStatusMap = [ 0 => '无修改', 10 => '资料修改审核中', 20 => '审核通过', 30 => '审核驳回', ]; $merchantId = $data['merchant_id']; $chainStoreId = $data['chain_store_id']; $outShopCode = $data['out_shop_code']; $status = isset($data['status']) ? (int)$data['status'] : null; $modifyStatus = isset($data['modify_status']) ? (int)$data['modify_status'] : null; $remark = $data['remark'] ?? ''; $normalizedPayload = [ 'merchant_id' => $merchantId, 'chain_store_id' => $chainStoreId, 'out_shop_code' => $outShopCode, 'status' => [ 'code' => $status, 'desc' => $status !== null ? ($statusMap[$status] ?? '未知状态') : '', ], 'modify_status' => [ 'code' => $modifyStatus, 'desc' => $modifyStatus !== null ? ($modifyStatusMap[$modifyStatus] ?? '未知状态') : '', ], 'remark' => $remark, ]; $condition = ['mainId' => $outShopCode, 'platform' => 'fengniao']; $tokenModel = DeliveryAuthTokenClass::getByCondition($condition, true); if (!$tokenModel) { Yii::warning('蜂鸟门店状态回调未匹配到授权记录: ' . json_encode($condition, JSON_UNESCAPED_UNICODE), 'fengniao'); return false; } $tokenModel->callBack = json_encode($normalizedPayload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); $tokenModel->merchantId = $merchantId; $tokenModel->shopId = $chainStoreId; if ($tokenModel->save() === false) { Yii::error('蜂鸟门店状态回调保存失败: ' . json_encode($tokenModel->getErrors(), JSON_UNESCAPED_UNICODE), 'fengniao'); return false; } return true; } /** * 处理门店采购服务变更回调 * @param array $data 回调数据 * @return bool 处理结果 */ private function handleChainstoreServiceStatusNotify($data) { Yii::info('蜂鸟门店采购服务变更回调: ' . json_encode($data, JSON_UNESCAPED_UNICODE), 'fengniao'); return $data; } /** * 处理门店营业时间变更回调 * @param array $data 回调数据 * @return bool 处理结果 */ private function handleChainstoreBusinessTimeNotify($data) { Yii::info('蜂鸟门店营业时间变更回调: ' . json_encode($data, JSON_UNESCAPED_UNICODE), 'fengniao'); return $data; } }