'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);
}
}