|
@@ -17,6 +17,7 @@ use biz\shop\classes\ShopClass;
|
|
|
use yii\helpers\Json;
|
|
use yii\helpers\Json;
|
|
|
use common\components\IntraCityExpress;
|
|
use common\components\IntraCityExpress;
|
|
|
use yii\db\Query;
|
|
use yii\db\Query;
|
|
|
|
|
+use biz\wx\classes\WxMessageClass;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 同城配送控制器
|
|
* 同城配送控制器
|
|
@@ -321,13 +322,26 @@ class IntraCityController extends BaseController
|
|
|
try {
|
|
try {
|
|
|
$post = Yii::$app->request->post();
|
|
$post = Yii::$app->request->post();
|
|
|
$orderId = $post['orderId'];
|
|
$orderId = $post['orderId'];
|
|
|
- $order = OrderClass::getById($orderId);
|
|
|
|
|
|
|
+ $field = 'mainId, status, sendStatus, repeat, forward, orderSn, userId, actPrice, sendNum';
|
|
|
|
|
+ $order = OrderClass::getById($orderId, false, $field);
|
|
|
if (empty($order)) {
|
|
if (empty($order)) {
|
|
|
util::fail('订单出错');
|
|
util::fail('订单出错');
|
|
|
}
|
|
}
|
|
|
if ($order['mainId'] != $this->mainId) {
|
|
if ($order['mainId'] != $this->mainId) {
|
|
|
util::fail('订单出错');
|
|
util::fail('订单出错');
|
|
|
}
|
|
}
|
|
|
|
|
+ // 不能创建配送的几种订单状态
|
|
|
|
|
+ $notCanCreateStatus = [OrderClass::ORDER_STATUS_UN_PAY, OrderClass::ORDER_STATUS_SENDING, OrderClass::ORDER_STATUS_COMPLETE, OrderClass::ORDER_HAD_REFUND];
|
|
|
|
|
+ if (in_array($order['status'], $notCanCreateStatus)) {
|
|
|
|
|
+ Yii::error('订单号:' . $orderId . ' 的状态是 ' . $order['status'] . ',不允许创建配送');
|
|
|
|
|
+ util::fail('当前订单状态无法创建配送');
|
|
|
|
|
+ }
|
|
|
|
|
+ // 不能创建配送的几种配送状态
|
|
|
|
|
+ $notCanCreateSendStatus = [OrderClass::SEND_STATUS_SENDING, OrderClass::SEND_STATUS_COMPLETED];
|
|
|
|
|
+ if (in_array($order['sendStatus'], $notCanCreateSendStatus)) {
|
|
|
|
|
+ Yii::error('订单号:' . $orderId . ' 的配送状态是 ' . $order['sendStatus'] . ',不允许重复创建配送');
|
|
|
|
|
+ util::fail('当前订单配送状态无法创建配送');
|
|
|
|
|
+ }
|
|
|
if ($order['repeat'] == 1) {
|
|
if ($order['repeat'] == 1) {
|
|
|
util::fail('收款码订单不支持跑腿');
|
|
util::fail('收款码订单不支持跑腿');
|
|
|
}
|
|
}
|
|
@@ -659,6 +673,7 @@ class IntraCityController extends BaseController
|
|
|
$arr = explode('_', $storeOrderId);
|
|
$arr = explode('_', $storeOrderId);
|
|
|
$orderId = intval($arr[0]);
|
|
$orderId = intval($arr[0]);
|
|
|
|
|
|
|
|
|
|
+ $msg = ''; // 发通知的内容(默认为空,根据情况生成。没有内容则不会发通知)
|
|
|
$orderStatus = intval($callbackData['order_status']);
|
|
$orderStatus = intval($callbackData['order_status']);
|
|
|
switch ($orderStatus) {
|
|
switch ($orderStatus) {
|
|
|
// 订单创建成功
|
|
// 订单创建成功
|
|
@@ -674,6 +689,7 @@ class IntraCityController extends BaseController
|
|
|
$eo->orderStatus = ExpressOrder::ORDER_STATUS_CANCELED_BY_MERCHANT;
|
|
$eo->orderStatus = ExpressOrder::ORDER_STATUS_CANCELED_BY_MERCHANT;
|
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 待配送|取消
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 待配送|取消
|
|
|
OrderClass::updateById($orderId, ['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]);
|
|
|
|
|
+ $msg = '您有订单已取消配送(订单编号:';
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
// 配送方取消订单
|
|
// 配送方取消订单
|
|
@@ -682,6 +698,7 @@ class IntraCityController extends BaseController
|
|
|
$eo->status = ExpressOrder::STATUS_CANCELED;
|
|
$eo->status = ExpressOrder::STATUS_CANCELED;
|
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 待配送|取消
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 待配送|取消
|
|
|
OrderClass::updateById($orderId, ['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]);
|
|
|
|
|
+ $msg = '您有订单被配送方取消(订单编号:';
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
// 配送员接单
|
|
// 配送员接单
|
|
@@ -708,6 +725,7 @@ class IntraCityController extends BaseController
|
|
|
$eo->orderStatus = ExpressOrder::ORDER_STATUS_WITHDRAWN;
|
|
$eo->orderStatus = ExpressOrder::ORDER_STATUS_WITHDRAWN;
|
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 待配送|未发货
|
|
// 更新 xhOrder 表的订单状态与配送状态 -- 待配送|未发货
|
|
|
OrderClass::updateById($orderId, ['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]);
|
|
|
|
|
+ $msg = '您有订单被配送员取消(订单编号:';
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
// 配送完成
|
|
// 配送完成
|
|
@@ -722,8 +740,18 @@ class IntraCityController extends BaseController
|
|
|
case IntraCityExpress::ORDER_STATUS_EXCEPTION:
|
|
case IntraCityExpress::ORDER_STATUS_EXCEPTION:
|
|
|
$eo->orderStatus = ExpressOrder::ORDER_STATUS_EXCEPTION;
|
|
$eo->orderStatus = ExpressOrder::ORDER_STATUS_EXCEPTION;
|
|
|
noticeUtil::push('同城配送异常 --- store_order_id(orderId):' . $storeOrderId . ',wx_store_id:' . $wxStoreId);
|
|
noticeUtil::push('同城配送异常 --- store_order_id(orderId):' . $storeOrderId . ',wx_store_id:' . $wxStoreId);
|
|
|
|
|
+ // 更新 xhOrder 表的订单状态与配送状态 -- 待配送|未发货
|
|
|
|
|
+ OrderClass::updateById($orderId, ['status' => OrderClass::ORDER_STATUS_UN_SEND, 'sendStatus' => OrderClass::SEND_STATUS_UNSEND]);
|
|
|
|
|
+ $msg = '您有订单配送出现异常(订单编号:';
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ if ($msg != '') { // $msg 不为空,则发通知
|
|
|
|
|
+ $order = OrderClass::getById($orderId, true, 'id, shopId, customName, sendNum');
|
|
|
|
|
+ $shop = ShopClass::getById($order->shopId, true, 'id, ptStyle, mainId');
|
|
|
|
|
+ $result = $msg . $order->sendNum . ')';
|
|
|
|
|
+ WxMessageClass::expressErrorInform($shop, $order->customName, $orderId, $result);
|
|
|
|
|
+ }
|
|
|
$re = $eo->save();
|
|
$re = $eo->save();
|
|
|
if (!$re) {
|
|
if (!$re) {
|
|
|
noticeUtil::push('同城配送回调更新订单状态失败. store_order_id:' . $storeOrderId . ',wx_store_id:' . $wxStoreId . ',status:' . $eo->status);
|
|
noticeUtil::push('同城配送回调更新订单状态失败. store_order_id:' . $storeOrderId . ',wx_store_id:' . $wxStoreId . ',status:' . $eo->status);
|