request; $action = $request->post('action'); $func = 'action'; $action = explode('_', $action); foreach ($action as $key => $vel) { $func .= ucfirst($vel); } //check 验证码 if ($this->actionCheckAuthCode() == false) { $json = ['code' => 1, 'info' => '验证身份失败']; return json_encode($json); } if ($action === false || method_exists($this, $func) == false) { $json = ['code' => 1, 'info' => '必要参数缺失']; return json_encode($json); } return $this->$func(); } /** * Function Description:验证验证码 * Function Name: actionCheckAuthCode * * @return string * * @author Redstop */ public function actionCheckAuthCode() { $user = Yii::$app->request->post('user');//用户名 $user_key = Yii::$app->request->post('user_key');//用户key $request_time = Yii::$app->request->post('request_time');//用户key $auth_code = Yii::$app->request->post('auth_code');//用户key //加密规则为 request_time(linux时间戳)前三位作为种子,调用srand生成随机数 + user + user_key,进行MD5加密后,换成大写字母 $real_auth_code = strtoupper(md5(substr($request_time, 0, 3) . "|" . $user . "|" . $user_key . "|" . substr($request_time, strlen($request_time) - 3, 3))); if ($real_auth_code == $auth_code) { return true; } return false; } /** * Function Description:获取今后三个月的可售票种信息 * Function Name: actionGetTicketArray * * * @return string * * @author Redstop */ public function actionGetTicketArray() { $opera_ticket = new OperaTickets(); $opera_ticket_distrib = new OperaTicketsDistrib(); $opera_ticket_agent = new OperaTicketsAgent(); $run_prod = new RunProd(); $run_main = new RunMain(); #region 获取参数 $user_id = Yii::$app->request->post('user_id','772');//用户id #endregion $start_date = date("Y-m-d");//开始日期 $end_date = date("Y-m-d", strtotime("+3 months"));//结束日期 //1.从run_main中取得今后三个月可出售的班次,然后获取相关票种(单程),并将包含上下车站点及POI的票种信息返回 $run_id_arr = $run_main->getRunListByDate($start_date, $end_date); //2.从run_prod中获取所有的票种id $ticket_id_arr = $run_prod->getTicketIdListByRunId($run_id_arr); //3.从opera_ticket_distrib中获取所有例外的票种id $ticket_id_arr2 = $opera_ticket_distrib->getUnsellTicketListByUserId($user_id); //4.从opera_ticket_agent中获取所有可售线路id $ticket_id_arr3 = $opera_ticket_agent->getTicketListByUserId($user_id); // $ticket_id_arr2 = false; // $ticket_id_arr3 = false; //5.获取票种详情列表 $ticket_list_info = $opera_ticket->getTicketListByTicketId($ticket_id_arr, $user_id, $ticket_id_arr2, $ticket_id_arr3 ); $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $ticket_list_info]; return json_encode($json); } /** * Function Description:通过出发日期和票种id获取班次数据 * Function Name: actionGetRunArray * * * @author 张帅 */ public function actionGetRunArray() { $run_main = new RunMain(); #region 获取参数 $run_date = Yii::$app->request->post('run_date');//出发日期 $ticket_id = Yii::$app->request->post('ticket_id');//票种id #endregion $run_list = $run_main->getRunListByDateTicket($run_date, $ticket_id); $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $run_list]; return json_encode($json); } /** * Function Description:通过出发日期和线路id获取可售票种信息 * Function Name: actionGetRunTicketArrayByDateLine * * @return string * * @author 张帅 */ public function actionGetRunTicketArrayByDateLine() { $run_main = new RunMain(); $run_stock = new RunStock(); #region 获取参数 $run_date = Yii::$app->request->post('run_date');//出发日期 $line_id = Yii::$app->request->post('line_id');//线路id #endregion #region 1.从run_prod中获取所有的票种id $run_ticket_arr = $run_main->getRunTicketIdListByRunId($run_date, $line_id); if (count($run_ticket_arr) == 0) { $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $run_ticket_arr]; return json_encode($json); } #endregion #new 3.需要新增站点时间 关联run_station $run_station_time = $run_main->getStationStartTime($run_ticket_arr); if (count($run_station_time)==0){ $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $run_ticket_arr]; return json_encode($json); } #region 2.获取票种库存 $run_id_arr = []; $run_date_arr = []; foreach ($run_ticket_arr as $key => $vel) { if (!isset($run_id_arr['run_id'])) { $run_id_arr[$vel['run_id']] = $vel['run_id']; } } $stock_list = $run_stock->getStockListByRunId($run_id_arr); #endregion #region 3.处理数据 $stock_list = $run_stock->execRunTicketArray($run_ticket_arr, $stock_list,$run_station_time); #endregion $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $stock_list]; return json_encode($json); } /** * Function Description:通过出发日期和出发地目的地获取可售票种信息 * Function Name: actionGetRunTicketArrayByDateLine * * @return string * * @author 张帅 */ public function actionGetRunTicketArrayByDateArea() { $run_main = new RunMain(); $run_stock = new RunStock(); #region 获取参数 $run_date = Yii::$app->request->post('run_date','');//出发日期 $start_area = Yii::$app->request->post('start_area_id','');//出发站点 $end_area = Yii::$app->request->post('end_area_id','');//结束战斗 $user_id = Yii::$app->request->post('user_id','');//用户ID $supplier_id = Yii::$app->request->post('org_id','164');//渠道来源编号 #endregion #region 1.从run_prod中获取所有的票种id $run_ticket_arr = $run_main->getRunTicketIdListByArea($run_date, $start_area, $end_area,$supplier_id,$user_id); if (count($run_ticket_arr) == 0) { $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $run_ticket_arr]; return json_encode($json); } #endregion #new 3.需要新增站点时间 关联run_station $run_station_time = $run_main->getStationStartTime($run_ticket_arr); if (count($run_station_time)==0){ $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $run_ticket_arr]; return json_encode($json); } #region 2.获取票种库存 $run_id_arr = []; foreach ($run_ticket_arr as $key => $vel) { if (!isset($run_id_arr['run_id'])) { $run_id_arr[$vel['run_id']] = $vel['run_id']; } } $stock_list = $run_stock->getStockListByRunId($run_id_arr); #endregion #region 3.处理数据 $stock_list = $run_stock->execRunTicketArray($run_ticket_arr, $stock_list,$run_station_time); #endregion $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $stock_list]; return json_encode($json); } /** * Function Description:通过票种ID获取未来三个月内可售票种日期 * Function Name: actionGetTicketAvailableDateArray * * @return string * * @author 邱颂 */ public function actionGetTicketAvailableDateArray() { $run_main = new RunMain(); #region 获取参数 $ticket_id = Yii::$app->request->post('ticket_id');//票种id #endregion $start_date = date("Y-m-d"); $end_date = date("Y-m-d", strtotime("+3 months")); $run_list = $run_main->getRunListBySnEDateTicket($start_date, $end_date, $ticket_id); $date_array = array(); foreach ( $run_list as $run_info ){ $date_array[] = $run_info["start_date"]; } //数组去重且排序---2017-09-26 lmn $date_array=array_unique($date_array); sort($date_array); $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $date_array]; return json_encode($json); } /** * Function Description:通过出发地POI和目的地POI获取未来三个月内可售票种日期 * Function Name: actionGetAreaAvailableDateArray * * @return string * * @author 邱颂 */ public function actionGetAreaAvailableDateArray() { $run_main = new RunMain(); $run_stock = new RunStock(); #region 获取参数 $line_id = Yii::$app->request->post('line_id', 0);//线路id $start_area = Yii::$app->request->post('start_area_id', 0);//线路id $end_area = Yii::$app->request->post('end_area_id', 0);//线路id #endregion #region 1.从run_prod中获取所有的票种id $start_date = date("Y-m-d"); $end_date = date("Y-m-d", strtotime("+3 months")); $run_ticket_arr = $run_main->getRunTicketIdListByAreaNDate($start_date, $end_date, $start_area, $end_area, $line_id); if (count($run_ticket_arr) == 0) { $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $run_ticket_arr]; return json_encode($json); } #endregion #region 2.获取票种库存 $run_id_arr = []; $run_date_arr = []; foreach ($run_ticket_arr as $key => $vel) { if (!isset($run_id_arr['run_id'])) { $run_id_arr[$vel['run_id']] = $vel['run_id']; } if (!isset($run_date_arr['run_id'])) { $run_date_arr[$vel['run_id']] = $vel['run_date']; } } $stock_list = $run_stock->getStockListByRunId($run_id_arr); #endregion $return_date = array(); foreach( $stock_list as $stock_info ) { if( ($stock_info["total_count"] - $stock_info["saled_count"]) > 3 ) { if( !in_array($run_date_arr[$stock_info["run_id"]], $return_date ) ) { $return_date[] = $run_date_arr[$stock_info["run_id"]]; } } } sort($return_date); $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $return_date]; return json_encode($json); } /** * Function Description:根据起始poi终点poi 和日期获取 当天可用线路及班次出发时间 * Function Name: actionGetRunLineByPoi * * @return string * * @author 娄梦宁 */ public function actionGetRunLineByPoi(){ #region 获取参数 $start_poi = Yii::$app->request->post('start_poi', 0);//起始站点poi $end_poi = Yii::$app->request->post('end_poi', 0);//终点站点poi $date = Yii::$app->request->post('date', 0);//出发日期 #endregion $run_main = new RunMain(); #region 1.从run_prod中获取所有的票种id $run_line_arr = $run_main->getRunLineByArea($date, $start_poi, $end_poi); $json = ['code' => 0, 'info' => '获取数据成功', 'data' => $run_line_arr]; return json_encode($json); #endregion } /***************************************************************************************/ /* 门票接口(迪士尼和狮子王专用) */ /* */ /***************************************************************************************/ /** * Function Description:获取指定门票最低价格日历表 * Function Name: actionCheckAuthCode * * @return string * * @author Redstop */ public function actionGateTicketMiniValue() { #region 获取参数 $ticket_code = Yii::$app->request->post('sign'); #endregion $outside_ticket = new OutsideTicket(); $return_array = $outside_ticket->getTicketMiniValueRun($ticket_code); $json = ['code' => 0, 'info' => '获取数据成功', 'list' => $return_array]; return json_encode($json); } /** * Function Description:获取指定门票制定日期价格 * Function Name: actionCheckAuthCode * * @return string * * @author Redstop */ public function actionGateTicketDateRun() { #region 获取参数 $ticket_code = Yii::$app->request->post('sign'); $ticket_date = Yii::$app->request->post('date'); #endregion $outside_ticket = new OutsideTicket(); $return_array = $outside_ticket->getTicketDateRun($ticket_code, $ticket_date); $return_list = array(); foreach( $return_array as $row_info ) { if( $row_info["is_onsale"] == 0 ) { $row_info["ticket_num"] = 0; } $return_list[] = $row_info; } $json = ['code' => 0, 'info' => '获取数据成功', 'list' => $return_list]; return json_encode($json); } /** * Function Description:获取所有门票数据 * Function Name: actionCheckAuthCode * * @return string * * @author Redstop */ public function actionGateTicketAll() { $outside_ticket = new OutsideTicket(); $return_array = $outside_ticket->getTicketAll(); $ticket_array = array(); foreach ($return_array as $ticket_info) { $ticket_info["prod_code"] = $ticket_info["prod_code"] == "DSNSZW" ? $ticket_info["prod_code"] : $ticket_info["prod_id"]; $ticket_info["prod_code"] = $ticket_info["prod_id"]; if ($ticket_info["parent_id"] == 0) { $ticket_array[$ticket_info["prod_id"]] = array("sign" => $ticket_info["prod_code"], "prod_id" => $ticket_info["prod_id"], "name" => $ticket_info["prod_name"], "sub_ticket" => array()); } else { $parent_id = $ticket_info["parent_id"]; $sub_ticket_info = array("prod_id" => $ticket_info["prod_id"], "prod_name" => $ticket_info["prod_name"]); $ticket_array[$parent_id]["sub_ticket"][] = $sub_ticket_info; } } $return_array = array(); foreach ($ticket_array as $ticket_info) { $prod_code = $ticket_info["sign"]; if (strlen($prod_code) <= 0) $prod_code = $ticket_info["prod_id"]; if ($prod_code == "DSNSZW") { //狮子王特殊对应 $ticket_info_tmp = $ticket_info; $ticket_info_tmp["name"] = $ticket_info["name"] . " 13:30场"; $return_array[$ticket_info["sign"] . "_1330"] = $ticket_info_tmp; $ticket_info_tmp["sign"] = $ticket_info["sign"] . "_1330"; $ticket_info_tmp = $ticket_info; $ticket_info_tmp["name"] = $ticket_info["name"] . " 15:00场"; $ticket_info_tmp["sign"] = $ticket_info["sign"] . "_1500"; $return_array[$ticket_info["sign"] . "_1500"] = $ticket_info_tmp; $ticket_info_tmp = $ticket_info; $ticket_info_tmp["sign"] = $ticket_info["sign"] . "_1900"; $ticket_info_tmp["name"] = $ticket_info["name"] . " 19:00场"; $return_array[$ticket_info["sign"] . "_1900"] = $ticket_info_tmp; } else { $return_array[$ticket_info["sign"]] = $ticket_info; } } $json = ['code' => 0, 'info' => '获取数据成功', 'list' => $return_array]; return json_encode($json); } }