|
- <?php
- require_once '../st-xm/Common/Mysql.php';
- header("Access-Control-Allow-Origin:*");
- $no_sell_array = array(152739,152740,152741,152691,152697,152715,152709,152715,153133,153135,153137,152569,152570,152571,152572,152573,152575,152577,152579,152581,152582);
-
- $ticket_0_array = array(152695,152696,152706,152707);
-
- $limit_sell_prod = array( 152248, 152251, 448568, 448569);
- $campain_end_date = "2016-08-31";
- //test
- //$_POST['auth_code'] = "abcdefg";
- //$_POST['start_date'] = date("Y-m-d",strtotime("+1days"));
- //$_POST['end_date'] = date("Y-m-d",strtotime("+5days"));
- //end of test
- $auth_code=isset($_POST['auth_code'])? $_POST['auth_code']:false;
- $start_date=isset($_POST['start_date'])? $_POST['start_date']:date("Y-m-d",strtotime("+1 days"));
- $end_date=isset($_POST['end_date'])? $_POST['end_date']:date("Y-m-d", strtotime("+1 months"));
- $search_end_date = date("Y-m-d", strtotime( $end_date." +2 days" ) );
-
- $current_time = time();
- $today = date("Y-m-d");
- $current_time = date("H:i:s",$current_time);
- $tomorrow_day = date("Y-m-d",strtotime("+1 days"));
- $limit_time = date("H:i", strtotime("+30 minutes"));
- /*
- if( $current_time >= "15:00" && $start_date < $tomorrow_day ) {
- $start_date = $tomorrow_day;
- }*/
-
- $return_data = array();
- $return_data['code']='201';
-
- if( $auth_code == false ) {
- $return_data['code']='401';
- echo json_encode($return_data);
- exit();
- }
- $pdo=conn1();
- //验证函数
- $sql=" SELECT user_name,user_psd,user_auth_code FROM api_auth_code WHERE user_auth_code='".$auth_code."' ";
- $result=$pdo->query($sql);
- $rowset=$result->fetchAll();
- $result->closeCursor();
- if( false == $rowset ) {
- $return_data['code']='400';
- echo json_encode($return_data);
- exit();
- }
- //取得所有符合检索条件的班次信息
- //152690:上海-西塘-乌镇 152703:乌镇-西塘-上海 152716:上海-乌镇-萧山 152727:萧山-乌镇-上海 152248:上海-千岛湖 152251:千岛湖-上海
- //152738:上海-苏州 152745:苏州-上海
- //153146:上海市-周庄 153144:周庄-上海市
- //153122:周庄-上海迪士尼-上海市 153123:上海市-上海迪士尼-周庄
- //生成一个反数组来记录往返所需要的PROD_ID对应
- $return_prod_id = array();
- $return_prod_id["152690"] = 152703;
- $return_prod_id["152716"] = 152727;
- $return_prod_id["152703"] = 152690;
- $return_prod_id["152727"] = 152716;
- $return_prod_id["152248"] = 152251;
- $return_prod_id["152251"] = 152248;
- $return_prod_id["152738"] = 152745;
- $return_prod_id["152745"] = 152738;
- $return_prod_id["153146"] = 153144;
- $return_prod_id["153144"] = 153146;
- $return_prod_id["153122"] = 153123;
- $return_prod_id["153123"] = 153122;
-
- $compain_array = array(152690,152703,152248,152251,152738,152745,153146,153144,153122,153123);
- $not_compain_tickets = array(152695,152696,152706,152707);
- $sql2 = " SELECT * FROM run_main WHERE PROD_ID IN (152690,152703, 152716, 152727,152251,152248,152745,152738,153146,153144,153122,153123) AND RUN_STATUS=138 AND RUN_DATE >= '".$start_date."' AND RUN_DATE <= '".$search_end_date."' ORDER BY RUN_DATE ";
- //$sql2 = " SELECT * FROM run_main WHERE PROD_ID IN (152690,152703, 152716, 152727,152745,152738,153146,153144,153122,153123) AND RUN_STATUS=138 AND RUN_DATE >= '".$start_date."' AND RUN_DATE <= '".$search_end_date."' ORDER BY RUN_DATE ";
- //$sql2 = " SELECT * FROM run_main WHERE PROD_ID IN (152690,152703, 152716, 152727,152745,152738) AND RUN_STATUS=138 AND RUN_DATE >= '".$start_date."' AND RUN_DATE <= '".$search_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();
- $all_run_array = array();
- foreach( $rowset as $row_info ) {
- $all_run_array[$row_info["RUN_ID"]] = $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"];
- }
- //对于结果集进行遍历,针对PROD和日期进行归纳并存储进run_return_array
- //run_return_array为三维数组 第一维是PROD_ID(去程) 第二维是日期(去程) 最终会存入两个返程的RUN_ID
- $re_prod_id = $return_prod_id[$row_info["PROD_ID"]];
- if( !isset($run_return_array[$re_prod_id]) ) {
- $run_return_array[$re_prod_id] = array();
- }
- $come_date1 = date("Y-m-d", strtotime("{$row_info["RUN_DATE"]} -1 days"));
- $come_date2 = date("Y-m-d", strtotime("{$row_info["RUN_DATE"]} -2 days"));
- if( !isset($run_return_array[$re_prod_id][$come_date1]) ) {
- $run_return_array[$re_prod_id][$come_date1] = array();
- }
- if( !isset($run_return_array[$re_prod_id][$come_date2]) ) {
- $run_return_array[$re_prod_id][$come_date2] = array();
- }
- $run_return_array[$re_prod_id][$come_date1][] = $row_info["RUN_ID"];
- $run_return_array[$re_prod_id][$come_date2][] = $row_info["RUN_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 ";
- //$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();
- $bothway_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"];
- if( mb_strpos($prod_tickets_info["PROD_NAME"],"往返") ) {
- $bothway_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();
- $res_start_reach_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"];
- }
- foreach( $start_end_array as $prod_id_key => $start_end_info ) {
- if( !isset($res_start_reach_array[$start_end_info[112]]) ) $res_start_reach_array[$start_end_info[112]] = array();
- if( !isset($res_start_reach_array[$start_end_info[112]][$start_end_info[113]]) ) $res_start_reach_array[$start_end_info[112]][$start_end_info[113]] = array();
- if( in_array($prod_id_key, $bothway_tickets_id_array)) $res_start_reach_array[$start_end_info[112]][$start_end_info[113]] = $prod_id_key;
- }
-
- $data_array = array();
- foreach( $rowset as $row_info ) {
- if( $row_info["RUN_DATE"] > $end_date ) {
- break;
- }
- if( $row_info["RUN_DATE"] <= $today ) {
- $base_info["bus_no"] = "以实际情况为准";
- $base_info["total_count"] = 0;
- $base_info["saled_count"] = 0;
- $base_info["remain_count"] = 0;
- }
- $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;
- if( $row_info["RUN_DATE"] <= $campain_end_date ) {
- $base_info["is_campaign"] = in_array($row_info["PROD_ID"], $compain_array) ? 1 : 0;
- } else {
- $base_info["is_campaign"] = 0;
- }
- //$base_info["is_campaign"] = 0;
- $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;
-
- if( !$run_bus_array[$row_info["RUN_ID"]] || ( $row_info["RUN_DATE"] == $today && $limit_time >= $row_info["RUN_TIME"] ) || (in_array($row_info["PROD_ID"], $limit_sell_prod) && $current_time> "10:00" && $row_info["RUN_DATE"] <= $tomorrow_day ) ) {
- $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"] : "以实际情况为准";
- $base_info["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-3;
- $base_info["total_count"] = $total_count;
- $base_info["saled_count"] = $saled_count+3;
- $base_info["remain_count"] = $remain_count < 0 ? 0 : $remain_count;
- }
- //need add here
- $tickets_array = $prod_price_array[$row_info["PROD_ID"]];
- foreach( $tickets_array as $tickets_info ) {
- $base_info["is_campaign"] = in_array( $row_info["PROD_ID"], $compain_array ) ? 1 : 0;
- $prod_name = $prod_tickets_array[$tickets_info["PROD_ID"]]["PROD_NAME"];
- $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["start_city"] = getDispAreaNameForCtrip($city_array[$start_end_info["125"]]["AREA_NAME"]);
- $base_info["end_city"] = getDispAreaNameForCtrip($city_array[$start_end_info["126"]]["AREA_NAME"]);
-
- $base_info["start_res"] = $res_array[$start_end_info["112"]]["RES_NAME"];
- $base_info["end_res"] = $res_array[$start_end_info["113"]]["RES_NAME"];
- $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["full_price"] = $base_info["full_price"] < $base_info["half_price"] ? $base_info["half_price"] : $base_info["full_price"];
- if( $base_info["start_date"] <= $campain_end_date && $base_info["is_campaign"] == 1 && !in_array($tickets_info["PROD_ID"], $not_compain_tickets) ) {
- $base_info["full_price"] -= 10;
- } else {
- $base_info["is_campaign"] = 0;
- }
- if( mb_strpos( $prod_name, "往返") != false ) {
- continue;
- $base_info["half_price"] = $prod_price_array[$row_info["PROD_ID"]][$tickets_info["PROD_ID"]]["PROD_PRICE"] * 2;
- $base_info["full_price"] = $prod_price_array[$row_info["PROD_ID"]][$tickets_info["PROD_ID"]]["CUS_PRICE"] * 2;
- $base_info["full_price"] = $base_info["full_price"] < $base_info["half_price"] ? $base_info["half_price"] : $base_info["full_price"];
-
- $back_run_id_array = $run_return_array[$row_info["PROD_ID"]][$row_info["RUN_DATE"]];
- foreach( $back_run_id_array as $back_run_id ) {
- if( !$run_bus_array[$back_run_id] ) {
- $base_info["bus_no"] = "以实际情况为准";
- $base_info["total_count"] = 0;
- $base_info["saled_count"] = 0;
- $base_info["remain_count"] = 0;
- } else {
- $total_count = 0;
- $saled_count = 0;
- $remain_count = 0;
- foreach( $run_bus_array[$back_run_id] as $run_bus_info ) {
- $total_count += $run_bus_info["SEAT_COUNT"];
- $saled_count += $run_bus_info["SALED_COUNT"];
- }
- $base_info["total_count"] = $base_info["total_count"] > $total_count ? $total_count : $base_info["total_count"];
- $base_info["saled_count"] = $base_info["saled_count"] > $saled_count ? $base_info["saled_count"] : $saled_count;
- $base_info["remain_count"] = $base_info["total_count"] - $base_info["saled_count"];
- }
-
- $back_run_info = $all_run_array[$back_run_id];
- $back_prod_id = $res_start_reach_array[$start_end_info["113"]][$start_end_info["112"]];
- $base_info["run_code"] = $row_info["RUN_ID"]."_".$tickets_info["PROD_ID"]."_".$back_run_id."_".$back_prod_id;
- $return_start_end = $start_end_array[$back_prod_id];
- $back_date = substr($back_run_info["RUN_DATE"],5,5);
- $base_info["description"] = str_replace("-","月",$back_date)."日".$res_start_time_array[$back_run_info["RUN_ID"]][$return_start_end["112"]]."从".$base_info["end_city"]."返回";
- $base_info["remain_count"] = $base_info["remain_count"] < 0 ? 0 : $base_info["remain_count"];
- $data_array[] = $base_info;
- }
- } else {
- $base_info["run_code"] = $row_info["RUN_ID"]."_".$tickets_info["PROD_ID"];
- $base_info["description"] = "";
- $base_info["remain_count"] = $base_info["remain_count"] < 0 ? 0 : $base_info["remain_count"];
- if( in_array( $tickets_info["PROD_ID"] , $ticket_0_array) ) {
- $base_info["total_count"] = 0;
- $base_info["saled_count"] = 0;
- $base_info["remain_count"] = 0;
- }
- $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 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["is_campaign"] = 0;
- $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["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;
- if( $run_info["prod_name"] == "儿童票" ) {
- $base_info["total_count"] = 0;
- $base_info["saled_count"] = 0;
- $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["half_price"] = $run_info["mid_price"];
- $base_info["full_price"] = $run_info["cus_price"];
- $data_array[] = $base_info;
- }
-
- $return_data["all_count"] = count($data_array);
- $return_data["data_array"] = $data_array;
-
- echo json_encode($return_data);
- exit();
-
|