= '".$start_date."' AND RUN_DATE <= '".$search_end_date."' ORDER BY RUN_DATE "; $result=$pdo->query($sql2); if( false == $result ) { return false; } $rowset=$result->fetchAll(); $result->closeCursor(); $run_id_array = array(); $prod_id_array = array(); $all_run_array = array(); $run_return_array = array(); $all_line_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"]; } if( !isset($all_line_run_array[$row_info["PROD_ID"]]) ) { $all_line_run_array[$row_info["PROD_ID"]] = array(); } if( !isset($all_line_run_array[$row_info["PROD_ID"]][$row_info["RUN_DATE"]]) ) { $all_line_run_array[$row_info["PROD_ID"]][$row_info["RUN_DATE"]] = array(); } if( !isset($all_line_run_array[$row_info["PROD_ID"]][$row_info["RUN_DATE"]][$row_info["RUN_MINUTES"]]) ) { $all_line_run_array[$row_info["PROD_ID"]][$row_info["RUN_DATE"]][$row_info["RUN_MINUTES"]] = array(); } $all_line_run_array[$row_info["PROD_ID"]][$row_info["RUN_DATE"]][$row_info["RUN_MINUTES"]][] = $row_info["RUN_ID"]; //对于结果集进行遍历,针对PROD和日期进行归纳并存储进run_return_array //run_return_array为三维数组 第一维是PROD_ID(去程) 第二维是日期(去程) 最终会存入两个返程的RUN_ID if( isset($return_prod_id[$row_info["PROD_ID"]]) ) { $re_prod_id_array = $return_prod_id[$row_info["PROD_ID"]]; foreach( $re_prod_id_array as $re_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"]}")); $come_date2 = date("Y-m-d", strtotime("{$row_info["RUN_DATE"]} -1 days")); $come_date3 = 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(); } if (!isset($run_return_array[$re_prod_id][$come_date3])) { $run_return_array[$re_prod_id][$come_date3] = array(); } if (isset($return_prod_time[$row_info["PROD_ID"]])) { $return_start_time = $return_prod_time[$row_info["PROD_ID"]]; if ($return_start_time == $row_info["RUN_TIME"]) { $run_return_array[$re_prod_id][$come_date1][] = $row_info["RUN_ID"]; $run_return_array[$re_prod_id][$come_date2][] = $row_info["RUN_ID"]; $run_return_array[$re_prod_id][$come_date3][] = $row_info["RUN_ID"]; } } else { $run_return_array[$re_prod_id][$come_date1][] = $row_info["RUN_ID"]; $run_return_array[$re_prod_id][$come_date2][] = $row_info["RUN_ID"]; $run_return_array[$re_prod_id][$come_date3][] = $row_info["RUN_ID"]; } } } } return $rowset; } function getDisneyLineArray( $pdo ) { $disney_line_array = array(); $sql2 = " SELECT LINE_ID,LINE_TYPE FROM opera_line WHERE LINE_TYPE = 256 AND CANCEL_FLAG = 0 "; $result=$pdo->query($sql2); if( false == $result ) { return $disney_line_array; } $result_array=$result->fetchAll(); $result->closeCursor(); foreach( $result_array as $disney_line_info ) { $disney_line_array[] = $disney_line_info["LINE_ID"]; } return $disney_line_array; } function getSellLineArray( $pdo, &$line_array, &$no_sell_array ) { $res_array = array(); $sql3 = " SELECT LINE_ID,LINE_NAME,CANCEL_FLAG,IF_DISABLED FROM opera_line WHERE LINE_TYPE IN (255,256) "; $result=$pdo->query($sql3); if( false == $result) { return $res_array; } $result_array=$result->fetchAll(); $result->closeCursor(); $line_array = array(); foreach( $result_array as $res_info ) { if( $res_info["CANCEL_FLAG"] == 1 || $res_info["IF_DISABLED"] == 1 ) { $no_sell_array[] = $res_info["LINE_ID"]; } else { $res_array[] = $res_info["LINE_ID"]; $line_array[$res_info["LINE_ID"]] = $res_info; } } return $res_array; } function getBaseResourceArray( $pdo ) { $res_array = array(); $sql3 = " SELECT * FROM base_resource WHERE RES_TYPE_ID=24 "; $result=$pdo->query($sql3); if( false == $result) { return $res_array; } $result_array=$result->fetchAll(); $result->closeCursor(); foreach( $result_array as $res_info ) { $res_array[$res_info["RES_ID"]] = $res_info; } return $res_array; } function getBaseResourcePropertyArray( $pdo ) { $res_array = array(); $sql3 = " SELECT res_id,type_id,property FROM base_resource_property WHERE type_id IN (212,213,279) "; $result=$pdo->query($sql3); if( false == $result) { return $res_array; } $result_array=$result->fetchAll(); $result->closeCursor(); foreach( $result_array as $res_info ) { $res_index = $res_info["res_id"]; if( !isset($res_array[$res_index]) ) { $res_array[$res_index] = array(); } $res_array[$res_index][$res_info["type_id"]] = $res_info["property"]; } return $res_array; } function getBaseAreaArray($pdo) { $city_array = array(); $sql4 = " SELECT * FROM base_area WHERE CANCEL_FLAG=0 "; $result=$pdo->query($sql4); if( false == $result ) { return $city_array; } $result_array=$result->fetchAll(); $result->closeCursor(); foreach( $result_array as $city_info ) { $city_array[$city_info["ID"]] = $city_info; } return $city_array; } function getRunBusArray( $pdo, $run_id_array ) { $run_bus_array = array(); $sql5 = " SELECT * FROM run_bus WHERE RUN_ID IN(".implode(",",$run_id_array).") AND CANCEL_FLAG = 0 AND RUN_BUS_STATUS IN (138) "; $result=$pdo->query($sql5); if( false == $result ) { return $run_bus_array; } $result_array=$result->fetchAll(); $result->closeCursor(); //将所有班次的车次信息按照班次进行归类 存入$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; } return $run_bus_array; } function getTicketDetailArray( $prod_id_array,$no_sell_array, $pdo,&$prod_tickets_array, &$prod_tickets_id_array, &$bothway_tickets_id_array, &$prod_price_array, &$start_end_array, &$res_start_reach_array ) { $sql6 = " SELECT * FROM opera_tickets WHERE LINE_ID IN(".implode(",",$prod_id_array).") AND TICKET_ID NOT IN (".implode(",",$no_sell_array).") AND CANCEL_FLAG = 0 "; $result=$pdo->query($sql6); if( false == $result ) { return false; } $result_array=$result->fetchAll(); $result->closeCursor(); $prod_tickets_array = array(); $prod_tickets_id_array = array(); $bothway_tickets_id_array = array(); $prod_price_array = array(); $start_end_array = array(); $res_start_reach_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["TICKET_ID"]] = $prod_tickets_info; $prod_tickets_id_array[] = $prod_tickets_info["TICKET_ID"]; if( mb_strpos($prod_tickets_info["TICKET_NAME"],"往返") ) { $bothway_tickets_id_array[] = $prod_tickets_info["TICKET_ID"]; } if( !isset($prod_price_array[$prod_tickets_info["LINE_ID"]]) ) { $prod_price_array[$prod_tickets_info["LINE_ID"]] = array(); } $prod_price_array[$prod_tickets_info["LINE_ID"]][$prod_tickets_info["TICKET_ID"]] = $prod_tickets_info; $start_end_array[$prod_tickets_info["TICKET_ID"]] = $prod_tickets_info; if( !isset($res_start_reach_array[$prod_tickets_info["START_STATION_RES_ID"]]) ) $res_start_reach_array[$prod_tickets_info["START_STATION_RES_ID"]] = array(); if( !isset($res_start_reach_array[$prod_tickets_info["START_STATION_RES_ID"]][$prod_tickets_info["END_STATION_RES_ID"]]) ) $res_start_reach_array[$prod_tickets_info["START_STATION_RES_ID"]][$prod_tickets_info["END_STATION_RES_ID"]] = array(); if( in_array($prod_tickets_info["TICKET_ID"], $bothway_tickets_id_array)) $res_start_reach_array[$prod_tickets_info["START_STATION_RES_ID"]][$prod_tickets_info["END_STATION_RES_ID"]][$prod_tickets_info["LINE_ID"]] = $prod_tickets_info["TICKET_ID"]; } return true; } function getTicketDetailArray2( $prod_id_array,$no_sell_array, $pdo,&$prod_tickets_array, &$prod_tickets_id_array, &$bothway_tickets_id_array, &$prod_price_array, &$start_end_array, &$res_start_reach_array ) { $sql6 = " SELECT * FROM opera_tickets WHERE LINE_ID IN(".implode(",",$prod_id_array).") AND TICKET_ID NOT IN (".implode(",",$no_sell_array).") AND CANCEL_FLAG = 0 "; $result=$pdo->query($sql6); if( false == $result ) { return false; } $result_array=$result->fetchAll(); $result->closeCursor(); $prod_tickets_array = array(); $prod_tickets_id_array = array(); $bothway_tickets_id_array = array(); $prod_price_array = array(); $start_end_array = array(); $res_start_reach_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["TICKET_ID"]] = $prod_tickets_info; $prod_tickets_id_array[] = $prod_tickets_info["TICKET_ID"]; if( mb_strpos($prod_tickets_info["TICKET_NAME"],"往返") === false ) { $bothway_tickets_id_array[] = $prod_tickets_info["TICKET_ID"]; } if( !isset($prod_price_array[$prod_tickets_info["LINE_ID"]]) ) { $prod_price_array[$prod_tickets_info["LINE_ID"]] = array(); } $prod_price_array[$prod_tickets_info["LINE_ID"]][$prod_tickets_info["TICKET_ID"]] = $prod_tickets_info; $start_end_array[$prod_tickets_info["TICKET_ID"]] = $prod_tickets_info; if( !isset($res_start_reach_array[$prod_tickets_info["START_STATION_RES_ID"]]) ) $res_start_reach_array[$prod_tickets_info["START_STATION_RES_ID"]] = array(); if( !isset($res_start_reach_array[$prod_tickets_info["START_STATION_RES_ID"]][$prod_tickets_info["END_STATION_RES_ID"]]) ) $res_start_reach_array[$prod_tickets_info["START_STATION_RES_ID"]][$prod_tickets_info["END_STATION_RES_ID"]] = array(); if( in_array($prod_tickets_info["TICKET_ID"], $bothway_tickets_id_array)) $res_start_reach_array[$prod_tickets_info["START_STATION_RES_ID"]][$prod_tickets_info["END_STATION_RES_ID"]][$prod_tickets_info["LINE_ID"]] = $prod_tickets_info["TICKET_ID"]; } return true; } function getOrgTicketsArray( $pdo, $from_org_id, $prod_tickets_id_array ) { $org_tickets_array = array(); $sql = " SELECT TICKET_ID,SUPPLIER_ID,PROD_PRICE,AUTHORITY_STATUS FROM opera_tickets_distrib WHERE SUPPLIER_ID={$from_org_id} AND CANCEL_FLAG=0 "; if( $prod_tickets_id_array != false ) { $sql .= " AND TICKET_ID IN(".implode( ",", $prod_tickets_id_array ).") "; } $result=$pdo->query($sql); if( false == $result ) { return $org_tickets_array; } $result_array=$result->fetchAll(); $result->closeCursor(); foreach( $result_array as $result_info ) { if( !isset($org_tickets_array[$result_info["TICKET_ID"]]) ) { $org_tickets_array[$result_info["TICKET_ID"]] = $result_info; } } return $org_tickets_array; } function getOrgTicketsAgentArray( $pdo, $from_org_id, $prod_tickets_id_array ) { $org_tickets_array = array(); $sql = " SELECT TICKET_ID,PROD_PRICE,AUTHORITY_STATUS,IS_ONSALE FROM opera_tickets_agent WHERE TO_MAIN_CORP_ID={$from_org_id} AND CANCEL_FLAG=0 "; if( $prod_tickets_id_array != false ) { $sql .= " AND TICKET_ID IN(".implode( ",", $prod_tickets_id_array ).") "; } $result=$pdo->query($sql); if( false == $result ) { return $org_tickets_array; } $result_array=$result->fetchAll(); $result->closeCursor(); foreach( $result_array as $result_info ) { if( !isset($org_tickets_array[$result_info["TICKET_ID"]]) ) { $org_tickets_array[$result_info["TICKET_ID"]] = $result_info; } } return $org_tickets_array; } // function getOrgTicketsDiscountArray( $pdo, $from_org_id, $prod_tickets_id_array ) { $org_ticket_discount_array = array(); $sql = " SELECT TICKET_ID,OFF_VALUE,SUPPLIER_ID FROM opera_tickets_discount WHERE SUPPLIER_ID IN ( {$from_org_id}, 164 ) AND DISCOUNT_TYPE=332 AND TICKET_ID IN (".implode( ",", $prod_tickets_id_array ).") AND CANCEL_FLAG=0"; $result=$pdo->query($sql); if( false == $result ) { return $org_ticket_discount_array; } $result_array=$result->fetchAll(); $result->closeCursor(); foreach( $result_array as $result_info ) { if( $result_info["SUPPLIER_ID"] == $from_org_id || !isset($org_ticket_discount_array[$result_info["TICKET_ID"]]) ) { $org_ticket_discount_array[$result_info["TICKET_ID"]] = $result_info; } } return $org_ticket_discount_array; } function getRunProdArray( $run_id_array, $pdo ) { $run_prod_array = array(); $sql7 = " SELECT * FROM run_prod WHERE RUN_ID IN(".implode(",",$run_id_array).") AND CANCEL_FLAG = 0 "; $result=$pdo->query($sql7); if( false == $result ) { return $run_prod_array; } $result_array=$result->fetchAll(); $result->closeCursor(); foreach( $result_array as $run_prod_info ) { if( !isset($run_prod_array[$run_prod_info["RUN_ID"]]) ) { $run_prod_array[$run_prod_info["RUN_ID"]] = array(); } $run_prod_array[$run_prod_info["RUN_ID"]][] = $run_prod_info; } return $run_prod_array; } function getRunStockArray( $run_id_array , $pdo, &$run_stock_array ) { $run_stock_array = array(); $sql = " SELECT RUN_ID,RES_ID,TOTAL_COUNT,SALED_COUNT FROM run_stock WHERE RUN_ID IN (".implode( ",", $run_id_array).") and SEAT_TYPE = 72 AND CANCEL_FLAG = 0 "; $result=$pdo->query($sql); if( false == $result ) { return false; } $result_array=$result->fetchAll(); $result->closeCursor(); foreach( $result_array as $run_stock_info ) { $run_stock_index = $run_stock_info["RUN_ID"]."_".$run_stock_info["RES_ID"]; $sold_stock = $run_stock_info["TOTAL_COUNT"] - $run_stock_info["SALED_COUNT"] - 3; $run_stock_array[$run_stock_index] = $sold_stock > 0 ? $sold_stock : 0; } return true; } function getRunStockArray2( $run_id_array , $pdo, &$run_stock_array ) { $run_stock_array = array(); $sql = "SELECT rs.RUN_ID,rs.RES_ID,rs.SEQ_ID,rs.TOTAL_COUNT,rs.SALED_COUNT, rs2.STATION_INOUT_TYPE FROM run_stock as rs left join run_station as rs2 on rs.RUN_ID = rs2.RUN_ID AND rs.RES_ID = rs2.STATION_RES_ID WHERE rs.RUN_ID IN (".implode( ",", $run_id_array).") and rs.SEAT_TYPE = 72 AND rs.CANCEL_FLAG = 0 "; $result=$pdo->query($sql); if( false == $result ) { return false; } $result_array=$result->fetchAll(); if( $result_array == false ) { return false; } $result->closeCursor(); $run_stock_all = array(); foreach( $result_array as $run_stock_info ) { if( !isset($run_stock_all[$run_stock_info["RUN_ID"]]) ) { $run_stock_all[$run_stock_info["RUN_ID"]] = array(); } $run_stock_all[$run_stock_info["RUN_ID"]][$run_stock_info["SEQ_ID"]] = $run_stock_info; } foreach( $run_stock_all as $run_id => $run_stock_tmp ) { $run_stock_tmp2 = $run_stock_tmp; foreach( $run_stock_tmp as $seq_index => $run_stock_start ) { $remain_count_start = $run_stock_tmp2[$seq_index]["TOTAL_COUNT"] - $run_stock_tmp2[$seq_index]["SALED_COUNT"] - 3; $remain_count_start = $remain_count_start > 0 ? $remain_count_start : 0; if( $run_stock_tmp2[$seq_index]["STATION_INOUT_TYPE"] == 114 ) { $remain_count_start = 0; } $remain_count_min = $remain_count_start; $end_seq_index = $seq_index + 1; while( isset($run_stock_tmp2[$end_seq_index]) ) { $remain_count_tmp = $run_stock_tmp2[$end_seq_index-1]["TOTAL_COUNT"] - $run_stock_tmp2[$end_seq_index-1]["SALED_COUNT"] - 3; $remain_count_tmp = $remain_count_tmp > 0 ? $remain_count_tmp : 0; $remain_count_min = $remain_count_min > $remain_count_tmp ? $remain_count_tmp : $remain_count_min; $run_stock_array[$run_id."_".$run_stock_tmp2[$seq_index]["RES_ID"]."_".$run_stock_tmp2[$end_seq_index]["RES_ID"]] = $remain_count_min; //test if( $run_stock_tmp2[$end_seq_index]["STATION_INOUT_TYPE"] == 114 ) { $run_stock_array[$run_id."_".$run_stock_tmp2[$seq_index]["RES_ID"]."_".$run_stock_tmp2[$end_seq_index]["RES_ID"]] = 0; } //e $end_seq_index++; } } } return true; } function getRunStationArray( $run_id_array, $pdo, &$run_station_array, &$res_start_time_array ) { $sql8 = " SELECT * FROM run_station WHERE RUN_ID IN (".implode( ",", $run_id_array).") "; $result=$pdo->query($sql8); if( false == $result ) { return false; } $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"]; } } } return true; } function getCompainLineArray( $pdo, $search_date, $from_org_id, &$compain_line_array, &$compain_summary_array ) { $sql = " SELECT e.compain_id, r.start_date,r.end_date, r.run_start,r.run_end, e.line_id,r.compain_type,r.compain_param,r.compain_max_ticket,r.compain_tag FROM opera_compain_rule as r, opera_compain_entry as e ". " WHERE r.to_org_id={$from_org_id} AND r.start_date <= '{$search_date}' AND r.end_date >= '{$search_date}' AND e.cancel_flag = 0 AND r.id=e.compain_id AND r.cancel_flag = 0 "; $result=$pdo->query($sql); if( false == $result ) { return false; } $compain_summary_array = array(); $compain_line_array = array(); $line_id_array = array(); $compain_id_array = array(); $result_array=$result->fetchAll(); $result->closeCursor(); foreach( $result_array as $compain_info ) { $compain_line_array[$compain_info["line_id"]] = $compain_info; $line_id_array[] = $compain_info["line_id"]; $compain_id_array[] = $compain_info["compain_id"]; } $sql = " SELECT compain_id,line_id,run_id,compain_price,compain_max,compain_saled,create_time FROM opera_compain_summary WHERE compain_id IN(".implode(",", $compain_id_array).") AND line_id IN(".implode(",", $line_id_array).") "; $result=$pdo->query($sql); if( false == $result ) { return true; } $result_array=$result->fetchAll(); $result->closeCursor(); foreach( $result_array as $summary_info ) { $compain_summary_array[$summary_info["run_id"]] = $summary_info; } return true; } function setSellPriceFromCompain( $tickets_info, $run_info, $pdo, $compain_line_array, &$compain_summary_array, &$compain_tickets_max, &$compain_tag ) { if( false == $compain_line_array || count($compain_line_array) <= 0 || !isset($compain_line_array[$run_info["PROD_ID"]]) ) { return $tickets_info["CUS_PRICE"]; } $compain_line_info = $compain_line_array[$run_info["PROD_ID"]]; if( $compain_line_info["run_start"] > $run_info["RUN_DATE"] || $compain_line_info["run_end"] < $run_info["RUN_DATE"] ) { return $tickets_info["CUS_PRICE"]; } $compain_id = $compain_line_info["compain_id"]; $line_id = $compain_line_info["line_id"]; $run_id = $run_info["RUN_ID"]; $compain_type = $compain_line_info["compain_type"]; $compain_param = $compain_line_info["compain_param"]; $org_price = $tickets_info["CUS_PRICE"]; $compain_price = getCompainPrice( $compain_type, $compain_param, $org_price ); $compain_max = $compain_line_info["compain_max_ticket"]; $compain_tag = $compain_line_info["compain_tag"]; $compain_saled = 0; $create_time = date("Y-m-d H:i:s"); if(!isset($compain_summary_array[$run_info["RUN_ID"]]) ) { $compain_summary_info = updateCompainSummaryInfo( $compain_id, $line_id, $run_id, $compain_price, $compain_max, $compain_saled, $create_time, $create_time, $pdo ); $compain_summary_array[$run_info["RUN_ID"]] = $compain_summary_info; return $compain_price; } $compain_summary_info = $compain_summary_array[$run_info["RUN_ID"]]; $compain_tickets_max = $compain_summary_info["compain_max"]; if( $compain_summary_info["compain_max"] > $compain_summary_info["compain_saled"] ) { return $compain_price; } else { return $org_price; } } function updateCompainSummaryInfo( $compain_id, $line_id, $run_id, $compain_price, $compain_max, $compain_saled, $create_time, $last_update, $pdo ) { $sql_insert = " INSERT INTO opera_compain_summary (compain_id,line_id,run_id,compain_price,compain_max,compain_saled,create_time,last_update) ". " VALUES ( {$compain_id}, {$line_id}, {$run_id}, {$compain_price}, {$compain_max}, {$compain_saled}, '{$create_time}', '{$last_update}' ) ". " ON DUPLICATE KEY UPDATE compain_saled=compain_saled+{$compain_saled}, last_update='{$last_update}' "; $pdo->exec($sql_insert); if( $compain_saled == 0 ) { return array( 'compain_id' => $compain_id, 'line_id' => $line_id, 'run_id' => $run_id, 'compain_price' => $compain_price, 'compain_max' => $compain_max, 'compain_saled' => $compain_saled, 'create_time' => $create_time, 'last_update' => $last_update ); } return true; } function getCompainPrice( $compain_type, $compain_param, $org_price ) { switch( $compain_type ) { case 1://立减 $return_price = $org_price - $compain_param; break; case 2://折扣 $return_price = $org_price * $compain_param / 100; break; case 3://降至 $return_price = $org_price > $compain_param ? $compain_param : $org_price; break; default: $return_price = $org_price; break; } $return_price = $return_price > 0 ? $return_price : 0; return $return_price; } function autoUpdateCompainSummary( $line_id, $run_id, $from_org_id, $search_date, $ticket_num, $pdo ) { $sql = " SELECT s.compain_id, s.line_id, s.run_id, s.compain_price, s.compain_max, s.compain_saled ". " FROM opera_compain_summary as s, opera_compain_rule as r". " WHERE s.line_id={$line_id} AND s.run_id={$run_id} AND s.compain_max>s.compain_saled AND r.id=s.compain_id AND r.to_org_id={$from_org_id} AND r.start_date <= '{$search_date}' AND r.end_date >= '{$search_date}' AND r.cancel_flag=0 "; $result=$pdo->query($sql); if( false == $result ) { return true; } $result_array = $result->fetchAll(); $result->closeCursor(); if( false == $result_array ) { return true; } $compain_summary_info = $result_array[0]; $compain_id = $compain_summary_info["compain_id"]; $line_id = $compain_summary_info["line_id"]; $run_id = $compain_summary_info["run_id"]; $compain_price = $compain_summary_info["compain_price"]; $compain_max = $compain_summary_info["compain_max"]; $create_time = date("Y-m-d H:i:s"); updateCompainSummaryInfo( $compain_id, $line_id, $run_id, $compain_price, $compain_max, $ticket_num, $create_time, $create_time, $pdo ); } function setRunInfoNoTicket( $base_info ) { $return_info = $base_info; $return_info["total_count"] = 0; $return_info["saled_count"] = 0; $return_info["remain_count"] = 0; return $return_info; } function getTicketsDiscountArray( $pdo, $from_org_id, $extra_sql = false ) { $sql = " SELECT ticket_id, supplier_id, off_value FROM opera_tickets_discount WHERE discount_type=332 AND supplier_id IN (164,{$from_org_id}) AND is_onsale=1 AND cancel_flag = 0 "; if( $extra_sql != false ) { $sql .= " AND ".$extra_sql; } $result=$pdo->query($sql); if( false == $result ) { return array(); } $result_array = $result->fetchAll(); $result->closeCursor(); if( false == $result_array ) { return array(); } $return_array = array(); foreach( $result_array as $result_info ) { if( !isset($return_array[$result_info["ticket_id"]]) ) { $return_array[$result_info["ticket_id"]] = $result_info; } else if( $result_info["supplier_id"] != 164 ) { $return_array[$result_info["ticket_id"]] = $result_info; } } return $return_array; } function getCombiedLineProd( $pdo ) { $sql = " SELECT id,prod_name,all_price,prod_type_list,prod_id_list,prod_time_list,prod_price_list FROM opera_line_combined_rule WHERE cancel_flag=0"; $result=$pdo->query($sql); if( false == $result ) { return false; } $result_array = $result->fetchAll(); $result->closeCursor(); if( false == $result_array ) { return false; } $return_array = array(); foreach( $result_array as $combied_info ) { $combied_line_txt = $combied_info["prod_id_list"]; $combied_line_array = explode("_", $combied_line_txt); $combied_time_txt = $combied_info["prod_time_list"]; $combied_time_array = explode("_", $combied_time_txt); $combied_price_txt = $combied_info["prod_price_list"]; $combied_price_array = explode("_", $combied_price_txt); if( !isset($return_array[$combied_line_array[0]]) ) { $return_array[$combied_line_array[0]] = array(); } if( !isset($return_array[$combied_line_array[0]][$combied_time_array[0]]) ) { $return_array[$combied_line_array[0]][$combied_time_array[0]] = array(); } $combied_info_tmp = array(); $combied_info_tmp["all_price"] = $combied_info["all_price"]; $combied_info_tmp["line_id1"] = $combied_line_array[0]; $combied_info_tmp["start_minutes1"] = $combied_time_array[0]; $combied_info_tmp["line_id2"] = $combied_line_array[1]; $combied_info_tmp["start_minutes2"] = $combied_time_array[1]; $combied_info_tmp["price1"] = $combied_price_array[0]; $combied_info_tmp["price2"] = $combied_price_array[1]; $return_array[$combied_line_array[0]][$combied_time_array[0]][] = $combied_info_tmp; } return $return_array; } function insert_combined_data( $combied_line_array, $all_run_array, $all_line_run_array, $run_prod_array, $start_end_array, $run_bus_array, $res_start_time_array, $city_array, $res_array, $row_info, $base_info, $tickets_info, &$combined_array ) { $combied_rule_array = $combied_line_array[$row_info["PROD_ID"]][$row_info["RUN_MINUTES"]]; foreach( $combied_rule_array as $combied_rule_info ) { $second_line_id = $combied_rule_info["line_id2"]; $second_start_minutes = $combied_rule_info["start_minutes2"]; $combied_full_price = $combied_rule_info["all_price"]; if( !isset($all_line_run_array[$second_line_id][$row_info["RUN_DATE"]][$second_start_minutes]) ) { continue; } $second_run_id_array = $all_line_run_array[$second_line_id][$row_info["RUN_DATE"]][$second_start_minutes]; insert_base_data_from_run_info( $second_run_id_array, $base_info, $row_info, $all_run_array, $run_bus_array, $run_prod_array, $tickets_info, $combied_full_price, $start_end_array, $city_array, $res_array, $res_start_time_array, $combined_array); } } function insert_base_data_from_run_info( $second_run_id_array, $base_info, $row_info, $all_run_array, $run_bus_array, $run_prod_array, $tickets_info, $combied_full_price, $start_end_array, $city_array, $res_array, $res_start_time_array, &$combined_array) { foreach( $second_run_id_array as $second_run_id ) { $sencond_run_info = $all_run_array[$second_run_id]; if( $sencond_run_info["RUN_STATUS"] != 138 || $sencond_run_info["RUN_DATE"] < $row_info["RUN_DATE"] || !isset($run_bus_array[$second_run_id])) { continue; } $total_count_b = 0; $saled_count_b = 0; foreach ( $run_bus_array[$second_run_id] as $run_bus_info) { $total_count_b += $run_bus_info["SEAT_COUNT"]; $saled_count_b += $run_bus_info["SALED_COUNT"]; } $remain_count_b = $total_count_b > ($saled_count_b + 3) ? $total_count_b - ($saled_count_b + 3) : 0; $remain_count_b = $remain_count_b > $base_info["remain_count"] ? $base_info["remain_count"] : $remain_count_b; $second_tickets_array = $run_prod_array[$second_run_id]; foreach( $second_tickets_array as $second_tickets_info ) { $combined_base_info = create_combined_base_info( $second_tickets_info, $base_info, $row_info, $tickets_info, $second_run_id, $combied_full_price, $start_end_array, $city_array, $res_array, $res_start_time_array, $remain_count_b ); if( $combined_base_info != false ) { $combined_array[] = $combined_base_info; } } } } function create_combined_base_info( $second_tickets_info, $base_info, $row_info, $tickets_info, $second_run_id, $combied_full_price, $start_end_array, $city_array, $res_array, $res_start_time_array, $remain_count_b ) { $second_tickets_id = $second_tickets_info["PROD_ID"]; $combined_base_info = $base_info; $combined_base_info["run_code"] = $row_info["RUN_ID"] . "_" . $tickets_info["TICKET_ID"] . "_" . $second_run_id . "_" . $second_tickets_id; $combined_base_info["run_codeX"] = base_convert($row_info["RUN_ID"],10,36) . "_" . base_convert($tickets_info["TICKET_ID"],10,36) . "_" . base_convert($second_run_id,10,36) . "_" . base_convert($second_tickets_id,10,36); $combined_base_info["full_price"] = $combied_full_price; $combined_base_info["remain_count"] = $remain_count_b; $combined_base_info["saled_count"] = $combined_base_info["total_count"] - $combined_base_info["remain_count"]; $combined_base_info["bus_no"] = "以实际情况为准1"; $start_end_info2 = $start_end_array[$second_tickets_id]; if( $base_info["end_res"] != $res_array[$start_end_info2["START_STATION_RES_ID"]]["RES_NAME"] ) { return false; } $combined_base_info["end_city"] = $city_array[$start_end_info2["END_STATION_AREA_ID"]]["AREA_NAME"]; $combined_base_info["end_res"] = $res_array[$start_end_info2["END_STATION_RES_ID"]]["RES_NAME"]; $combined_base_info["end_time"] = $res_start_time_array[$second_run_id][$start_end_info2["END_STATION_RES_ID"]]; if( !isset($combined_base_info["end_date"]) ) { $combined_base_info["end_date"] = $combined_base_info["start_date"]; } $cost_time = strtotime($combined_base_info["end_date"] ." ".$combined_base_info["end_time"] ) - strtotime($combined_base_info["start_date"] ." ".$combined_base_info["start_time"] ); $combined_base_info["cost_time"] = ceil($cost_time/60); $combined_base_info["disp_run_code"] = "ZZ".$tickets_info["TICKET_ID"].substr($row_info["RUN_ID"],3,3)."C".$second_tickets_id; $combined_base_info["extra_description"] = "抵达".$base_info["end_res"]."后零距离换乘"; $combined_base_info["compain_tag"] = "需转驳"; $combined_base_info["compain_detail"] = "抵达".$base_info["end_res"]."后零距离换乘"; $combined_base_info["description"] = ""; return $combined_base_info; }