Pārlūkot izejas kodu

Merge branch 'master' of http://git.liuniu946.com/Kirin/zccy

zxhxx 3 gadi atpakaļ
vecāks
revīzija
ddc9d4ee95

+ 5 - 0
app/admin/controller/system/SystemStore.php

@@ -143,12 +143,17 @@ class SystemStore extends AuthController
             ['pictures', []],
             ['recharge_award_ratio', 0],
             ['terminal_number', ''],
+            ['sh_start_money', 0],
+            ['sh_start_distance', 0],
+            ['sh_step', 0],
+            ['sh_step_money', 0],
         ]);
         SystemStoreModel::beginTrans();
         try {
             $data['address'] = implode(',', $data['address']);
             $data['latlng'] = is_string($data['latlng']) ? explode(',', $data['latlng']) : $data['latlng'];
             if (!isset($data['latlng'][0]) || !isset($data['latlng'][1])) JsonService::fail('请选择门店位置');
+            if ($data['sh_step'] <= 0) JsonService::fail('超过距离基数不能小于等于0');
             $data['latitude'] = $data['latlng'][0];
             $data['longitude'] = $data['latlng'][1];
             $data['valid_time'] = implode(' - ', $data['valid_time']);

+ 1 - 0
app/admin/view/order/store_order/order_info.php

@@ -48,6 +48,7 @@
                         <div class="col-xs-6">商品总数: {$orderInfo.total_num}</div>
                         <div class="col-xs-6">商品总价: ¥{$orderInfo.total_price}</div>
                         <div class="col-xs-6">支付邮费: ¥{$orderInfo.total_postage}</div>
+                        <div class="col-xs-6">支付配送费: ¥{$orderInfo.total_postage_sh}</div>
                         <div class="col-xs-6">优惠券金额: ¥{$orderInfo.coupon_price}</div>
                         <div class="col-xs-6">实际支付: ¥{$orderInfo.pay_price}</div>
                         {if condition="$orderInfo['refund_price'] > 0"}

+ 11 - 0
app/admin/view/system/system_store/add.php

@@ -150,6 +150,17 @@
                                     </i-Col>
                                 </Row>
                             </Form-Item>
+                            <Form-Item>
+                                <Row>
+                                    <i-Col span="13">
+                                        <span>配送费:</span>
+                                        <i-Input v-model="form.sh_start_distance" style="width: 80%" type="text"></i-Input>米内
+                                        <i-Input v-model="form.sh_start_money" style="width: 80%" type="text"></i-Input>元,超过部分每
+                                        <i-Input v-model="form.sh_step" style="width: 80%" type="text"></i-Input>米增加
+                                        <i-Input v-model="form.sh_step_money" style="width: 80%" type="text"></i-Input>元。
+                                    </i-Col>
+                                </Row>
+                            </Form-Item>
                         </template>
                         <Form-Item>
                             <Row>

+ 29 - 3
app/models/store/StoreOrder.php

@@ -77,7 +77,7 @@ class StoreOrder extends BaseModel
      * @param $cartInfo
      * @return array
      */
-    public static function getOrderPriceGroup($cartInfo, $addr)
+    public static function getOrderPriceGroup($cartInfo, $addr, $store_id = 0)
     {
         $storeFreePostage = floatval(sys_config('store_free_postage')) ?: 0;//满额包邮
         $totalPrice = self::getOrderSumPrice($cartInfo, 'truePrice');//获取订单总金额
@@ -154,7 +154,20 @@ class StoreOrder extends BaseModel
             }
             if ($storeFreePostage <= $totalPrice) $storePostage = 0;//如果总价大于等于满额包邮 邮费等于0
         }
