|
|
@@ -332,7 +332,6 @@ class IntraCityController extends BaseController
|
|
|
{
|
|
|
try {
|
|
|
$post = Yii::$app->request->post();
|
|
|
-
|
|
|
$orderId = $post['orderId'];
|
|
|
$order = OrderClass::getById($orderId);
|
|
|
if (empty($order)) {
|
|
|
@@ -406,11 +405,21 @@ class IntraCityController extends BaseController
|
|
|
'item_list' => $itemList,
|
|
|
];
|
|
|
|
|
|
+ //生成 store_order_id
|
|
|
+ $storeOrderId = $orderId;
|
|
|
+ if ($post['isNew'] == 0) { // 如果不是首次用 $orderId 创建快递配送,则要生成新 store_order_id
|
|
|
+ // store_order_id 门店订单编号, 即 orderId。如果是重新配送的第n次,订单编号的命名规则为:orderId_copy_n
|
|
|
+ $copyOrderCount = ExpressOrderClass::getCount(['storeOrderId'=>['like', $orderId . '_copy_%']]);
|
|
|
+ $copyOrderCount += 1;
|
|
|
+ $storeOrderId = $orderId . '_copy_' . $copyOrderCount;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
$callbackUrl = Yii::$app->params['hdHost'] . '/intra-city/callback';
|
|
|
$orderData = [
|
|
|
//'out_store_id' => $shopId,
|
|
|
'wx_store_id' => $shopExt['wxStoreId'],
|
|
|
- 'store_order_id' => $orderId, //同一个门店订单编号要保证唯一,相同的订单号会重入
|
|
|
+ 'store_order_id' => $storeOrderId, //同一个门店订单编号要保证唯一,相同的订单号会重入
|
|
|
'user_openid' => $user['miniOpenId'],
|
|
|
'user_lng' => $post['user_lng'],
|
|
|
'user_lat' => $post['user_lat'],
|
|
|
@@ -627,7 +636,7 @@ class IntraCityController extends BaseController
|
|
|
// 记录回调日志
|
|
|
Yii::info('同城配送回调:' . json_encode($callbackData, JSON_UNESCAPED_UNICODE));
|
|
|
|
|
|
- $storeOrderId = isset($callbackData['store_order_id']) ? intval($callbackData['store_order_id']) : 0;
|
|
|
+ $storeOrderId = isset($callbackData['store_order_id']) ? $callbackData['store_order_id'] : 0;
|
|
|
$wxStoreId = $callbackData['wx_store_id'];
|
|
|
|
|
|
// 使用 storeOrderId 与 wxStoreId 去查询 xhExpressOrder 表
|
|
|
@@ -640,51 +649,71 @@ class IntraCityController extends BaseController
|
|
|
]);
|
|
|
exit();
|
|
|
}
|
|
|
+ // 提取 orderId
|
|
|
+ $arr = explode('_', $storeOrderId);
|
|
|
+ $orderId = intval($arr[0]);
|
|
|
|
|
|
$orderStatus = intval($callbackData['order_status']);
|
|
|
switch ($orderStatus) {
|
|
|
- case IntraCityExpress::ORDER_STATUS_CREATED: // 订单创建成功
|
|
|
+ // 订单创建成功
|
|
|
+ case IntraCityExpress::ORDER_STATUS_CREATED:
|
|
|
$eo->order_status = ExpressOrder::ORDER_STATUS_CREATED;
|
|
|
$eo->status = ExpressOrder::STATUS_CREATED;
|
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 配送中|已发货
|
|
|
- OrderClass::updateById($storeOrderId, ['status'=>OrderClass::ORDER_STATUS_SENDING, 'sendStatus'=>OrderClass::SEND_STATUS_SENDING]);
|
|
|
+ OrderClass::updateById($orderId, ['status'=>OrderClass::ORDER_STATUS_SENDING, 'sendStatus'=>OrderClass::SEND_STATUS_SENDING]);
|
|
|
break;
|
|
|
- case IntraCityExpress::ORDER_STATUS_CANCELED_BY_MERCHANT: // 商家取消订单
|
|
|
+
|
|
|
+ // 商家取消订单
|
|
|
+ case IntraCityExpress::ORDER_STATUS_CANCELED_BY_MERCHANT:
|
|
|
$eo->order_status = ExpressOrder::ORDER_STATUS_CANCELED_BY_MERCHANT;
|
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 待配送|取消
|
|
|
- OrderClass::updateById($storeOrderId, ['status'=>OrderClass::ORDER_STATUS_UN_SEND, 'sendStatus'=>OrderClass::SEND_STATUS_CANCEL]);
|
|
|
+ OrderClass::updateById($orderId, ['status'=>OrderClass::ORDER_STATUS_UN_SEND, 'sendStatus'=>OrderClass::SEND_STATUS_CANCEL]);
|
|
|
break;
|
|
|
- case IntraCityExpress::ORDER_STATUS_CANCELED_BY_DELIVERY: // 配送方取消订单
|
|
|
+
|
|
|
+ // 配送方取消订单
|
|
|
+ case IntraCityExpress::ORDER_STATUS_CANCELED_BY_DELIVERY:
|
|
|
$eo->order_status = ExpressOrder::ORDER_STATUS_CANCELED_BY_DELIVERY;
|
|
|
$eo->status = ExpressOrder::STATUS_CANCELED;
|
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 待配送|取消
|
|
|
- OrderClass::updateById($storeOrderId, ['status'=>OrderClass::ORDER_STATUS_UN_SEND, 'sendStatus'=>OrderClass::SEND_STATUS_CANCEL]);
|
|
|
+ OrderClass::updateById($orderId, ['status'=>OrderClass::ORDER_STATUS_UN_SEND, 'sendStatus'=>OrderClass::SEND_STATUS_CANCEL]);
|
|
|
break;
|
|
|
- case IntraCityExpress::ORDER_STATUS_ACCEPTED: // 配送员接单
|
|
|
+
|
|
|
+ // 配送员接单
|
|
|
+ case IntraCityExpress::ORDER_STATUS_ACCEPTED:
|
|
|
$eo->order_status = ExpressOrder::ORDER_STATUS_ACCEPTED;
|
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 配送中|已发货
|
|
|
- OrderClass::updateById($storeOrderId, ['status'=>OrderClass::ORDER_STATUS_SENDING, 'sendStatus'=>OrderClass::SEND_STATUS_SENDING]); //订单创建时已执行了,这儿重复更新
|
|
|
+ OrderClass::updateById($orderId, ['status'=>OrderClass::ORDER_STATUS_SENDING, 'sendStatus'=>OrderClass::SEND_STATUS_SENDING]); //订单创建时已执行了,这儿重复更新
|
|
|
break;
|
|
|
- case IntraCityExpress::ORDER_STATUS_ARRIVED: // 配送员到店
|
|
|
+
|
|
|
+ // 配送员到店
|
|
|
+ case IntraCityExpress::ORDER_STATUS_ARRIVED:
|
|
|
$eo->order_status = ExpressOrder::ORDER_STATUS_ARRIVED;
|
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 配送中|已发货
|
|
|
- OrderClass::updateById($storeOrderId, ['status'=>OrderClass::ORDER_STATUS_SENDING, 'sendStatus'=>OrderClass::SEND_STATUS_SENDING]); //订单创建时已执行了,这儿重复更新
|
|
|
+ OrderClass::updateById($orderId, ['status'=>OrderClass::ORDER_STATUS_SENDING, 'sendStatus'=>OrderClass::SEND_STATUS_SENDING]); //订单创建时已执行了,这儿重复更新
|
|
|
break;
|
|
|
- case IntraCityExpress::ORDER_STATUS_DELIVERING: // 配送中
|
|
|
+
|
|
|
+ // 配送中
|
|
|
+ case IntraCityExpress::ORDER_STATUS_DELIVERING:
|
|
|
$eo->order_status = ExpressOrder::ORDER_STATUS_DELIVERING;
|
|
|
break;
|
|
|
- case IntraCityExpress::ORDER_STATUS_WITHDRAWN: // 配送员撤单
|
|
|
+
|
|
|
+ // 配送员撤单
|
|
|
+ case IntraCityExpress::ORDER_STATUS_WITHDRAWN:
|
|
|
$eo->order_status = ExpressOrder::ORDER_STATUS_WITHDRAWN;
|
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 待配送|未发货
|
|
|
- OrderClass::updateById($storeOrderId, ['status'=>OrderClass::ORDER_STATUS_UN_SEND, 'sendStatus'=>OrderClass::SEND_STATUS_UNSEND]);
|
|
|
+ OrderClass::updateById($orderId, ['status'=>OrderClass::ORDER_STATUS_UN_SEND, 'sendStatus'=>OrderClass::SEND_STATUS_UNSEND]);
|
|
|
break;
|
|
|
- case IntraCityExpress::ORDER_STATUS_COMPLETED: // 配送完成
|
|
|
+
|
|
|
+ // 配送完成
|
|
|
+ case IntraCityExpress::ORDER_STATUS_COMPLETED:
|
|
|
$eo->order_status = ExpressOrder::ORDER_STATUS_COMPLETED;
|
|
|
$eo->status = ExpressOrder::STATUS_COMPLETED;
|
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 已完成|已送达
|
|
|
- OrderClass::updateById($storeOrderId, ['status'=>OrderClass::ORDER_STATUS_COMPLETE, 'sendStatus'=>OrderClass::SEND_STATUS_COMPLETED]);
|
|
|
+ OrderClass::updateById($orderId, ['status'=>OrderClass::ORDER_STATUS_COMPLETE, 'sendStatus'=>OrderClass::SEND_STATUS_COMPLETED]);
|
|
|
break;
|
|
|
- case IntraCityExpress::ORDER_STATUS_EXCEPTION: // 配送异常
|
|
|
+
|
|
|
+ // 配送异常
|
|
|
+ case IntraCityExpress::ORDER_STATUS_EXCEPTION:
|
|
|
$eo->order_status = ExpressOrder::ORDER_STATUS_EXCEPTION;
|
|
|
noticeUtil::push('同城配送异常 --- store_order_id(orderId):'.$storeOrderId.',wx_store_id:'.$wxStoreId);
|
|
|
break;
|