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;
    }
}
Exemple #2
0
 /**
  * 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";