-        return compact('totalDeposit', 'storePostage', 'storeFreePostage', 'totalPrice', 'costPrice', 'vipPrice', 'totalIntegral');
+        if (!$store_id || !$addr) {
+            $storePostageSh = 0;
+        } else {
+            $store = SystemStore::verificWhere()->find($store_id);
+            $distance = getDistance($addr['latitude'], $addr['longitude'], $store['latitude'], $store['longitude']);
+            //如果满额包邮等于0
+            if (!$distance) {
+                $storePostageSh = 0;
+            } else {
+                //按照运费模板计算每个运费模板下商品的件数/重量/体积以及总金额 按照首重倒序排列
+
+            }
+        }
+        return compact('storePostageSh', 'totalDeposit', 'storePostage', 'storeFreePostage', 'totalPrice', 'costPrice', 'vipPrice', 'totalIntegral');
     }
 
 
@@ -296,6 +309,7 @@ class StoreOrder extends BaseModel
             $cartInfo = $cartGroup['cartInfo'];
             $priceGroup = $cartGroup['priceGroup'];
             $other = $cartGroup['other'];
+            $distance = 0;
             if ($other['store_id'] != $storeId && !$store_order && !$free_check && !$test) {
                 self::clearCacheOrderInfo($uid, $key);
                 return self::setErrorInfo('所选门店改变,请刷新当前页面!', true);
@@ -320,7 +334,9 @@ class StoreOrder extends BaseModel
                 if (!$store && !$free_check && !$store_order && !$test) {
                     return self::setErrorInfo('门店错误!', true);
                 }
-                if (!$test && !$free_check && !$store_order && getDistance($addr['latitude'], $addr['longitude'], $store['latitude'], $store['longitude']) > $store['radius']) return self::setErrorInfo('地址在派送范围外!', true);
+                $distance = getDistance($addr['latitude'], $addr['longitude'], $store['latitude'], $store['longitude']);
+                if (!$test && !$free_check && !$store_order && $distance > $store['radius']) return self::setErrorInfo('地址在派送范围外!', true);
+
             } else {
                 if ((!$real_name || !$phone) && !$test) return self::setErrorInfo('请填写姓名和电话', true);
                 $addressInfo['real_name'] = $real_name;
@@ -334,6 +350,12 @@ class StoreOrder extends BaseModel
             if (!$storeId && !$test && !$free_check) return self::setErrorInfo('请选择下单门店!', true);
             if (!SystemStore::verificWhere()->find($storeId) && !$test && !$free_check) return self::setErrorInfo('请选择正确的下单门店!', true);
 
+            if ($payType == 'offline' && sys_config('offline_postage') == 1) {
+                $payPostageSh = 0;
+            } else {
+                $payPostageSh = self::getOrderPriceGroup($cartInfo, $addr, $storeId)['storePostageSh'];
+            }
+            $payPrice = bcadd($payPrice, $payPostageSh);
             $cartIds = [];
             $totalNum = 0;
             $gainIntegral = 0;
@@ -444,7 +466,9 @@ class StoreOrder extends BaseModel
                     'coupon_price' => $couponPrice,
                     'deduction_price' => $deductionPrice,
                     'SurplusIntegral' => $SurplusIntegral,
+                    'pay_postage_sh' => $payPostageSh,
                     'deposit' => $deposit,
+                    'distance' => $distance,
                 ];
             }
             $orderInfo = [
@@ -461,6 +485,8 @@ class StoreOrder extends BaseModel
                 'coupon_price' => $couponPrice,
                 'pay_price' => $payPrice,
                 'pay_postage' => $payPostage,
+                'pay_postage_sh' => $payPostageSh,
+                'distance' => $distance,
                 'deduction_price' => $deductionPrice,
                 'paid' => 0,
                 'pay_type' => $payType,

+ 1 - 0
crmeb/services/YLYService.php

@@ -215,6 +215,7 @@ class YLYService extends HttpService implements ProviderInterface
 <FH>
 <LR>合计:¥{$orderInfo['total_price']},优惠: ¥{$orderInfo['coupon_price']}</LR>
 <LR>邮费:¥{$orderInfo['pay_postage']},抵扣:¥{$orderInfo['deduction_price']}</LR>
+<LR>配送:¥{$orderInfo['pay_postage_sh']}</LR>
 <LR>押金:¥{$orderInfo['deposit']}</LR>
 <right>实际支付:¥{$orderInfo['pay_price']}+{$orderInfo['deposit']}</right>           
 </FH>