|
- <?php
- /**
- * Function Description:自由行资源组合
- * Function Name: GrorpOrderList
- * ${PARAM_DOC}
- *
- * @return ${TYPE_HINT}
- * ${THROWS_DOC}
- *
- * @author 娄梦宁
- */
- namespace backend\modules\zzcs\logic;
-
- use backend\modules\zzcs\models\BaseMainCorporation;
- use backend\modules\zzcs\models\BaseUser;
- use backend\modules\zzcs\models\OperaHotel;
- use backend\modules\zzcs\models\OperaHotelRoom;
- use backend\modules\zzcs\models\OperaLine;
- use backend\modules\zzcs\models\OperaProduct;
- use backend\modules\zzcs\models\OperaTickets;
- use Faker\Provider\Base;
- use Yii;
- use backend\modules\zzcs\models\OperaTouristCommon;
- use backend\modules\zzcs\models\OperaTouristDetail;
-
- class TouristCombination
- {
- /**
- * Function Description:新增资源类型获取基础数据
- * Function Name: AddCombination
- * @param $tourist_id
- *
- * @return mixed
- *
- * @author 娄梦宁
- */
- public function AddCombination($tourist_id){
- $opera_tourist_common= new OperaTouristCommon();
- $opera_line=new SubmitGroupOrder();
- $opera_hotel=new OperaHotel();
- $opera_product=new OperaProduct();
- $base_user=new BaseUser();
- $data['tourist_arr']=$opera_tourist_common->getDayNight($tourist_id);
- //线路数组 *****仅考虑微信商城渠道下可售*****
- $data['line_arr']=$opera_line->getLineInfo(0,164);
- //酒店数组
- $data['hotel_arr']=$opera_hotel->getAllHotel();
- //门票数组
- $data['ticket_arr']=$opera_product->getTicketName();
- //获取用户运营主体
- $main_corporation=$base_user->getMainCorp();
- $data['tourist_id']=$tourist_id;
- $data['main_corporation']=$main_corporation;
- return $data;
- }
-
- /**
- * Function Description:通过线路id取上下车站点数组
- * Function Name: GetLineDetail
- * @param $line_id
- *
- * @return array
- *
- * @author 娄梦宁
- */
- public function GetLineDetail($line_id){
- $opera_line=new OperaLine();
- $result=$opera_line->getStationsByLineId($line_id);
- if(empty($result['ticket_arr'])){
- $json=[
- 'code'=>1,
- 'info'=>'该线路没有可选票种',
- ];
- }else{
- $json= [
- 'code'=>0,
- 'info'=>'获取成功',
- 'list'=>$result
- ];
- }
- return $json;
- }
-
- /**
- * Function Description:获取房型信息
- * Function Name: GetRoomType
- * @param $hotel_id
- *
- * @return array|null|\yii\db\ActiveRecord
- *
- * @author 娄梦宁
- */
- public function GetRoomType($hotel_id){
- $opera_hotel_room=new OperaHotelRoom();
- $result=$opera_hotel_room->get_room_type_by_hotel_id($hotel_id);
- return [
- 'code'=>0,
- 'info'=>'房型获取成功',
- 'list'=>$result,
- ];
- }
-
- /**
- * Function Description:获取子门票信息
- * Function Name: GetSonTickets
- * @param $ticket_id
- *
- * @return array
- *
- * @author 娄梦宁
- */
- public function GetSonTickets($ticket_id){
- $opera_hotel_room=new OperaProduct();
- $result=$opera_hotel_room->get_son_tickets($ticket_id);
- return [
- 'code'=>0,
- 'info'=>'子票种获取成功',
- 'list'=>$result,
- ];
- }
-
- /**
- * Function Description:资源组合新增提交
- * Function Name: SubmitAddRes
- * @param $bus_info
- * @param $hotel_info
- * @param $ticket_info
- * @param $tourist_id
- *
- * @return array
- *
- * @author 娄梦宁
- */
- public function SubmitAddRes($bus_info,$hotel_info,$ticket_info,$tourist_id,$tourist_day,$tourist_night){
- if($tourist_id=='' || $tourist_day==''){
- return [
- 'code'=>2,
- 'info'=>'参数错误'
- ];
- }
- $opera_tourist_detail=new OperaTouristDetail();
- $opera_tourist_common=new OperaTouristCommon();
- $bus_info=json_decode($bus_info,true);
- $hotel_info=json_decode($hotel_info,true);
- $ticket_info=json_decode($ticket_info,true);
- //开启大事务,小插入失败时全部回滚
- $transaction=Yii::$app->db->beginTransaction();
- //行程天数和晚数的回写
- $opera_tourist_common->upt_day_night($tourist_id,$tourist_day,$tourist_night);
- if(!empty($bus_info)){
- foreach($bus_info as $val){
- $result=$opera_tourist_detail->ist_res_detail($tourist_id,1,$val['line_id'],$val['ticket_id'],'11',$val['date_from_start'],$val['start_time'],1,$val['ticket_id'],$val['serial_id']);
- if(!$result){
- $transaction->rollBack();
- return [
- 'code'=>1,
- 'info'=>'数据库错误'
- ];
- }
- }
- }
- if(!empty($hotel_info)){
- foreach($hotel_info as $val){
- $result=$opera_tourist_detail->ist_res_detail($tourist_id,2,$val['room_type_id'],$val['room_type'],$val['crow_type'],$val['date_from_start'],$val['hotel_id'],$val['max_num'],$val['room_type'],$val['serial_id']);
- if(!$result){
- $transaction->rollBack();
- return [
- 'code'=>1,
- 'info'=>'数据库错误'
- ];
- }
- }
- }
- if(!empty($ticket_info)){
- foreach($ticket_info as $val){
- $result=$opera_tourist_detail->ist_res_detail($tourist_id,3,$val['ticket_id'],$val['adult_son_ticket'],$val['crow_type'],$val['date_from_start'],'',1,$val['child_son_ticket'],$val['serial_id']);
- if(!$result){
- $transaction->rollBack();
- return [
- 'code'=>1,
- 'info'=>'数据库错误'
- ];
- }
- }
- }
- $transaction->commit();
- return [
- 'code'=>0,
- 'info'=>'插入成功'
- ];
- }
-
-
- /**
- * Function Description:资源组合新增提交
- * Function Name: SubmitAddRes
- * @param $bus_info
- * @param $hotel_info
- * @param $ticket_info
- * @param $tourist_id
- *
- * @return array
- *
- * @author 娄梦宁
- */
- public function SubmitUptRes($bus_info,$hotel_info,$ticket_info,$tourist_id,$tourist_day,$tourist_night){
- if($tourist_id=='' || $tourist_day==''){
- return [
- 'code'=>2,
- 'info'=>'参数错误'
- ];
- }
- $opera_tourist_detail=new OperaTouristDetail();
- $opera_tourist_common=new OperaTouristCommon();
- $bus_info=json_decode($bus_info,true);
- $hotel_info=json_decode($hotel_info,true);
- $ticket_info=json_decode($ticket_info,true);
- //开启大事务,小插入失败时全部回滚
- $transaction=Yii::$app->db->beginTransaction();
- //行程天数和晚数的回写
- $opera_tourist_common->upt_day_night($tourist_id,$tourist_day,$tourist_night);
- //先把所有子资源cancel_flag=0
- $opera_tourist_detail->cancel_res($tourist_id);
- if(!empty($bus_info)){
- foreach($bus_info as $val){
- $result=$opera_tourist_detail->upt_res_detail($tourist_id,1,$val['line_id'],$val['ticket_id'],'11',$val['date_from_start'],$val['start_time'],1,$val['ticket_id'],$val['serial_id']);
- if(!$result){
- $transaction->rollBack();
- return [
- 'code'=>1,
- 'info'=>'数据库错误'
- ];
- }
- }
- }
- if(!empty($hotel_info)){
- foreach($hotel_info as $val){
- $result=$opera_tourist_detail->upt_res_detail($tourist_id,2,$val['room_type_id'],$val['room_type'],$val['crow_type'],$val['date_from_start'],$val['hotel_id'],$val['max_num'],$val['room_type'],$val['serial_id']);
- if(!$result){
- $transaction->rollBack();
- return [
- 'code'=>1,
- 'info'=>'数据库错误'
- ];
- }
- }
- }
- if(!empty($ticket_info)){
- foreach($ticket_info as $val){
- $result=$opera_tourist_detail->upt_res_detail($tourist_id,3,$val['ticket_id'],$val['adult_son_ticket'],$val['crow_type'],$val['date_from_start'],'',1,$val['child_son_ticket'],$val['serial_id']);
- if(!$result){
- $transaction->rollBack();
- return [
- 'code'=>1,
- 'info'=>'数据库错误'
- ];
- }
- }
- }
- $transaction->commit();
- return [
- 'code'=>0,
- 'info'=>'插入成功'
- ];
- }
-
-
- /**
- * Function Description:修改资源组合页数据获取
- * Function Name: UptCombination
- * @param $tourist_id
- *
- * @return mixed
- *
- * @author 娄梦宁
- */
- public function UptCombination($tourist_id){
- $opera_line_info=new OperaLine();
- $opera_hotel_room=new OperaHotelRoom();
- $opera_tickets=new OperaTickets();
- $opera_tourist_common= new OperaTouristCommon();
- $opera_line=new SubmitGroupOrder();
- $opera_hotel=new OperaHotel();
- $opera_product=new OperaProduct();
- $opera_tourist_detail=new OperaTouristDetail();
- $base_user=new BaseUser();
-
- $data['tourist_arr']=$opera_tourist_common->getDayNight($tourist_id);
- //线路数组 *****仅考虑微信商城渠道下可售*****
- $data['line_arr']=$opera_line->getLineInfo(0,164);
- //酒店数组
- $data['hotel_arr']=$opera_hotel->getAllHotel();
- //门票数组
- $data['ticket_arr']=$opera_product->getTicketName();
- $data['tourist_id']=$tourist_id;
- //获取子资源详情
- $list=$opera_tourist_detail->get_detail_by_tourist_id($tourist_id);
- //获取用户运营主体
- $main_corporation=$base_user->getMainCorp();
- //处理子资源详情数组
- $new_list=[
- 'main_corporation'=>$main_corporation,
- 'bus'=>[],
- 'hotel'=>[],
- 'ticket'=>[]
- ];
- foreach($list as $val){
- if($val['res_type']==1){
- //巴士数组
- //起始终点站名
- $res_bus_info=$opera_tickets->get_station_name($val['sub_res_id']);
- $val['start_station']=$res_bus_info['start_station'];
- $val['end_station']=$res_bus_info['end_station'];
- $val['start_station_res_id']=$res_bus_info['start_station_res_id'];
- $val['end_station_res_id']=$res_bus_info['end_station_res_id'];
- //获取票种数组
- $val['ticket_arr']=$opera_line_info->getStationsByLineId($val['top_res_id']);
- $new_list['bus'][$val['day_from_start']][]=$val;
- }
- if($val['res_type']==2){
- //酒店数组
- //子房型数组
- $room_type=$opera_hotel_room->get_room_type_by_hotel_id($val['extra_res_info']);
- $val['room_type']=$room_type;
- $new_list['hotel'][$val['day_from_start']][]=$val;
- $new_list['hotel']['crowd_type']=$val['crowd_type'];
- }
- if($val['res_type']==3){
- //门票数组
- //子门票数组
- $ticket_arr=$opera_product->get_son_tickets($val['top_res_id']);
- $val['son_ticket']=$ticket_arr;
- $new_list['ticket'][$val['day_from_start']][]=$val;
- $new_list['ticket']['crowd_type']=$val['crowd_type'];
- }
- }
- $data['list']=$new_list;
- return $data;
- }
- }
|