Example #1
0
 /**
  * TransOpenApiAct::act_batchOrderFeeTracknumQuery()
  * 批量订单固定运输方式运费计算及跟踪号申请接口
  * @param array $orders 订单信息
  * @return array;
  */
 public function act_batchOrderFeeTracknumQuery()
 {
     $trackNumArr = C('TRACK_NUMBER_CARRIER');
     $orderMax = C('ORDER_SHIPFEE_TRACKNUM_MAX');
     $resMore = 1;
     $orders = array();
     $res = array();
     $orders = isset($_POST['orders']) ? $_POST['orders'] : $orders;
     $orders = json_decode($orders, true);
     if (!is_array($orders)) {
         self::$errCode = 10000;
         self::$errMsg = '订单信息参数格式有误!';
         return false;
     }
     if (empty($orders)) {
         self::$errCode = 10001;
         self::$errMsg = '订单信息内容有误!';
         return false;
     }
     if (count($orders) > $orderMax) {
         self::$errCode = 10002;
         self::$errMsg = "一次批处理订单数据不能呢个超过 {$orderMax}单,请返回修改下!";
         return false;
     }
     //循环获取最优运费及跟踪号
     foreach ($orders as $key => $v) {
         $channelId = 0;
         $carrierId = 0;
         $country = "";
         $shipFee = array();
         $trackNums = array();
         $shipFee = self::act_batchFixCarrierQuery($v['carrierId'], rawurldecode($v['country']), $v['weight'], $v['postCode'], $v['transitId'], $resMore);
         if (empty($shipFee)) {
             continue;
         }
         $carrierId = $shipFee['carrierId'];
         $channelId = $v['channelId'];
         $country = $shipFee['country'];
         //如果运输方式是瑞士小包挂号
         if ($carrierId == 88 && $country == "Switzerland") {
             $country = "Switzerland";
         } else {
             $country = "";
         }
         $trackNums = TransOpenApiModel::assignTrackNumbers($carrierId, $key, $country, $channelId);
         if (empty($trackNums)) {
             $trackNums = array("trackNumber" => "");
         }
         $res[$key] = array("shipFee" => $shipFee, "trackNums" => $trackNums);
         //增加接口调用日志
         $logFile = WEB_PATH . "log/batchShipFeeTrackNum/" . date('Y') . "/" . date('m') . "/" . date('Y-m-d') . ".log";
         $log = date('Y-m-d H:i:s') . "==={$key}==={$v['carrierId']}==={$v['country']}==={$v['weight']}==={$v['postCode']}==={$v['transitId']}==={$resMore}===" . json_encode($res[$key]) . "\n";
         if (function_exists('write_a_file')) {
             @write_a_file($logFile, $log);
         }
     }
     return $res;
 }