|
|
@@ -223,7 +223,7 @@ class DispatchService
|
|
|
public function getAllPlatformPrice($order, $shop, $orderTime)
|
|
|
{
|
|
|
// 第一步:准备前置数据(同步进行,因为某些平台需要这些数据)
|
|
|
- $preparedData = $this->preparePlatformData($order, $shop);
|
|
|
+ $preparedData = $this->preparePlatformData($order, $shop, $orderTime);
|
|
|
|
|
|
if (empty($preparedData)) {
|
|
|
return ['error' => '所有平台数据准备失败'];
|
|
|
@@ -250,7 +250,7 @@ class DispatchService
|
|
|
* @param array $shop 店铺信息
|
|
|
* @return array 各平台的订单数据
|
|
|
*/
|
|
|
- private function preparePlatformData($order, $shop)
|
|
|
+ private function preparePlatformData($order, $shop, $orderTime)
|
|
|
{
|
|
|
$preparedData = [];
|
|
|
|
|
|
@@ -278,7 +278,7 @@ class DispatchService
|
|
|
// 准备 Shansong 数据
|
|
|
if (isset($this->adapters['shansong'])) {
|
|
|
try {
|
|
|
- $preparedData['shansong'] = $this->prepareShansongData($order, $shop);
|
|
|
+ $preparedData['shansong'] = $this->prepareShansongData($order, $shop, $orderTime);
|
|
|
} catch (\Exception $e) {
|
|
|
Yii::warning("Shansong 数据准备失败: {$e->getMessage()}");
|
|
|
}
|
|
|
@@ -433,9 +433,9 @@ class DispatchService
|
|
|
/**
|
|
|
* 准备闪送订单数据
|
|
|
*/
|
|
|
- private function prepareShansongData($order, $shop)
|
|
|
+ private function prepareShansongData($order, $shop, $orderTime)
|
|
|
{
|
|
|
- return [
|
|
|
+ $data = [
|
|
|
'platform' => 'shansong',
|
|
|
'cityName' => $shop['city'],
|
|
|
'sender' => [
|
|
|
@@ -455,21 +455,33 @@ class DispatchService
|
|
|
'toMobile' => Functions::getMobile($order),
|
|
|
'toLatitude' => (float)$order['lat'],
|
|
|
'toLongitude' => (float)$order['long'],
|
|
|
- 'goodType' => 7,
|
|
|
+ 'goodType' => 7, //鲜花
|
|
|
'weight' => (int)round($order['weight']),
|
|
|
'remarks' => $order['remark'] ?? '',
|
|
|
]
|
|
|
],
|
|
|
- 'appointType' => 0,
|
|
|
- 'appointmentDate' => '',
|
|
|
+ 'appointType' => 0, //预约类型: 0立即单,1预约单
|
|
|
'travelWay' => 0,
|
|
|
'deliveryType' => 1,
|
|
|
- 'expectStartTime' => null,
|
|
|
- 'expectEndTime' => null,
|
|
|
|
|
|
//补充额外的订单数据
|
|
|
'sendNum' => $order['sendNum'],
|
|
|
];
|
|
|
+
|
|
|
+ // appointmentDate 预约时间
|
|
|
+ // yyyy-MM-dd HH:mm格式(例如:2020-02-02 22:00),指的是预约取件时间,只支持一个小时以后两天以内
|
|
|
+ $timestamp = strtotime($orderTime);
|
|
|
+ if($timestamp > time() + 3600){
|
|
|
+ $data['appointType'] = 1; // 修改预约类型
|
|
|
+ $data['appointmentDate'] = $orderTime;
|
|
|
+
|
|
|
+ // 'expectStartTime' 期望送达时间起始时间 -- 毫秒级时间戳。期望送达时间为时间点时,无需传本参数;期望送达时间为时间段时,期望送达时间为expectStartTime至expectEndTime
|
|
|
+ // 'expectEndTime' 期望送达时间终止时间 -- 毫秒级时间戳。期望送达时间为时间点时,只需传本参数;期望送达时间为时间段时,期望送达时间为expectStartTime至expectEndTime
|
|
|
+ $data['expectStartTime'] = ($timestamp + 900) * 1000;
|
|
|
+ $data['expectEndTime'] = ($timestamp + 1800) * 1000;
|
|
|
+ }
|
|
|
+
|
|
|
+ return $data;
|
|
|
}
|
|
|
|
|
|
/**
|