Example #1
0
 /**
  * TrackWarnInfoAct::act_trackNumberInfo()
  * 实时获取某个跟踪号的跟踪信息
  * @param integer $carrierId 运输方式ID
  * @param integer $lan  跟踪语言
  * @param string $trackNumber 跟踪号
  * @return json string 
  */
 public function act_trackNumberInfo()
 {
     $carrierId = isset($_POST["tid"]) ? intval($_POST["tid"]) : 0;
     $trackNumber = isset($_POST["trackNumber"]) ? post_check($_POST["trackNumber"]) : "";
     $lan = isset($_POST["lan"]) ? intval($_POST["lan"]) : 10000;
     $act = isset($_REQUEST["act"]) ? post_check($_REQUEST["act"]) : "";
     $mod = isset($_REQUEST["mod"]) ? post_check($_REQUEST["mod"]) : "";
     if (!AuthUser::checkLogin($mod, $act)) {
         self::$errCode = 10002;
         self::$errMsg = "对不起,您无实时跟踪号详细数据查看权限!";
         return false;
     }
     if (empty($carrierId) || !is_numeric($carrierId)) {
         self::$errCode = "运输方式ID有误";
         self::$errMsg = 10000;
         return false;
     }
     if (empty($trackNumber)) {
         self::$errCode = "跟踪号有误!";
         self::$errMsg = 10001;
         return false;
     }
     $res['trackInfo'] = TrackWarnInfoModel::trackNumberInfo($carrierId, $trackNumber, $lan);
     $res['countryInfo'] = array();
     self::$errCode = TrackWarnInfoModel::$errCode;
     self::$errMsg = TrackWarnInfoModel::$errMsg;
     return $res;
 }
Example #2
0
 /**
  * TrackWarnInfoModel::trackNumberInfo()
  * 实时获取某个跟踪号的跟踪信息
  * @param integer $carrierId 运输方式ID
  * @param integer $lan 跟踪语言
  * @param string $trackNumber 跟踪号
  * @return json string 
  */
 public static function trackNumberInfo($carrierId, $trackNumber, $lan)
 {
     self::initDB();
     $data = array();
     $trackName = "";
     $sql = "SELECT trackName FROM " . self::$prefix . self::$tab_track_carrier . " WHERE carrierId = '{$carrierId}'";
     $query = self::$dbConn->query($sql);
     if ($query) {
         $res = self::$dbConn->fetch_array($query);
         $trackName = isset($res['trackName']) ? trim($res['trackName']) : "";
     } else {
         self::$errCode = 10000;
         self::$errMsg = "获取数据失败";
         return false;
     }
     if (empty($trackName)) {
         self::$errCode = 10001;
         self::$errMsg = "跟踪名称没有获取到,请选择正确的运输方式!";
         return false;
     }
     $res = TransOpenApiModel::getTrackInfo($trackNumber, $trackName, $lan);
     $res = json_decode($res, true);
     if (isset($res[trackingEventList])) {
         foreach ($res[trackingEventList] as $v) {
             array_push($data, array("postion" => $v['place'], "event" => $v['details'], "trackTime" => $v['date']));
         }
     } else {
         if ($res['ReturnValue'] == '-1') {
             array_push($data, array("postion" => "暂无", "event" => $res['ReturnValue'] . "(跟踪号或运输方式有误或暂无跟踪信息)", "trackTime" => "暂无"));
         } else {
             array_push($data, array("postion" => "物流系统服务器", "event" => $res['ReturnValue'], "trackTime" => date('Y-m-d H:i:s', time())));
         }
     }
     return json_encode($data);
 }
print_r($nodes);
if (empty($nodes)) {
    exit("未设置运德物流预警节点,暂没法分析数据!\n");
}
foreach ($countrys as $c) {
    $country = $c['countryNameEn'];
    $postion = empty($where) ? "toCountry = '{$country}'" : $where . " AND toCountry = '{$country}'";
    $numberList = TransOpenApiModel::getTrackNumberList($page, $pagenum, $carrierId, $postion, $hours, 'DESC');
    //获取符合条件的跟踪号列表
    $total = count($numberList);
    echo date('Y-m-d H:i:s', time()) . "===" . $c['countryNameEn'] . "===" . $total . "条数据分析开始!" . "\n\n";
    //得到原始数据
    foreach ($numberList as $v) {
        $timestr = date('Y-m-d H:i:s', time());
        $times = $v['scanTime'];
        $details = TrackWarnInfoModel::listTrackNumberInfo($carrierId, $v['trackNumber']);
        $details = json_decode($details, true);
        foreach ($details as $detail) {
            foreach ($nodes as $node) {
                if (strpos($detail['event'], $node['nodeName']) !== false) {
                    $trackTime = strtotime($detail['trackTime']);
                    if ($trackTime !== false) {
                        $aging = $trackTime - $times;
                        $aging = $aging <= 0 ? 0 : $aging;
                        $data[$v['toCountry']][$node['nodeName']][] = $aging;
                        //$data[$v['toCountry']]['trackNumbers'][]	= $v['trackNumber'];
                        $times = $trackTime;
                        break;
                    }
                }
            }