PHP if else if else if else 与 for 循环

 my:




        if ($delivery_type == '10') {// 顺丰同城快递配送



            $type = 'kuaidi';
            // 此接口 不返回运费
            $create_order = express::store()->create($address,$products,$merchant_info,$order_model['order_no']);





            app()->log->info(['顺丰订单号' => $create_order]);


            // 查询运费接口 沙箱返回null
            // 订单号
            //货物名称
            // 详细地址 寄件人地址电话
            //收件人地址 电话

            // $fee =  express::store()->manifestfreightinquiry($order_model['order_no']);


            $discounted_distances = array_reduce($free_fee['free_fee'], function ($carry,$item) {
                $exploded_distance = explode(',',$item);
                $distance_range = explode('-',$exploded_distance[0]);
                $min_distance =$distance_range[0];
                if(isset($distance_range[1])){
                    $max_distance = $distance_range[1];
                }
                $carry[] = [
                    //距离范围min
                    'min_distance' => $min_distance,
                    //距离范围max
                    'max_distance' => $max_distance ?? '',
                    'over_price'  => $exploded_distance[1],
                    'price' => $exploded_distance[2]
                ];
                return $carry;
            }, []);

            $current_distance = $this->getdistance( $free_fee['longitude'], $free_fee['latitude'],$merchant_info['longitude'],$merchant_info['latitude']);
            //  用户支付的费用


            if($current_distance > $discounted_distances[0]['min_distance']  && $current_distance <= $discounted_distances[0]['max_distance']  ){
                // 0-3km
                if($total_price > $discounted_distances[0]['over_price']){
                    $express_price = 0;
                }else{
                    $express_price =  $discounted_distances[0]['price'];
                }

            }else if($current_distance > $discounted_distances[1]['min_distance']  && $current_distance <= $discounted_distances[1]['max_distance'] ){
                //3-8km
                if($total_price > $discounted_distances[1]['over_price']){
                    $express_price = 0;
                }else{
                    $express_price =  $discounted_distances[1]['price'];
                }
            }else if($current_distance > $discounted_distances[2]['min_distance']  && $current_distance <= $discounted_distances[2]['max_distance'] ){
                //8-20km
                if($total_price > $discounted_distances[2]['over_price']){
                    $express_price = 0;
                }else{
                    $express_price =  $discounted_distances[2]['price'];
                }
            }else if($current_distance > $discounted_distances[3]['min_distance']  && $current_distance <= $discounted_distances[3]['max_distance'] ){
                // 20-30km
                if($total_price > $discounted_distances[3]['over_price']){
                    // 20-30 km 满¥198 20配送费
                    $express_price =  $discounted_distances[3]['price'];
                }else{
                    //  20-30 km 满¥198 28 配送费
                    $express_price =  $discounted_distances[2]['price'];
                }
            }else{
                throw  new error('不在配送范围内');
            }


        } else if ($delivery_type == '30'){ // 闪送

//            $open_city =  $this->openCitiesLists();
//            dd($open_city);


            if(empty($address['address_info_text'])){
                throw  new Error('收货地址错误!');
            }
            $cityName = substr($address['address_info_text'], strpos($address['address_info_text'], '/') + 1, strpos($address['address_info_text'], '/', strpos($address['address_info_text'], '/') + 1) - strpos($address['address_info_text'], '/') - 1)."市";



            //订单计费 获取  总距离 m
            $issOrder =  $this->orderCalculate($address,$order,$products,$cityName,$merchant_info,$free_fee,$order_model['order_no']);
            app()->log->info(['闪送订单号' => $issOrder]);






            // 闪送订单号
            $orderNumber = $issOrder['data']['orderNumber'];


            $data['order_number'] =  $issOrder['data']['orderNumber'];
            // 提交订单  获取闪送 费用 默认为分
            $create_order = $this->orderPlace($orderNumber);



            $discounted_distances = array_reduce($free_fee['free_fee'], function ($carry,$item) {
                $exploded_distance = explode(',',$item);
                $distance_range = explode('-',$exploded_distance[0]);
                $min_distance =$distance_range[0];
                if(isset($distance_range[1])){
                    $max_distance = $distance_range[1];
                }
                $carry[] = [
                    //距离范围min
                    'min_distance' => $min_distance,
                    //距离范围max
                    'max_distance' => $max_distance ?? '',
                    'over_price'  => $exploded_distance[1],
                    'price' => $exploded_distance[2]
                ];
                return $carry;
            }, []);

            // 闪送接口返回的距离 单位m
            $current_distance = $issOrder['data']['totalDistance'] /1000;

            app()->log->info(['闪送返回的距离'=>$current_distance]);

            // todo 测试的接口返回的距离41
            $current_distance = 2;





            //  用户支付的费用
            if($current_distance > $discounted_distances[0]['min_distance']  && $current_distance <= $discounted_distances[0]['max_distance']  ){
                // 0-3km
                if($total_price > $discounted_distances[0]['over_price']){
                    $express_price = 0;
                }else{
                    $express_price =  $discounted_distances[0]['price'];
                }

            }else if($current_distance > $discounted_distances[1]['min_distance']  && $current_distance <= $discounted_distances[1]['max_distance'] ){
                    //3-8km
                if($total_price > $discounted_distances[1]['over_price']){
                    $express_price = 0;
                }else{
                    $express_price =  $discounted_distances[1]['price'];
                }
            }else if($current_distance > $discounted_distances[2]['min_distance']  && $current_distance <= $discounted_distances[2]['max_distance'] ){
                //8-20km
                if($total_price > $discounted_distances[2]['over_price']){
                    $express_price = 0;
                }else{
                    $express_price =  $discounted_distances[2]['price'];
                }
            }else if($current_distance > $discounted_distances[3]['min_distance']  && $current_distance <= $discounted_distances[3]['max_distance'] ){
                // 20-30km
                if($total_price > $discounted_distances[3]['over_price']){
                    // 20-30 km 满¥198 20配送费
                    $express_price =  $discounted_distances[3]['price'];
                }else{
                    //  20-30 km 满¥198 28 配送费
                    $express_price =  $discounted_distances[2]['price'];
                }
            }else{
                throw  new Error('不在配送范围内');
            }

 

 B:


        if ($delivery_type == '10') {// 顺丰同城快递配送

            $type = 'kuaidi';
            // 此接口 不返回运费
            $create_order = express::store()->create($address,$products,$merchant_info,$order_model['order_no']);

            $express_price = DeliveryModel::fee($address['city_id'], $pro_num, $pro_weight, $order_price);


        } else if ($delivery_type == '30'){ // 闪送

            if(empty($address['address_info_text'])){
                throw  new Error('收货地址错误!');
            }
            $cityName = substr($address['address_info_text'], strpos($address['address_info_text'], '/') + 1, strpos($address['address_info_text'], '/', strpos($address['address_info_text'], '/') + 1) - strpos($address['address_info_text'], '/') - 1)."市";

            //订单计费 获取  总距离 m
            $issOrder =  $this->orderCalculate($address,$order,$products,$cityName,$merchant_info,$free_fee,$order_model['order_no']);


            // 闪送订单号
            $orderNumber = $issOrder['data']['orderNumber'];


            $data['order_number'] =  $issOrder['data']['orderNumber'];
            // 提交订单  获取闪送 费用 默认为分
            $create_order = $this->orderPlace($orderNumber);

            // 闪送接口返回的距离 单位m
            $current_distance = $issOrder['data']['totalDistance'] /1000;
            //  用户支付的费用

            $express_price = false;
            $delivery_fee = \app()->dbConfig->get('delivery', []);
            uksort($delivery_fee, function ($a,$b) {
                return $b['km'] - $a['km'];
            });
            foreach ($delivery_fee as $item) {
                if ($current_distance <= $item['km']) {
                    $express_price = $data['order_price'] >= $item['free_money'] ? 0 : $item['fee'];
                }
            }
            if ($express_price===false) {
                throw new Exception('已超出配送范围,请选择快递下单或联系客服');
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值