|
- <?php
-
- function getRunMainArray( $sell_line_array, $start_date, $search_end_date, $pdo, $return_prod_id, $return_prod_time, &$run_id_array, &$prod_id_array, &$all_run_array, &$run_return_array, &$all_line_run_array ) {
- $sql2 = " SELECT * FROM run_main WHERE PROD_ID IN (".implode(",",$sell_line_array).") AND RUN_STATUS IN (138) AND RUN_DATE >= '".$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;
- }
-
|