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); ?>