|
@@ -616,6 +616,45 @@ class OrderClass extends BaseClass
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 顾客确认收货:status 3→4,写 successTime,同步分销完成时间。
|
|
|
|
|
+ * api.pt 结算事件也会调用,兜底小程序半屏回调未落库的情况。
|
|
|
|
|
+ * @return array{ok:bool,msg:string}
|
|
|
|
|
+ */
|
|
|
|
|
+ public static function confirmReceiveOrder($orderId, $successTime = null)
|
|
|
|
|
+ {
|
|
|
|
|
+ $orderId = (int)$orderId;
|
|
|
|
|
+ if ($orderId <= 0) {
|
|
|
|
|
+ return ['ok' => false, 'msg' => '订单无效'];
|
|
|
|
|
+ }
|
|
|
|
|
+ $order = self::getById($orderId, true);
|
|
|
|
|
+ if (empty($order)) {
|
|
|
|
|
+ return ['ok' => false, 'msg' => '没有找到订单'];
|
|
|
|
|
+ }
|
|
|
|
|
+ if ((int)$order->status === self::ORDER_STATUS_COMPLETE) {
|
|
|
|
|
+ return ['ok' => true, 'msg' => '订单已完成'];
|
|
|
|
|
+ }
|
|
|
|
|
+ if ((int)$order->status !== self::ORDER_STATUS_SENDING) {
|
|
|
|
|
+ return ['ok' => false, 'msg' => '当前状态不可确认收货'];
|
|
|
|
|
+ }
|
|
|
|
|
+ if ((int)$order->payStatus !== 1) {
|
|
|
|
|
+ return ['ok' => false, 'msg' => '订单未支付'];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $successTime = ($successTime !== null && $successTime !== '') ? $successTime : date('Y-m-d H:i:s');
|
|
|
|
|
+ $order->status = self::ORDER_STATUS_COMPLETE;
|
|
|
|
|
+ $order->successTime = $successTime;
|
|
|
|
|
+ $order->save();
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ DistributionCommissionClass::onRetailOrderCompleted($orderId, $successTime);
|
|
|
|
|
+ } catch (\Throwable $e) {
|
|
|
|
|
+ Yii::error('确认收货后分销完成时间同步失败: ' . $e->getMessage(), 'wx-settle');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return ['ok' => true, 'msg' => '确认收货成功'];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
//转化出送到时间 ssh 2020.3.15
|
|
//转化出送到时间 ssh 2020.3.15
|
|
|
public static function getReachTime($order)
|
|
public static function getReachTime($order)
|
|
|
{
|
|
{
|