|
- <?php
- header("Access-Control-Allow-Origin:*");
- //载入配置文件和连接数据库
- $pdo=conn();
-
- //区分是普通乘客还是分销员 0普通,1分销
- $user_type = 0;
-
- //判断出发地 目的地 时间是否为空
- $start_area = empty($_POST['start_area'])?"":" and a.property = ".$_POST['start_area'];
- $end_area = empty($_POST['end_area'])?"":" and b.property = ".$_POST['end_area'];
- $time = empty($_POST['go_time'])?date("Y-m-d",time()+24*3600):$_POST['go_time'];
- $current_day = date("Y-m-d");
- $limit_time = date("H:i", strtotime("+30 minutes"));
-
- $bus_type = $_POST['bus_type'];
- if($bus_type == 255){
- $bus_type = "255,0";
- }
-
- //$currpage = 1;
- //$pagesize = 2;
- $currpage = $_POST['currpage'];
- $pagesize = $_POST['pagesize'];
- $num = ($currpage - 1) * $pagesize;
-
- //$start_area = "";
- //$end_area = "";
- //$start_area = 791;//"上海"
- //$end_area = 3225;//"乌镇"
- //$time = date("Y-m-d",time());
- //$time = '2016-08-04';
- //通过出发点和目的地查询票种
- $sql = "select a.prod_id,a.property as s_area,b.property as e_area,c.property as up,d.property as down from opera_product_property as a,opera_product_property as b,opera_product_property as c,opera_product_property as d
- where a.prod_id = b.prod_id and a.prod_id = c.prod_id and a.prod_id = d.prod_id
- and a.type_id = 125 ".$start_area." and b.type_id= 126 ".$end_area." and c.type_id = 112 and d.type_id = 113";
- $result = $pdo->query($sql);
- $prod = $result->fetchAll(PDO::FETCH_ASSOC);
-
- if(count($prod) > 0){
- //找到属于票种的信息
-
- //城市名
- $area_array = array();
-
- foreach($prod as $k => $v){
- $list[$k] = $v['prod_id'];
- }
- $prod_id = implode(',',$list);
- //从未删除的线路中找到属于自己线路的票种
- $sql = "select a.prod_id as ticket_id,b.prod_id as line_id from opera_product as a,opera_product as b where a.parent_id = b.prod_id and a.prod_id in (".$prod_id.") and a.if_disabled = 0 and a.ticket_mark in(0,1) and a.prod_type = 82 and a.cancel_flag = 0 and b.cancel_flag = 0 and b.bus_type in (" . $bus_type . ")";
- $result = $pdo->query($sql);
- $list = $result->fetchAll(PDO::FETCH_ASSOC);
-
- if(count($list) > 0){
- //获取票种的上下车站点,并打包
-
- //已票种ID为索引的数组
- $prod_array = array();
-
- //出发/目的地数组
- $all_area = array();
-
- foreach($prod as $k => $v){
- $all_area[] = $v['s_area'];
- $all_area[] = $v['e_area'];
-
- if( !isset($prod_array[$v['prod_id']]) ) {
- $prod_array[$v['prod_id']] = $v;
- }
- }
-
- $all_area = array_unique($all_area);
-
- //获取所有地名
- $sql = "select id,area_name from base_area where id in(" . implode(",",$all_area) .")";
- $result = $pdo->query($sql);
- $area = $result->fetchAll(PDO::FETCH_ASSOC);
- foreach($area as $area_info) {
- $area_array[$area_info['id']] = $area_info['area_name'];
- }
-
- //合并后的票种数组,索引为票种ID
- $ticket_array = array();
-
- //票种的ID数组
- $ticket_id_array = array();
-
- //线路-(出发地-目的地)-(上车站-下车站)- 票种
- $line_ticket_array = array();
-
- //线路的ID数组
- $line_id_array = array();
-
- foreach($list as $k => $v){
- $ticket_id_array[] = $v["ticket_id"];
- $v2 = $prod_array[$v["ticket_id"]];
- $new_v = array_merge($v,$v2);
- $ticket_array[$v["ticket_id"]] = array_merge($v,$v2);
-
- //取出所有符合票种的全部线路信息
- if( !in_array($new_v["line_id"],$line_id_array)) {
- $line_id_array[] = $new_v["line_id"];
- }
-
-
-
- //创建线路索引
- if( !isset($line_ticket_array[$new_v["line_id"]])) {
- $line_ticket_array[$new_v["line_id"]] = array();
- }
-
- $line_ticket_array[$new_v["line_id"]][$new_v["ticket_id"]] = $new_v;
- // //创建线路-(出发地-目的地)-(上车站-下车站)索引
- // if( !isset($line_ticket_array[$new_v["line_id"]][$new_v["s_area"]."_".$new_v["e_area"]])) {
- // $line_ticket_array[$new_v["line_id"]][$new_v["s_area"]."_".$new_v["e_area"]] = array();
- // }
-
- // //将票种对应放入已创建的索引中
- // $line_ticket_array[$new_v["line_id"]][$new_v["s_area"]."_".$new_v["e_area"]][$new_v["up"]."_".$new_v["down"]] = $new_v;
- }
- //print_r($line_ticket_array);die;
-
- $sql = "select run_id,run_date,prod_id as line_id from run_main where run_status = 138 and prod_id in (" . implode(",", $line_id_array) . ") and run_date = '" . $time . "' ";
- if( $time == $current_day ) {
- $sql .= " and RUN_TIME > '{$limit_time}' ";
- }
- $sql .= " order by run_id desc ";
-
-
- $result = $pdo->query($sql);
-
- //班次线路票种
- $run_line_ticket = $result->fetchAll(PDO::FETCH_ASSOC);
-
- if(count($run_line_ticket) > 0) {
- $run_id_array = array();
- $run_info_array = array();
- foreach( $run_line_ticket as $run_line_info ) {
- if( in_array($run_line_info["line_id"],$line_id_array) ) {
- $run_id_array[] = $run_line_info["run_id"];
- $run_info_array[$run_line_info["run_id"]] = $run_line_info;
- }
- }
-
- $sql = "select id,run_id,station_order_id,start_time,station_res_id,station_inout_type from run_station where run_id in (" . implode(',',$run_id_array) . ") group by run_id,station_order_id order by run_id";
- $result = $pdo->query($sql);
-
- //获取线路的所有站点
- $station = $result->fetchAll(PDO::FETCH_ASSOC);
-
- //获取以班次为索引的所用站点及时间
- $run_station_array = array();
- foreach( $station as $station_info ) {
- if( !isset($run_station_array[$station_info["run_id"]]) ) {
- $run_station_array[$station_info["run_id"]]=array();
- }
- $run_station_array[$station_info["run_id"]][$station_info["station_res_id"]] = $station_info["start_time"];
- }
-
-
- //获取票种价格
- $sql = "select cus_price,cus_price,prod_id from opera_product_price where prod_id in (" . implode(",",$ticket_id_array) . ")";
- $result = $pdo->query($sql);
- $price = $result->fetchAll(PDO::FETCH_ASSOC);
-
- //价格-票种数据
- $price_array = array();
- foreach($price as $price_info){
- if($user_type == 0){
- $price_array[$price_info['prod_id']] = $price_info['cus_price'];
- }else{
- $price_array[$price_info['prod_id']] = $price_info['prod_price'];
- }
- }
-
-
- //班次-线路-票种数组
- $run_line_ticket_array = array();
- //print_r($line_ticket_array);exit();
- foreach( $run_info_array as $run_id_key => $run_info ) {
- if( in_array($run_info['line_id'],$line_id_array)) {
- //$run_nav = array_merge($run_info,$line_ticket_array[$run_info['line_id']]);
- $run_line_ticket_array[$run_id_key] = array();
-
- foreach($line_ticket_array[$run_info['line_id']] as $run_ticket_array){
- $t_nve = $run_ticket_array;
-
- $t_nve['start_time'] = $run_station_array[$run_id_key][$t_nve['up']];
- $t_nve['end_time'] = $run_station_array[$run_id_key][$t_nve['down']];
- $t_nve['price'] = $price_array[$t_nve['ticket_id']];
- //创建线路-(出发地-目的地)-(上车站-下车站)索引;
-
- if( !isset($run_line_ticket_array[$run_id_key]['tickets'][$t_nve["s_area"]."_".$t_nve["e_area"]])) {
- $run_line_ticket_array[$run_id_key]['tickets'][$t_nve["s_area"]."_".$t_nve["e_area"]] = array();
- }
-
- //将票种对应放入已创建的索引中
- $run_line_ticket_array[$run_id_key]['tickets'][$t_nve["s_area"]."_".$t_nve["e_area"]][$t_nve["up"]."_".$t_nve["down"]] = $t_nve;
-
- $run_line_ticket_array[$run_id_key]['info'] = $run_info;
- }
-
- }
- }
- //print_r($run_line_ticket_array);exit();
- $i = 0;
- $data = array();
- foreach($run_line_ticket_array as $k_run => $v_run){
- foreach($v_run['tickets'] as $k_area => $v_area){
- $araa_id_area = explode("_",$k_area);
- $data[$i]['run_id'] = $k_run;
- $data[$i]['line_id'] = $v_run['info']['line_id'];
- $data[$i]['run_date'] = $v_run['info']['run_date'];
- $data[$i]['start_area_id'] = $araa_id_area[0];
- $data[$i]['start_area_name'] = $area_array[$araa_id_area[0]];
- $data[$i]['end_area_id'] = $araa_id_area[1];
- $data[$i]['end_area_name'] = $area_array[$araa_id_area[1]];
-
- $start_time_array = array();
- $price_all_array = array();
- //$ticket_all_str = array();
- foreach($v_area as $k_sta => $v_sta) {
- $start_time_array[] = $v_sta['start_time'];
- $price_all_array[] = $v_sta['price'];
- //$ticket_all_str[] = "{" . $v_sta['ticket_id'] . "," . $v_sta['up'] . "," . $v_sta['start_time'] . "," .$v_sta['down'] . "," . $v_sta['end_time'] . "," . $v_sta['price'] . "}";
- }
-
- asort($start_time_array);
- sort($start_time_array);
-
- $price_all_array = array_unique($price_all_array);
- $price_all_array = implode("/",$price_all_array);
-
- //$ticket_all_str = implode("|",$ticket_all_str);
-
- $data[$i]['start_time'] = $start_time_array[0];
- $data[$i]['price'] = $price_all_array;
- $data[$i]['ticket'] = $v_area;
- $data[$i]['site_type'] = '普通座';
- $i++;
- }
- }
- $data2 = array_slice($data,$num,$pagesize);
-
- sort($data2);
-
- foreach($data2 as $data_key => $data_info){
- $tickets_num_array = array();
- $ticket_all_str = array();
- $tic_status = 1;
- foreach($data_info['ticket'] as $k => $v_sta){
-
- $station_array = explode("_",$k);
- $sql = "select a.res_id,a.seq_id,a.seat_type,a.total_count,a.saled_count
- from run_stock as a,
- (select seq_id from run_stock where run_id = " . $data_info['run_id'] . " and res_id = " . $station_array[0] . " and seat_type = 72 and cancel_flag = 0 and prod_id = " . $data_info['line_id'] . ") as b,
- (select seq_id from run_stock where run_id = " . $data_info['run_id'] . " and res_id = " . $station_array[1] . " and seat_type = 72 and cancel_flag = 0 and prod_id = " . $data_info['line_id'] . ") as c
- where a.run_id = " . $data_info['run_id'] . " and a.seat_type = 72 and a.cancel_flag = 0 and a.prod_id = " . $data_info['line_id'] . " and a.seq_id >= b.seq_id and a.seq_id < c.seq_id order by seq_id";
- $result = $pdo->query($sql);
- $stock = $result->fetchAll(PDO::FETCH_ASSOC);
-
- $tickets_array = array();
- foreach($stock as $kk => $v){
- $tickets_array[] = $v['total_count'] - $v['saled_count'];
- }
-
- asort($tickets_array);
- sort($tickets_array);
-
- $tickets = $tickets_array[0];
-
- $data2[$data_key]['ticket'][$k]['num'] = $tickets;
- $ticket_all_str[] = "{" . $v_sta['ticket_id'] . "," . $v_sta['up'] . "," . $v_sta['start_time'] . "," .$v_sta['down'] . "," . $v_sta['end_time'] . "," . $v_sta['price'] . "," . $tickets . "}";
-
- $tickets_num_array[] = $tickets;
- if($tickets <= 20){
- $tic_status = 0;
- }
- }
-
- $tickets_num_array = array_unique($tickets_num_array);
-
- if($tic_status == 0){
- $tickets_num_array = implode("/",$tickets_num_array);
- }else{
- $tickets_num_array = "充足";
- }
-
-
- $ticket_all_str = implode("|",$ticket_all_str);
-
- $data2[$data_key]['num'] = $tickets_num_array;
- $data2[$data_key]['ticket'] = $ticket_all_str;
-
- }
-
- //获取符合条件的线路-票种二位数组
- $code = 0;
- $info = $CODE[0];
- $list = $data2;
-
- //获取总条数
-
-
- //班次线路票种
-
- $totalnum = count($data);
-
- }else{
- $code = 0;
- $info = $CODE[7];
- $list = "";
- $totalnum = 0;
- }
-
- }else{
- //product表没有符合查询的线路及票种
- $code = 0;
- $info = $CODE[4];
- $list = "";
- $totalnum = 0;
- }
-
- }else{
- //property表没有符合出发地目的地的数据
- $code = 0;
- $info = $CODE[3];
- $list = "";
- $totalnum = 0;
- }
-
- $json = array();
- $json['code'] = $code;
- $json['info'] = $info;
- $json['list'] = $list;
- $json['totalnum'] = $totalnum;
- //print_r($json);
-
- echo json_encode($json);
- ?>
|