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