'success', self::UNMAPPING_CODE => '请检查 Mapping 关系!', self::PARAM_ERR0R => '请求参数缺失', self::MAPPING_HOTEL_ERROR => '酒店关联失败', ]; private $service = null; /** * Des:service * Name: service * @return MappingService * @author 倪宗锋 */ public function service() { if ($this->service == null) { $this->service = new MappingService(); } return $this->service; } public function actionIndex() { $model = new BaseSupplier(); $request = Yii::$app->request->post(); $model->load($request); $query = BaseSupplier::find()->joinWith('baseSupplierSale b')->from('base_supplier a') ->where(['b.PARENT_TYPE' => 25, 'a.CANCEL_FLAG' => 0, 'a.MAIN_CORP_ID' => 1, 'a.supplier_type' => 301, 'b.CANCEL_FLAG' => 0]) ->select(['a.ID', 'a.SUPPLIER_NAME', 'a.COMPANY_NAME']); $query->andFilterWhere(['like', 'a.SUPPLIER_NAME', $model->SUPPLIER_NAME]) ->andFilterWhere(['in', 'a.ID', [669, 1667, 1668, 1669, 1670]]); $dataProvider = new ActiveDataProvider([ 'query' => $query, 'pagination' => [ 'pageSize' => 25, ], ]); return $this->render('index', ['model' => $model, 'dataProvider' => $dataProvider]); } public function actionHotelMappingList() { $hotel = new OperaHotel(); $hotel->HOTEL_STATUS = 1; $dataProvider = $hotel->getHotelist(Yii::$app->request->queryParams); return $this->render('hotel_mapping', ['model' => [], 'dataProvider' => $dataProvider]); } /** * Created by PhpStorm. * NOTES:交互View 母酒店列表 * User: Steven * Date: 2018/4/20 * Time: 17:00 * Class actionCityHotelList * @return string * @throws yii\db\Exception */ public function actionCityHotelList() { $model = new CtripCityList(); // 如果参数为空,默认当前为上海 $request = Yii::$app->request->get(); $request['channel_id'] = empty($request['channel_id']) ? Yii::$app->params['ctrip']['supplier_id'] : $request['channel_id']; $request = empty($request['country_id']) ? ['country_id' => 1, 'city_id' => 2, 'channel_id' => $request['channel_id'], 'hotel_name' => ''] : $request; $new_model = new CtripHotelList(); $hotel_list = $new_model->getMasterHotelList($request); $model->load($request, ''); // 如果当前城市没有酒店信息需要拉取代理通后台数据 if ($hotel_list->getTotalCount() <= 0 && empty($request['hotel_name'])) { $res = Yii::$app->runAction('hotel/ctrip-switch/getdltmasterhotellist'); if ($res['code'] == 0) { return ''; } } $zz_hotel_list = OperaHotel::find() ->leftJoin('channel_hotel_mapping b', 'a.HOTEL_ID=b.hotel_id')->from('opera_hotel a') ->andFilterWhere([ 'a.CANCEL_FLAG' => 0, ]) ->andWhere('b.hotel_id is null') ->orderBy(new Expression('CONVERT(a.HOTEL_NAME USING GBK)')) ->all(); return $this->render('set_hotel_mapping', ['model' => $model, 'dataProvider' => $hotel_list, 'hotel_list' => $zz_hotel_list]); } /** * @Author: wanglg * @DESC: 设置酒店关联 * @param hotels :代理通子酒店id * @param cs_hotel_id :cs酒店id * @return string */ public function actionSetHotelMapping() { $request = Yii::$app->request->post(); // 查询子酒店是否已经创建成功,如果已存在,不用创建子酒店 $master_hotel = ChannelHotelMapping::findAll(['master_hotel_id' => $request['hotels'], 'cancel_flag' => 0]); // 如果酒店信息不存在,先创建子酒店 if (empty($master_hotel)) { // 创建子酒店 $res = Yii::$app->runAction('hotel/ctrip-switch/createsubhotel', ['params' => ['hotels' => $request['hotels'], 'cs_hotel_id' => $request['cs_hotel_id']]]); } else { // 将关联表中的hotel_id绑定cs系统hotel_id $update_res = ChannelHotelMapping::updateAll(['hotel_id' => $request['cs_hotel_id']], ['master_hotel_id' => $request['hotels'], 'cancel_flag' => 0]); if (!$update_res) { $res = json_encode(['code' => self::MAPPING_HOTEL_ERROR, 'msg' => self::RETURN_MSG[self::MAPPING_HOTEL_ERROR]]); } else { $res = json_encode(['code' => self::SUCCESS_CODE, 'msg' => self::RETURN_MSG[self::SUCCESS_CODE]]); } } return $res; } /** * Notes:设置酒店售卖渠道 * User: Steven * Date: 2018/5/2 * Time: 15:16 * @return string */ public function actionSetSaleType() { // $model = new ChannelHotelMapping(); $get = Yii::$app->request->get(); $model = ChannelHotelMapping::findOne(['channel_id' => $get['channel_id'], 'hotel_id' => $get['hotel_id'], 'cancel_flag' => 0]); if (Yii::$app->request->isPost && $model->load(Yii::$app->request->post())) { $request = Yii::$app->request->post(); $switch_model = new CtripSwitch(); $model->apply_week = empty($model->apply_week) ? [] : $model->apply_week; $week_days = $switch_model->weekDays($model->apply_week); $request['ChannelHotelMapping']['apply_week'] = implode('', $week_days); $supplier_info = BaseSupplier::findOne(['ID' => $model->channel_id]); if ($model->load($request) && $model->validate()) { if (!$model->save()) { return ''; } else { return ''; } } else { return ''; } } return $this->render('_setSaleType', [ 'model' => $model, ]); } ######################基础房型设置############################################### /** * Des:房型列表 * Name: actionBaseRoomList * @return string * @author 倪宗锋 */ public function actionBaseRoomList() { // 如果参数为空,默认当前为上海 $param = [ 'sub_hotel_id' => Yii::$app->request->get('sub_hotel_id', ''),//子酒店ID 'channel_id' => Yii::$app->request->get('channel_id', '669'),//渠道ID ]; $channelRoom = new ChannelBaseRoomMapping(); $room_list = $channelRoom->getMasterBaseRoomList($param);//获取代理通房型数据 $channelHotel = new ChannelHotelMapping(); $getChannelHotelInfo = $channelHotel->getInfoBySubHotel($param);//获取代理通酒店数据 if (empty($getChannelHotelInfo['hotel_id'])) { $getChannelHotelInfo['hotel_id'] = '0'; } $operaBaseRoom = new OperaHotelBaseRoom(); $cs_room_list = $operaBaseRoom->getHotelBaseRoomForSelect($getChannelHotelInfo['hotel_id'], $param['channel_id']);//獲取cs房型列表 $showParam = [ 'dataProvider' => $room_list, 'cs_room_list' => $cs_room_list, 'channel_id' => $param['channel_id'], 'sub_hotel_id' => $param['sub_hotel_id'] ]; return $this->render('base_room_list', $showParam); } /** * Des:匹配房型 * Name: actionSetRoomMapping * @author 倪宗锋 */ public function actionSetRoomMapping() { // 如果参数为空,默认当前为上海 $param = [ 'master_base_room_id' => Yii::$app->request->post('master_base_room_id', ''),//母房型ID 'cs_room_id' => Yii::$app->request->post('cs_room_id', ''),//cs房型ID 'channel_id' => Yii::$app->request->get('channel_id', '669'),//渠道ID ]; #1、获取物理房型的数据 不存在则自动生成并更新 $getRoomInfo = $this->service()->getBaseRoom($param); if ($getRoomInfo['flag'] == false) { return json_encode($getRoomInfo); } $roomInfo = $getRoomInfo['data'];//物理房型数据 #2、获取cs房型数据,如果已经和其他房型匹配,则程序终止 $getCSRoomInfo = $this->service()->getCSRoomInfo($param['cs_room_id'], $param['channel_id']); if ($getCSRoomInfo['flag'] == false) { return json_encode($getCSRoomInfo); } $CSRoomInfo = $getCSRoomInfo['data']; #3、判断cs房型的酒店是否和当前母房型酒店绑定,未绑定则程序终止 if ($CSRoomInfo['sub_hotel_id'] != $roomInfo['sub_hotel_id']) { return json_encode(Util::returnArrEr('酒店绑定不一致!')); } #4、更新房型数据进行绑定操作 $ctripSwitch = new CtripSwitch(); $channel_arr = $ctripSwitch->ctripConf['supplier_list']; $channelBaseRoom = new ChannelBaseRoomMapping(); $data = [ 'base_room_id' => $param['cs_room_id'], ]; $flag = $channelBaseRoom->editInfo($data, $param['master_base_room_id'],$roomInfo['sub_hotel_id'], $channel_arr); if ($flag == false) { return json_encode(Util::returnArrEr('绑定操作失败!')); } return json_encode(Util::returnArrSu('绑定成功!')); } /** * Des:更新房型數據 * Name: actionUpdateBaseRoom * @return string * @author 倪宗锋 */ public function actionUpdateBaseRoom() { $param = [ 'sub_hotel_id' => Yii::$app->request->post('sub_hotel_id', ''),//子酒店ID ]; $result = $this->service()->updateBaseRoom($param['sub_hotel_id']); return json_encode($result); } /** * Des:删除基础房型关联关系 * Name: actionDelRoomMapping * @author 倪宗锋 */ public function actionDelBaseRoomMapping() { // 如果参数为空,默认当前为上海 $param = [ 'base_room_id' => Yii::$app->request->post('cs_room_id', ''),//cs房型ID ]; $result = $this->service()->delBaseRoomMapping($param); return json_encode($result); } ####################售卖房型操作################################# /*** * Des:獲取售賣房型ID * Name: actionSaleRoomList * @author 倪宗锋 */ public function actionSaleRoomList() { $param = [ 'cs_room_id' => Yii::$app->request->get('cs_room_id', ''),//cs基礎房型ID 'channel_id' => Yii::$app->request->get('channel_id', '669'),//渠道ID ]; #1、獲取房型關聯關係 $operaHotelRoom = new OperaHotelBaseRoom(); $roomInfo = $operaHotelRoom->getRoomInfo($param['cs_room_id'], $param['channel_id']); #$return 返回值 $return['channel_id'] = $param['channel_id']; $return['error'] = Util::returnArrSu(); #判断 if (empty($roomInfo['MAIN_ID'])) { $return['error'] = Util::returnArrEr('cs房型不存在!'); } else if (empty($roomInfo['sub_base_room_id'])) { $return['error'] = Util::returnArrEr('该cs房型未关联子物理房型!'); } else if (empty($roomInfo['sub_hotel_id'])) { $return['error'] = Util::returnArrEr('当前房型的酒店未关联母酒店!'); } if ($return['error']['flag']) { #2、獲取cs房型列表 $saleRoom = new OperaHotelRoom(); $saleRoomList = $saleRoom->getSaleRoomList($param['cs_room_id'], $param['channel_id']); $return['saleRoomList'] = $saleRoom->getSaleRoomListForShow($param['cs_room_id'], $param['channel_id']);//设置获取数据模型 #3、獲取代理通售賣房型列表 $return['switchRoomList'] = $this->service()->getSwitchRoomList($roomInfo['sub_hotel_id'], $roomInfo['sub_base_room_id'], $saleRoomList); } #4、展示頁面 return $this->render('sale_room_list', $return); } /** * Des:设置售卖房型关联 * Name: actionSetSaleRoomMapping * @return string * @author 倪宗锋 */ public function actionSetSaleRoomMapping() { $params = [ 'cs_sale_room_id' => Yii::$app->request->post('cs_sale_room_id', ''),//cs售卖房型ID 'sale_room_id' => Yii::$app->request->post('sale_room_id', ''),//代理通售卖房型ID 'sale_room_name' => Yii::$app->request->post('sale_room_name', ''),//代理通售卖房型名称 'channel_id' => Yii::$app->request->get('channel_id', '669'),//渠道ID ]; $params['sale_room_name'] = str_replace($params['sale_room_id'], '', $params['sale_room_name']); $result = $this->service()->setSaleRoomMapping($params); return json_encode($result); } /** * Des:取消售卖房型关联 * Name: actionSetSaleRoomMapping * @return string * @author 倪宗锋 */ public function actionDelSaleRoomMapping() { $params = [ 'cs_sale_room_id' => Yii::$app->request->post('cs_sale_room_id', ''),//cs售卖房型ID ]; $result = $this->service()->delSaleRoomMapping($params); return json_encode($result); } /** * Des:添加售卖房型 * Name: actionAddSaleRoom * @return string * @author 倪宗锋 */ public function actionAddSaleRoom() { $params = [ 'cs_sale_room_id' => Yii::$app->request->post('cs_sale_room_id', ''),//cs售卖房型ID ]; $result = $this->service()->addSaleRoomMapping($params); return json_encode($result); } }