query($sql); $result_array=$result->fetchAll(); $result->closeCursor(); $line_array = array(); $line_id_array = array(); foreach( $result_array as $line_info ) { $line_id_array[] = $line_info["PROD_ID"]; $line_array[$line_info["PROD_ID"]] = $line_info; } //取得所有符合检索条件的班次信息 $sql2 = " SELECT * FROM run_main WHERE PROD_ID IN (".implode(",",$line_id_array).") AND RUN_STATUS=138 AND RUN_DATE >= '".$start_date."' AND RUN_DATE <= '".$end_date."' ORDER BY RUN_DATE "; $result=$pdo->query($sql2); $rowset=$result->fetchAll(); $result->closeCursor(); $return_data['code']='201'; if( $rowset == false ) { $return_data['all_count'] = 0; $return_data['data_array'] = array(); echo json_encode($return_data); } //取得所有的站点信息 $sql3 = " SELECT * FROM base_resource WHERE RES_TYPE_ID=24 "; $result=$pdo->query($sql3); $result_array=$result->fetchAll(); $result->closeCursor(); $res_array = array(); foreach( $result_array as $res_info ) { $res_array[$res_info["RES_ID"]] = $res_info; } //取得所有地区信息 $sql4 = " SELECT * FROM base_area WHERE CANCEL_FLAG=0 "; $result=$pdo->query($sql4); $result_array=$result->fetchAll(); $result->closeCursor(); $city_array = array(); foreach( $result_array as $city_info ) { $city_array[$city_info["ID"]] = $city_info; } //获取所有班次run_id和所有班次对应的产品(线路)prod_id $run_id_array = array(); $prod_id_array = array(); foreach( $rowset as $row_info ) { if( !in_array($row_info["RUN_ID"], $run_id_array ) ) { $run_id_array[] = $row_info["RUN_ID"]; } if( !in_array($row_info["PROD_ID"], $prod_id_array ) ) { $prod_id_array[] = $row_info["PROD_ID"]; } } //获取所有班次的车次信息(显示库存数用) $sql5 = " SELECT * FROM run_bus WHERE RUN_ID IN(".implode(",",$run_id_array).") AND CANCEL_FLAG = 0 AND RUN_BUS_STATUS = 138 "; $result=$pdo->query($sql5); $result_array=$result->fetchAll(); $result->closeCursor(); $run_bus_array = array(); //将所有班次的车次信息按照班次进行归类 存入$run_bus_array foreach( $result_array as $run_bus_info ) { if( !isset($run_bus_array[$run_bus_info["RUN_ID"]]) ) { $run_bus_array[$run_bus_info["RUN_ID"]] = array(); } $run_bus_array[$run_bus_info["RUN_ID"]][] = $run_bus_info; } //取得所有线路所对应的票种信息 $sql6 = " SELECT * FROM opera_product WHERE PROD_TYPE=82 AND PARENT_ID IN(".implode(",",$prod_id_array).") AND PROD_ID NOT IN (".implode(",",$no_sell_array).") AND CANCEL_FLAG = 0 "; $result=$pdo->query($sql6); $result_array=$result->fetchAll(); $result->closeCursor(); $prod_tickets_array = array(); $prod_tickets_id_array = array(); //将所有票种信息按照PROD_ID来进行分类存储进$prod_tickets_array //并将所有的票种PROD_ID存储进$prod_tickets_id_array foreach( $result_array as $prod_tickets_info ) { $prod_tickets_array[$prod_tickets_info["PROD_ID"]] = $prod_tickets_info; $prod_tickets_id_array[] = $prod_tickets_info["PROD_ID"]; } //获取所有票种价格信息 $sql7 = " SELECT * FROM opera_product_price WHERE PROD_TYPE_ID=82 AND PROD_ID IN(".implode(",",$prod_tickets_id_array).") "; $result=$pdo->query($sql7); $result_array=$result->fetchAll(); $result->closeCursor(); $prod_price_array = array(); //把所有票价信息按照父ID(线路)进行分类并存储进$prod_price_array foreach( $result_array as $prod_price_info ) { $prod_ticket_info = $prod_tickets_array[$prod_price_info["PROD_ID"]]; $prod_ticket_info["PROD_PRICE"] = $prod_price_info["PROD_PRICE"]; $prod_ticket_info["CUS_PRICE"] = $prod_price_info["CUS_PRICE"]; if( !isset($prod_price_array[$prod_ticket_info["PARENT_ID"]]) ) { $prod_price_array[$prod_ticket_info["PARENT_ID"]] = array(); } $prod_price_array[$prod_ticket_info["PARENT_ID"]][$prod_price_info["PROD_ID"]] = $prod_ticket_info; } //获取班次的站点信息 $sql8 = " SELECT * FROM run_station WHERE RUN_ID IN (".implode( ",", $run_id_array).") "; $result=$pdo->query($sql8); $result_array=$result->fetchAll(); $result->closeCursor(); $run_station_array = array(); $res_start_time_array = array(); //把班次站点信息按照班次RUN_ID进行归类,并总结出每个班次的起始站点和终了站点 //根据班次站点对于时间进行归纳,并存储至$res_start_time_array foreach( $result_array as $run_station_info ) { if( !isset($run_station_array[$run_station_info["RUN_ID"]]) ) { $run_station_array[$run_station_info["RUN_ID"]] = array( "start_time" => "","start_res_id" => 0, "start_area_id" => 0, "end_res_id" => 0, "end_area_id" => 0, "end_order_no" => 0 ); } if( !isset($res_start_time_array[$run_station_info["RUN_ID"]])) { $res_start_time_array[$run_station_info["RUN_ID"]] = array(); } $res_start_time_array[$run_station_info["RUN_ID"]][$run_station_info["STATION_RES_ID"]] = $run_station_info["START_TIME"]; if( $run_station_info["STATION_ORDER_ID"] == 1 ) { $run_station_array[$run_station_info["RUN_ID"]]["start_time"] = $run_station_info["START_TIME"]; $run_station_array[$run_station_info["RUN_ID"]]["start_res_id"] = $run_station_info["STATION_RES_ID"]; $run_station_array[$run_station_info["RUN_ID"]]["start_area_id"] = $run_station_info["AREA_ID"]; } else { if( $run_station_array[$run_station_info["RUN_ID"]]["end_order_no"] < $run_station_info["STATION_ORDER_ID"] ) { $run_station_array[$run_station_info["RUN_ID"]]["end_order_no"] = $run_station_info["STATION_ORDER_ID"]; $run_station_array[$run_station_info["RUN_ID"]]["end_res_id"] = $run_station_info["STATION_RES_ID"]; $run_station_array[$run_station_info["RUN_ID"]]["end_area_id"] = $run_station_info["AREA_ID"]; } } } //获取票种的所有信息 $sql9 = " SELECT * FROM opera_product_property WHERE PROD_ID IN(".implode(",",$prod_tickets_id_array).") "; $result=$pdo->query($sql9); $result_array=$result->fetchAll(); $result->closeCursor(); $start_end_array = array(); //将所有票种的额外信息按照票种PROD_ID进行归类并存储到$start_end_array 主要为了获取每个票种的起始地目的地 foreach( $result_array as $start_end_info ) { if( !isset($start_end_array[$start_end_info["PROD_ID"]]) ) { $start_end_array[$start_end_info["PROD_ID"]] = array(); } $start_end_array[$start_end_info["PROD_ID"]][$start_end_info["TYPE_ID"]] = $start_end_info["PROPERTY"]; } $disney_disp_array = array( "上海迪士尼" => "迪士尼" ); $data_array = array(); foreach( $rowset as $row_info ) { $base_info = array(); $base_info["run_code"] = $row_info["RUN_ID"]; $base_info["supplier"] = "上海南顺"; $base_info["prod_type"] = "景区直通车"; $base_info["run_type"] = "普通班次"; $base_info["bus_type"] = "国产旅游空调车"; $base_info["can_book"] = 1; $base_info["is_active"] = 1; $base_info["start_date"] = $row_info["RUN_DATE"]; $base_info["start_time"] = $row_info["RUN_TIME"]; $base_info["pre_days"] = $row_info["PRE_SALE_DAY"] > 0 ? $row_info["PRE_SALE_DAY"] : 1; $base_info["on_sale"] = $row_info["RUN_STATUS"] == 138 ? 1:0; $base_info["is_limit"] = in_array($row_info["PROD_ID"], $limit_sell_prod) ? 1 : 0; if( !$run_bus_array[$row_info["RUN_ID"]] ) { $base_info["bus_no"] = "以实际情况为准"; $base_info["total_count"] = 0; $base_info["saled_count"] = 0; $base_info["remain_count"] = 0; } else { $base_info["bus_no"] = mb_strlen($run_bus_array[$row_info["RUN_ID"]][0]["SEND_BUS_NO"]) > 0 ? $run_bus_array[$row_info["RUN_ID"]][0]["SEND_BUS_NO"] : "以实际情况为准"; $total_count = 0; $saled_count = 0; $remain_count = 0; foreach( $run_bus_array[$row_info["RUN_ID"]] as $run_bus_info ) { $total_count += $run_bus_info["SEAT_COUNT"]; $saled_count += $run_bus_info["SALED_COUNT"]; } $remain_count = $total_count - $saled_count; $base_info["total_count"] = $total_count; $base_info["saled_count"] = $saled_count; $base_info["remain_count"] = $remain_count; } //need add here $tickets_array = $prod_price_array[$row_info["PROD_ID"]]; foreach( $tickets_array as $tickets_info ) { $prod_name = $prod_tickets_array[$tickets_info["PROD_ID"]]["PROD_NAME"]; if( mb_strpos( $prod_name, "往返") != false ) { continue; } else { echo mb_strpos( $prod_name, "往返"); } $base_info["run_code"] = $row_info["RUN_ID"]."_".$tickets_info["PROD_ID"]; $start_end_info = $start_end_array[$tickets_info["PROD_ID"]]; $base_info["start_time"] = $res_start_time_array[$row_info["RUN_ID"]][$start_end_info["112"]]; $base_info["end_time"] = $res_start_time_array[$row_info["RUN_ID"]][$start_end_info["113"]]; $base_info["start_city"] = $city_array[$start_end_info["125"]]["AREA_NAME"]; $base_info["end_city"] = $city_array[$start_end_info["126"]]["AREA_NAME"]; if( $base_info["start_city"] == "上海迪士尼" ) { $base_info["start_city"] = "迪士尼"; } if( $base_info["end_city"] == "上海迪士尼" ) { $base_info["end_city"] = "迪士尼"; } $base_info["start_res"] = $res_array[$start_end_info["112"]]["RES_NAME"]; $base_info["end_res"] = $res_array[$start_end_info["113"]]["RES_NAME"]; $start_res = $base_info["start_res"]; $end_res = $base_info["end_res"]; $start_city_length = mb_strlen($base_info["start_city"]); if( substr($start_res,0,$start_city_length) == $base_info["start_city"] ) { $base_info["start_res"] = substr($start_res,$start_city_length); } $end_city_length = mb_strlen($base_info["end_city"]); if( substr($end_res,0,$end_city_length) == $base_info["end_city"] ) { $base_info["end_res"] = substr($end_res,$end_city_length); } $base_info["half_price"] = $prod_price_array[$row_info["PROD_ID"]][$tickets_info["PROD_ID"]]["PROD_PRICE"]; $base_info["full_price"] = $prod_price_array[$row_info["PROD_ID"]][$tickets_info["PROD_ID"]]["CUS_PRICE"]; $base_info["description"] = $prod_name; $base_info["description"] = ""; $data_array[] = $base_info; } } //temp array $outside_array = array( "黄浦站" => "黄浦旅游集散站" ); //zizai $sql_zizai = " SELECT * FROM outside_run WHERE line_code IN ('shz101') AND cancel_flag = 0 AND prod_name <> '儿童票' AND start_date >= '{$start_date}' AND start_date <= '{$end_date}' "; $result=$pdo->query($sql_zizai); $result_array=$result->fetchAll(); $result->closeCursor(); foreach( $result_array as $run_info ) { $base_info = array(); $base_info["supplier"] = "自在旅行"; $base_info["prod_type"] = "景区直通车"; $base_info["run_type"] = $run_info["prod_name"]; $base_info["bus_type"] = "国产旅游空调车"; $base_info["can_book"] = 1; $base_info["is_active"] = 1; $base_info["start_date"] = $run_info["start_date"]; $base_info["start_time"] = $run_info["start_time"]; $base_info["pre_days"] = 1; $base_info["on_sale"] = 1; $base_info["run_code"] = $run_info["prod_code"]; $base_info["is_limit"] = 0; $base_info["description"] = ""; $base_info["bus_no"] = "以实际情况为准"; //留3张容错 $base_info["total_count"] = $run_info["remain_count"]; $base_info["saled_count"] = 3; $base_info["remain_count"] = $run_info["remain_count"] - 3; $base_info["remain_count"] = $base_info["remain_count"] > 0 ? $base_info["remain_count"] : 0; $base_info["start_city"] = $run_info["start_area"]; $base_info["end_city"] = $run_info["end_area"]; $base_info["start_res"] = isset($outside_array[$run_info["start_res"]]) ? $outside_array[$run_info["start_res"]] : $run_info["start_res"]; $base_info["end_res"] = $run_info["end_res"]."站"; $base_info["full_price"] = $run_info["cus_price"]; $data_array[] = $base_info; } //生成一个文件 //$txt_file_name = 'coach_zhizhu_data_'.date("Ymd").'_0001'; $txt_file_name = 'coach_zhizhu_data_'.date("Ymd",strtotime("+1 days")).'_0001'; $txt_file = fopen( $txt_file_name.".txt", "w,ccs=UTF-8") or die("Unable to open file!"); foreach( $data_array as $base_info ) { $pre_minutes = 990; if( isset($base_info["end_time"]) ) { $diff_time = strtotime($base_info["end_time"]) - strtotime($base_info["start_time"]); $disp_diff_time = floor($diff_time / 60); } else { $base_info["end_time"] = ""; $disp_diff_time = ""; } if( $base_info["is_limit"] == 0 ) { $pre_sec = strtotime($base_info["start_time"]) - strtotime("00:00:00"); } else { $pre_day = date("Y-m-d", strtotime($base_info["start_date"]." -1 days")); $pre_sec = strtotime($base_info["start_date"]." ".$base_info["start_time"]) - strtotime($pre_day." 10:00:00"); } $pre_minutes = floor($pre_sec / 60); if( $base_info["is_limit"] != 0 ) { $pre_minutes = 30; } $total_count = $base_info["total_count"] > 3 ? ($base_info["total_count"]-3) : 0; $line = $base_info["start_city"].",".$base_info["end_city"].",".$base_info["start_res"].",".$base_info["end_res"].",".$base_info["run_code"].",旅游空调车,".$base_info["full_price"].",".$base_info["start_time"].",".$base_info["end_time"].",,".$disp_diff_time.",FALSE,0,".QUNAR_CHECK_STOCK_URL.",,,0,".$base_info["start_date"].",10,{$pre_minutes}"; fwrite($txt_file, $line."\n"); } fclose($txt_file); create_zip_file( $txt_file_name.".txt", $txt_file_name.".zip"); $destination_file = "/qunar/".$txt_file_name.".zip"; //$destination_file = "/".$txt_file_name.".zip"; echo upload_file_to_ftp( QUNAR_FTP_SERVER, QUNAR_FTP_PORT, QUNAR_FTP_USER, QUNAR_FTP_PSD, $txt_file_name.".zip", $destination_file ); //echo upload_file_to_ftp( QUNAR_UPLOAD_FTP_SERVER, QUNAR_UPLOAD_FTP_PORT, QUNAR_UPLOAD_FTP_USER, QUNAR_UPLOAD_FTP_PSD, $txt_file_name.".zip", $destination_file ); unlink( $txt_file_name.".txt" ); unlink( $txt_file_name.".zip" ); exit();