/** * 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; }
/** * 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; } } }