function export_xml($filename, $data) { if (function_exists('write_w_file')) { write_w_file($filename, $data); } if (file_exists($filename)) { return substr($filename, strpos($filename, "temp")); } else { return false; } }
/** * WedoApiModel::orderWedoExport() * 导出运德物流订单跟踪号信息 * @param string $condition 导出条件 * @param integer $pagesize 每页数量 * @return string */ public static function orderWedoExport($condition, $pagesize = 10000) { self::initDB(); $totalnum = 0; $data = ""; $sql = "SELECT count(*) AS totalnum FROM\t" . self::$prefix . self::$wedo_order . " WHERE {$condition}"; $query = self::$dbConn->query($sql); if ($query) { $res = self::$dbConn->fetch_array($query); $totalnum = intval($res['totalnum']); } else { self::$errCode = 10000; self::$errMsg = "获取数据失败"; return "fail"; } if ($totalnum == 0) { self::$errCode = 10001; self::$errMsg = "选择的时间范围类,没有数据需要导出!"; return "fail"; } $pages = ceil($totalnum / $pagesize); $filename = 'wedo_number_info_' . $_SESSION[C('USER_AUTH_SYS_ID')]; $statusList = C('TRACK_STATUS_DETAIL'); $fileurl = WEB_URL . "temp/" . $filename . ".xls"; $filepath = WEB_PATH . "html/temp/" . $filename . ".xls"; for ($i = 0; $i < $pages; $i++) { $offset = $i * $pagesize; $sql = "SELECT *\tFROM " . self::$prefix . self::$wedo_order . " WHERE {$condition} LIMIT {$offset},{$pagesize}"; $query = self::$dbConn->query($sql); $res = self::$dbConn->fetch_array_all($query); if ($i == 0) { $data = '<?xml version="1.0" encoding="UTF-8"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"><Styles><Style ss:ID="sDT"><NumberFormat ss:Format="Short Date"/></Style></Styles><Worksheet ss:Name="Sheet1"><Table><Row><Cell><Data ss:Type="String">订单号/交易号</Data></Cell><Cell><Data ss:Type="String">跟踪号</Data></Cell><Cell><Data ss:Type="String">发货时间</Data></Cell><Cell><Data ss:Type="String">发往国家</Data></Cell><Cell><Data ss:Type="String">店铺帐号</Data></Cell></Row>' . "\n"; } foreach ($res as $v) { $data .= '<Row><Cell><Data ss:Type="String">' . $v['orderSn'] . '</Data></Cell><Cell><Data ss:Type="String">' . $v['trackNumber'] . '</Data></Cell><Cell ss:StyleID="sDT"><Data ss:Type="DateTime">' . strftime("%Y-%m-%dT%H:%M:%S", $v['scanTime']) . '</Data></Cell><Cell><Data ss:Type="String">' . $v['toCountry'] . '</Data></Cell><Cell><Data ss:Type="String">' . $v['platAccount'] . '</Data></Cell></Row>' . "\n"; } if ($i == 0) { write_w_file($filepath, $data); } else { write_a_file($filepath, $data); } $data = ""; } $data = "</Table></Worksheet></Workbook>"; write_a_file($filepath, $data); if (file_exists($filepath)) { return $fileurl; } else { return "fail"; } }
/** * TrackWarnExportModel::exportTrackNumberInfo() * 导出跟踪号信息 * @param string $condition 导出条件 * @param integer $pagesize 每页数量 * @return string */ public static function exportTrackNumberInfo($condition, $pagesize = 10000) { self::initDB(); set_time_limit(600); ignore_user_abort(false); $totalnum = 0; $data = ""; $sql = "SELECT count(*) AS totalnum FROM\n\t\t\t\t\t\t" . self::$prefix . self::$table . " AS a\n\t\t\t\t\t\tLEFT JOIN " . self::$prefix . self::$tab_track_channel . " AS b ON a.channelId = b.id\n\t\t\t\t\t\tLEFT JOIN " . self::$prefix . self::$tab_track_carrier . " AS c ON a.carrierId = c.id\n\t\t\t\t\t\tWHERE {$condition}"; $query = self::$dbConn->query($sql); if ($query) { $res = self::$dbConn->fetch_array($query); $totalnum = intval($res['totalnum']); } else { self::$errCode = 10000; self::$errMsg = "获取数据失败"; return false; } $pages = ceil($totalnum / $pagesize); $filename = 'track_number_info_' . $_SESSION[C('USER_AUTH_SYS_ID')]; $statusList = C('TRACK_STATUS_DETAIL'); $fileurl = WEB_URL . "temp/" . date('Ymd') . "/" . $filename . ".xls"; $filepath = WEB_PATH . "html/temp/" . date('Ymd') . "/" . $filename . ".xls"; for ($i = 0; $i < $pages; $i++) { $offset = $i * $pagesize; $idArr = array(); $ids = ''; $sql = "SELECT\n\t\t\t\t\t\ta.id\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t" . self::$prefix . self::$table . " AS a\n\t\t\t\t\t\tLEFT JOIN " . self::$prefix . self::$tab_track_channel . " AS b ON a.channelId = b.id\n\t\t\t\t\t\tLEFT JOIN " . self::$prefix . self::$tab_track_carrier . " AS c ON a.carrierId = c.id\n\t\t\t\t\t\tWHERE {$condition} LIMIT {$offset},{$pagesize}"; $query = self::$dbConn->query($sql); $res = self::$dbConn->fetch_array_all($query); foreach ($res as $v) { array_push($idArr, $v['id']); } if (empty($idArr)) { self::$errCode = 10001; self::$errMsg = "获取数据失败"; return false; } else { $ids = implode(",", $idArr); } $sql = "SELECT\n\t\t\t\t\t\t\t\t\tc.carrierNameCn,\n\t\t\t\t\t\t\t\t\tb.channelName,\n\t\t\t\t\t\t\t\t\ta.orderSn,\n\t\t\t\t\t\t\t\t\ta.recordId,\n\t\t\t\t\t\t\t\t\ta.carrierId,\n\t\t\t\t\t\t\t\t\ta.channelId,\n\t\t\t\t\t\t\t\t\ta.platAccount,\n\t\t\t\t\t\t\t\t\ta.platForm,\n\t\t\t\t\t\t\t\t\ta.trackNumber,\n\t\t\t\t\t\t\t\t\ta.weight,\n\t\t\t\t\t\t\t\t\ta.cost,\n\t\t\t\t\t\t\t\t\ta.scanTime,\n\t\t\t\t\t\t\t\t\ta.toCountry,\n\t\t\t\t\t\t\t\t\ta.lastEvent,\n\t\t\t\t\t\t\t\t\ta.lastPostion,\n\t\t\t\t\t\t\t\t\ta.lastTime,\n\t\t\t\t\t\t\t\t\ta.status\n\t\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t" . self::$prefix . self::$table . " AS a\n\t\t\t\t\t\t\t\t\tLEFT JOIN " . self::$prefix . self::$tab_track_channel . " AS b ON a.channelId = b.id\n\t\t\t\t\t\t\t\t\tLEFT JOIN " . self::$prefix . self::$tab_track_carrier . " AS c ON a.carrierId = c.id\n\t\t\t\t\t\t\t\t\tWHERE a.id IN({$ids})\n\t\t\t\t\t\t\t\t\tORDER BY scanTime DESC"; $query = self::$dbConn->query($sql); $res = self::$dbConn->fetch_array_all($query); if ($i == 0) { $data = '<?xml version="1.0" encoding="UTF-8"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"><Styles><Style ss:ID="sDT"><NumberFormat ss:Format="Short Date"/></Style></Styles><Worksheet ss:Name="Sheet1"><Table><Row><Cell><Data ss:Type="String">运输方式</Data></Cell><Cell><Data ss:Type="String">渠道</Data></Cell><Cell><Data ss:Type="String">订单编号</Data></Cell><Cell><Data ss:Type="String">订单号</Data></Cell><Cell><Data ss:Type="String">跟踪号</Data></Cell><Cell><Data ss:Type="String">重量</Data></Cell><Cell><Data ss:Type="String">价格</Data></Cell><Cell><Data ss:Type="String">发货时间</Data></Cell><Cell><Data ss:Type="String">发往国家</Data></Cell><Cell><Data ss:Type="String">跟踪事件</Data></Cell><Cell><Data ss:Type="String">跟踪位置</Data></Cell><Cell><Data ss:Type="String">跟踪时间</Data></Cell><Cell><Data ss:Type="String">跟踪状态</Data></Cell><Cell><Data ss:Type="String">收寄日期</Data></Cell><Cell><Data ss:Type="String">收寄地点</Data></Cell><Cell><Data ss:Type="String">互封日期</Data></Cell><Cell><Data ss:Type="String">互封地点</Data></Cell><Cell><Data ss:Type="String">直封日期</Data></Cell><Cell><Data ss:Type="String">直封地点</Data></Cell><Cell><Data ss:Type="String">平台帐号</Data></Cell><Cell><Data ss:Type="String">平台名称</Data></Cell></Row>' . "\n"; } foreach ($res as $v) { $nodeList = TransOpenApiModel::getTrackNodeList($v['carrierId'], $v['channelId']); $detail = TransOpenApiModel::getTrackInfoLocal($v['trackNumber'], $v['carrierId']); $j = 0; $dates = array(); $pos = array(); foreach ($nodeList as $n) { foreach ($detail as $val) { $keys = explode(" ", $n['nodeKey']); foreach ($keys as $key) { if (strpos($val['event'], $key) !== false && !in_array($val['event'], array('未妥投'))) { $dates[$j] = !empty($val['trackTime']) ? strftime("%Y-%m-%dT%H:%M:%S", $val['trackTime']) : ''; $pos[$j] = $val['postion']; break; } } } $j++; } $data .= '<Row><Cell><Data ss:Type="String">' . $v['carrierNameCn'] . '</Data></Cell><Cell><Data ss:Type="String">' . $v['channelName'] . '</Data></Cell><Cell><Data ss:Type="Number">' . $v['orderSn'] . '</Data></Cell><Cell><Data ss:Type="String">' . $v['recordId'] . '</Data></Cell><Cell><Data ss:Type="String">' . $v['trackNumber'] . '</Data></Cell><Cell><Data ss:Type="Number">' . $v['weight'] . '</Data></Cell><Cell><Data ss:Type="Number">' . $v['cost'] . '</Data></Cell><Cell ss:StyleID="sDT"><Data ss:Type="DateTime">' . strftime("%Y-%m-%dT%H:%M:%S", $v['scanTime']) . '</Data></Cell><Cell><Data ss:Type="String">' . $v['toCountry'] . '</Data></Cell><Cell><Data ss:Type="String">' . $v['lastEvent'] . '</Data></Cell><Cell><Data ss:Type="String">' . $v['lastPostion'] . '</Data></Cell><Cell ss:StyleID="sDT"><Data ss:Type="DateTime">' . strftime("%Y-%m-%dT%H:%M:%S", $v['lastTime']) . '</Data></Cell><Cell><Data ss:Type="String">' . $statusList[$v['status']] . '</Data></Cell><Cell ss:StyleID="sDT"><Data ss:Type="DateTime">' . $dates[0] . '</Data></Cell><Cell><Data ss:Type="String">' . $pos[0] . '</Data></Cell><Cell ss:StyleID="sDT"><Data ss:Type="DateTime">' . $dates[1] . '</Data></Cell><Cell><Data ss:Type="String">' . $pos[1] . '</Data></Cell><Cell ss:StyleID="sDT"><Data ss:Type="DateTime">' . $dates[2] . '</Data></Cell><Cell><Data ss:Type="String">' . $pos[2] . '</Data></Cell><Cell><Data ss:Type="String">' . $v['platAccount'] . '</Data></Cell><Cell><Data ss:Type="String">' . $v['platForm'] . '</Data></Cell></Row>' . "\n"; } if ($i == 0) { write_w_file($filepath, $data); } else { write_a_file($filepath, $data); } $data = ""; unset($res); sleep(3); } $data = "</Table></Worksheet></Workbook>"; write_a_file($filepath, $data); $zipFile = self::getXlsZip($filepath, $filename); if ($zipFile) { $fileurl = WEB_URL . $zipFile; $filepath = WEB_PATH . "html/" . $zipFile; } if (file_exists($filepath)) { return $fileurl; } else { return "fail"; } }
/* $atpath = WEB_PATH.'crontab/gmailattach/'.$mailinfo['msg_id'].'/'; if($mailAttach=$mail->getAttach($message_id,$atpath)){ echo "附件下载成功\r\n"; $atpath.= $mailAttach[0]; $mailinfo['attachname'] = $mailAttach[0]; $mailinfo['attachpath'] = $atpath; imap_clearflag_full($connect,$message_id , '\\Seen',ST_UID); } else { echo "附件下载失败或者该邮件没有附件\r\n"; } */ echo "存储开始\r\n"; if ($msg_obj->getMsgId($mailinfo['message_id'])) { echo "已经存储过了\r\n"; continue; } if (write_w_file($path . $fname, $body)) { echo "邮件存储成功\r\n"; if ($msg_obj->insertMessages($mailinfo)) { echo "写入数据库成功!\r\n"; $lasttime = $mailinfo['sendtime']; echo "\r\n"; } else { echo "写入数据库失败!\r\n"; } } else { echo '邮件存储失败'; } } echo "本次抓取的最后一封邮件发送时间是" . date('Y-m-d H:i:s', $lasttime); echo $ac['gmail'] . " 连接断开\r\n"; echo '***********************わだぃわかわいのxzysaberです**************************' . "\n";