Пример #1
0
 /**
  * 根据物流类型ID以及相关条件查询满足条件的物流
  * @param array $condition
  * @return array $deliveries
  * @author gehaifeng
  * 
  * $condition = array(
  *   'site_id'              => '77',    //站点id
  *   'delivery_category_id' => '9',     //物流类型ID
  *   'country_id'           => '539',   //国家ID
  *   'weight'               => '500',   //订单重量
  *   'total_price'          => '300.99',//订单总价
  * );
  * 
  * $deliveries = array(
  *   'id'                   => '10',                 //物流ID
  *   'name'                 => 'China Post',         //物流名称
  *   'url'                  => 'www.ketai-inc.com',  //物流url地址
  *   'delay'                => '5-20 days',          //物流延迟信息
  *   'delivery_price'       => '46.97',              //物流价格
  * );
  */
 public static function get_deliveries_by_condition($condition)
 {
     $category_id = $condition['delivery_category_id'];
     $weight = $condition['weight'];
     $country_id = $condition['country_id'];
     $total_price = $condition['total_price'];
     $dlv_instance = DeliveryService::get_instance();
     $dlvs = $dlv_instance->get_deliveries_by_category($category_id, $weight);
     if (empty($dlvs)) {
         return array();
     }
     $currency = BLL_Currency::get_current();
     $currency_sign = $currency['sign'];
     $deliveries = array();
     foreach ($dlvs as $dlv) {
         $flag = 0;
         $id = $dlv['id'];
         $name = $dlv['name'];
         $url = $dlv['url'];
         $delay = $dlv['delay'];
         if ($dlv['type'] == 0) {
             $flag = 1;
         } else {
             $delivery_country = Delivery_countryService::get_instance()->get_delivery_country($id, $country_id);
             if (empty($delivery_country)) {
                 if ($dlv['is_default'] == 1) {
                     $flag = 1;
                 } else {
                     continue;
                 }
             } else {
                 $flag = 1;
                 $dlv['expression'] = $delivery_country['expression'];
             }
         }
         if ($flag = 0) {
             continue;
         }
         $delivery_price = delivery::cal_fee($dlv['expression'], $weight, $total_price);
         //计算物流费用
         $deliveries[] = array('id' => $id, 'name' => $name, 'url' => $url, 'delay' => $delay, 'delivery_price' => BLL_Currency::get_price(round($delivery_price, 2)), 'currency_sign' => $currency_sign);
     }
     return $deliveries;
 }