25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 
 

644 satır
23 KiB

  1. <?php
  2. /**
  3. *
  4. * ============================================================================
  5. * * 版权所有 蜘蛛出行 * *
  6. * 网站地址: http://www.zhizhuchuxing.com
  7. * ----------------------------------------------------------------------------
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
  9. * 使用;不允许对程序代码以任何形式任何目的的再发布。
  10. * ============================================================================
  11. * Author By: 倪宗锋
  12. * PhpStorm SetService.php
  13. * Create By 2017/4/13 9:33 $
  14. */
  15. namespace backend\modules\hotel\models;
  16. use backend\common\Utils;
  17. use backend\modules\hotel\controllers\SetController;
  18. use yii\db\Exception;
  19. use yii\helpers\ArrayHelper;
  20. class SetService
  21. {
  22. /**
  23. * Des:获取
  24. * Name: getChannelList
  25. * @return array
  26. * @author 倪宗锋
  27. */
  28. public function getChannelHotelList()
  29. {
  30. $channelHotel = new ChannelHotel();
  31. $getList = $channelHotel->getListForSet();
  32. return $getList;
  33. }
  34. /**
  35. * Des:获取房型列表
  36. * Name: getRoomListByHotelId
  37. * @param $hotelId
  38. * @return array
  39. * @author 倪宗锋
  40. */
  41. public function getRoomListByHotelId($hotelId)
  42. {
  43. $channelRoom = new ChannelRoom();
  44. $getList = $channelRoom->getRoomListByHotelId($hotelId);
  45. return $getList;
  46. }
  47. /**
  48. * Des:获取本地酒店信息 根据 渠道酒店ID
  49. * Name: getHotelIdByChannelHotelId
  50. * @param $hotelId
  51. * @return array
  52. * @author 倪宗锋
  53. */
  54. public function getHotelIdByChannelHotelId($hotelId)
  55. {
  56. if (empty($hotelId)) {
  57. return [];
  58. }
  59. $channelHotel = new ChannelHotel();
  60. $getInfo = $channelHotel->getHotelInfoChannelHotelId($hotelId);
  61. return $getInfo;
  62. }
  63. /**
  64. * Des:更新酒店数据
  65. * Name: upJD
  66. * @return array
  67. * @author 倪宗锋
  68. */
  69. public function upJD()
  70. {
  71. /**1.更新携程酒店数据*/
  72. $msg = '';
  73. $upCtrip = $this->upJdFromCtrip();
  74. if ($upCtrip['flag'] == false) {
  75. $msg .= $upCtrip['msg'] . ' ';
  76. }
  77. /**返回*/
  78. if (empty($msg)) {
  79. return ['flag' => true, 'msg' => 'success'];
  80. } else {
  81. return ['flag' => false, 'msg' => $msg];
  82. }
  83. }
  84. /**
  85. * Des:更新房型数据
  86. * Name: upRoom
  87. * @param $params
  88. * @return array
  89. * @author 倪宗锋
  90. */
  91. public function upRoom($params)
  92. {
  93. if (empty($params['channelHotelId']) || empty($params['channelId'])) {
  94. return ['flag' => false, 'msg' => 'params error'];
  95. }
  96. if ($params['channelId'] == \Yii::$app->params['ctrip']['supplier_id']) {
  97. /**1.更新携程酒店房型数据数据*/
  98. $upCtrip = $this->upRoomFromCtrip($params);
  99. if ($upCtrip['flag'] == false) {
  100. return $upCtrip;
  101. }
  102. } else {
  103. return ['flag' => false, 'msg' => 'params error'];
  104. }
  105. return ['flag' => true, 'msg' => 'success'];
  106. }
  107. /**
  108. * Des:酒店关联
  109. * Name: mappingJd
  110. * @param $params array
  111. * @return array
  112. * @author 倪宗锋
  113. */
  114. public function mappingJd($params)
  115. {
  116. /**1.检测参数*/
  117. if (empty($params['channelHotelId']) || empty($params['channelId']) || empty($params['hotelId'])) {
  118. return ['flag' => false, 'msg' => '关联操作失败!params error'];
  119. }
  120. /**2.检测是否可以mapping*/
  121. $channelHotelRelation = new HotelRelation();
  122. $check = $channelHotelRelation->checkIsCanMapping($params);
  123. if ($check) {//已存在 渠道酒店已绑定其他本地酒店或本地酒店已绑定其他渠道酒店!
  124. return ['flag' => false, 'msg' => '关联操作失败!having mapping'];
  125. }
  126. /**3。添加关联表记录*/
  127. $result = $channelHotelRelation->mapping($params);
  128. if ($result) {
  129. $hotelMapping = HotelMapping::findOne(['channel_id' => \Yii::$app->params['ctrip']['supplier_id']]);
  130. $arr = explode(',', $hotelMapping->hotel_str);
  131. $arr[] = $params['hotelId'];
  132. $arr = array_unique($arr);
  133. $hotelMapping->hotel_str = implode(',', $arr);
  134. $hotelMapping->save(false);
  135. return ['flag' => true, 'msg' => 'success'];
  136. } else {
  137. return ['flag' => false, 'msg' => '关联操作失败!add error'];
  138. }
  139. }
  140. /**
  141. * Des:解除酒店关联
  142. * Name: unMappingHotel
  143. * @param $params
  144. * @return array
  145. * @author 倪宗锋
  146. */
  147. public function unMappingHotel($params, $setType)
  148. {
  149. /**1.检测参数*/
  150. if (empty($params['channelHotelId']) || empty($params['channelId'])) {
  151. return ['flag' => false, 'msg' => '失败!params error'];
  152. }
  153. //解除酒店时,不判断子房型是否解除mapping
  154. // $roomRelation = new RoomRelation();
  155. // $check = $roomRelation->checkUnMappingHotel($params);
  156. // if($check == false){
  157. // return ['flag' => false, 'msg' => '失败!请先解绑子房型!'];
  158. // }
  159. if ($params['channelId'] == \Yii::$app->params['ctrip']['supplier_id']) {
  160. $relation = $this->relationCtripHotel($params, $setType);
  161. if ($relation['flag'] == false) {
  162. return ['flag' => false, 'msg' => '失败!del error'];
  163. }
  164. }
  165. /**3。添加关联表记录*/
  166. $channelHotelRelation = HotelRelation::findOne(['ChannelHotelId' => $params['channelHotelId']]);
  167. $hotel = $channelHotelRelation->HotelId;
  168. //先删除该酒店下的所有房型关联
  169. $flag = $channelHotelRelation->clearRoom($params);
  170. if (!$flag) {
  171. return ['flag' => false, 'msg' => '失败!del error'];
  172. }
  173. $result = $channelHotelRelation->unMapping($params);
  174. if ($result) {
  175. $hotelMapping = HotelMapping::findOne(['channel_id' => \Yii::$app->params['ctrip']['supplier_id']]);
  176. $arr = explode(',', $hotelMapping->hotel_str);
  177. if (($key = array_search($hotel, $arr)) !== false) {
  178. unset($arr[$key]);
  179. }
  180. $hotelMapping->hotel_str = implode(',', $arr);
  181. $hotelMapping->save(false);
  182. return ['flag' => true, 'msg' => 'success'];
  183. } else {
  184. return ['flag' => false, 'msg' => '失败!del error'];
  185. }
  186. }
  187. /**
  188. * Des:关联房型
  189. * Name: mappingRoom
  190. * @param $params
  191. * @return array
  192. * @author 倪宗锋
  193. */
  194. public function mappingRoom($params, $setType)
  195. {
  196. /**1.检测参数*/
  197. if (empty($params['channelRoomId']) || empty($params['channelId']) || empty($params['roomId'])) {
  198. return ['flag' => false, 'msg' => '关联操作失败!params error'];
  199. }
  200. /**2.检测是否可以mapping*/
  201. $check = $this->checkRoomIsCanMapping($params);
  202. if ($check['flag'] == false) {
  203. return $check;
  204. }
  205. /**3。添加关联表记录*/
  206. $transaction = \Yii::$app->db->beginTransaction();
  207. try {
  208. if ($setType == RoomRelation::MAPPING_SET_TYPE_NEW) {
  209. $channelRoomRelation = new RoomRelation();
  210. } else {
  211. $channelRoomRelation = RoomRelation::findOne(['ChannelRoomId' => $params['channelRoomId'], 'ChannelId' => $params['channelId']]);
  212. if ($channelRoomRelation == null) {
  213. $channelRoomRelation = new RoomRelation();
  214. }
  215. }
  216. $result = $channelRoomRelation->mapping($params);
  217. if (!$result) {
  218. return ['flag' => false, 'msg' => '关联操作失败!add error'];
  219. }
  220. /**4.1前往携程关联*/
  221. if ($params['channelId'] == \Yii::$app->params['ctrip']['supplier_id']) {
  222. $relation = $this->relationCtripRoom($params, $setType);
  223. if ($relation['flag'] == false) {
  224. $transaction->rollBack();//回滚
  225. return $relation;
  226. }
  227. }
  228. $transaction->commit();
  229. return ['flag' => true, 'msg' => 'success'];
  230. } catch (Exception $e) {
  231. $transaction->rollBack();//回滚
  232. return ['flag' => false, 'msg' => '关联操作失败!sys error'];
  233. }
  234. }
  235. /**
  236. * Des:接触房型关联
  237. * Name: unMappingRoom
  238. * @param $params
  239. * @param $setType
  240. * @return array
  241. * @throws Exception
  242. * @author 倪宗锋
  243. */
  244. public function unMappingRoom($params, $setType)
  245. {
  246. /**删除关联表记录*/
  247. $transaction = \Yii::$app->db->beginTransaction();
  248. try {
  249. $channelRoomRelation = new RoomRelation();
  250. $result = $channelRoomRelation->unMapping($params);
  251. if (!$result) {
  252. return ['flag' => false, 'msg' => '删除操作失败!del error'];
  253. }
  254. /**4.1前往携程关联*/
  255. if ($params['channelId'] == \Yii::$app->params['ctrip']['supplier_id']) {
  256. $relation = $this->relationCtripRoom($params, $setType);
  257. if ($relation['flag'] == false) {
  258. $transaction->rollBack();//回滚
  259. return $relation;
  260. }
  261. }
  262. $transaction->commit();
  263. return ['flag' => true, 'msg' => 'success'];
  264. } catch (Exception $e) {
  265. $transaction->rollBack();//回滚
  266. return ['flag' => false, 'msg' => '删除操作失败!sys error'];
  267. }
  268. }
  269. /**
  270. * Des: 检查房型是否可以mapping
  271. * Name: checkIsCanMapping
  272. * @param $params
  273. * @return array
  274. * @author 倪宗锋
  275. */
  276. public function checkRoomIsCanMapping($params)
  277. {
  278. /**校验房型是否已经mapping*/
  279. $channelRoomRelation = new RoomRelation();
  280. $check = $channelRoomRelation->checkIsCanMapping($params);
  281. if ($check) {//已存在 渠道酒店已绑定其他本地酒店或本地酒店已绑定其他渠道酒店!
  282. return ['flag' => false, 'msg' => '关联操作失败!having mapping'];
  283. }
  284. /**检查该房型关联是否正确*/
  285. $channelHotelRelation = new HotelRelation();
  286. $checkHotel = $channelHotelRelation->checkRoomCanMapping($params);
  287. if ($checkHotel) {
  288. return ['flag' => true, 'msg' => ''];
  289. }
  290. return ['flag' => false, 'msg' => '关联操作失败!请先关联酒店!'];
  291. }
  292. /**
  293. * Des:推送订单状态
  294. * Name: setOrderStatus
  295. * @param $params
  296. * @return mixed
  297. * @author 倪宗锋
  298. */
  299. public function setOrderStatus($params)
  300. {
  301. if ($params['channelId'] == \Yii::$app->params['ctrip']['supplier_id']) {//携程酒店
  302. $setDes = $this->setCtripOrderStatus($params);
  303. } else {
  304. $setDes = ['flag' => true];
  305. }
  306. return $setDes;
  307. }
  308. /*********************携程酒店************************************/
  309. /**
  310. * Des:更新携程酒店数据
  311. * Name: upJdFromCtrip
  312. * @return array
  313. * @author 倪宗锋
  314. */
  315. public function upJdFromCtrip()
  316. {
  317. $getJdFromCtrip = $this->getJdFromCtrip();//获取携程酒店数据
  318. if ($getJdFromCtrip['flag'] == false) {
  319. return $getJdFromCtrip;
  320. }
  321. if (empty($getJdFromCtrip['data'])) {
  322. return ['flag' => false, 'msg' => '未获取到携程酒店数据'];
  323. }
  324. $channelHotel = new ChannelHotel();//渠道酒店表
  325. $upFlag = $channelHotel->upDateCtrip($getJdFromCtrip['data']);
  326. if ($upFlag) {
  327. return ['flag' => true, 'msg' => 'success'];
  328. }
  329. return ['flag' => false, 'msg' => '同步携程酒店数据失败'];
  330. }
  331. /**
  332. * Des:从携程获取酒店数据
  333. * Name: getJdFromCtrip
  334. * @param int $page
  335. * @return array
  336. * @author 倪宗锋
  337. */
  338. public function getJdFromCtrip($page = 1)
  339. {
  340. $data = ['SupplierID' => \Yii::$app->params['ctrip']['soap']['SupplierID'], 'CurrentPage' => $page];
  341. $soap = new SoapService($data, 'GetHotelInfo', 'GetHotelInfoRequest', '1.2');
  342. $return = $soap->exec();
  343. if ($return['flag'] == false) {
  344. return $return;
  345. }
  346. $return = $return['data'];
  347. if (empty($return['RequestResult']['Response']) || $return['RequestResult']['ResultCode'] != 0) {
  348. return ['flag' => false, 'msg' => '同步携程JD数据失败[1001]'];
  349. }
  350. $hotel = $return['RequestResult']['Response']['GetHotelInfoResponse'];
  351. if (isset($hotel['HotelList']['Hotel'])) {
  352. $jdList[] = $hotel['HotelList'];
  353. } else {
  354. $jdList = $hotel['HotelList'];
  355. }
  356. $totalPage = intval($hotel['TotalPage']);
  357. $page = intval($hotel['CurrentPage']);
  358. if ($totalPage > $page) {//当存在下个分页时 获取下个分页的数据
  359. $getJdList = $this->getJdFromCtrip($page + 1);
  360. if ($getJdList['flag'] == false) {
  361. return ['flag' => false, 'msg' => '同步携程JD数据失败[1002]'];
  362. }
  363. $jdList_1 = $getJdList['data'];
  364. $jdList = ArrayHelper::merge($jdList, $jdList_1);
  365. }
  366. return ['flag' => true, 'data' => $jdList];
  367. }
  368. /**
  369. * Des:更新房型数据
  370. * Name: upRoomFromCtrip
  371. * @param $params array
  372. * @return array
  373. * @author 倪宗锋
  374. */
  375. public function upRoomFromCtrip($params)
  376. {
  377. /**去携程获取酒店对应的房型数据*/
  378. $getRoomUnMapping = $this->getRoomFromCtrip($params);//获取携程酒店数据-没有mapping
  379. $getRoomMapping = $this->getRoomFromCtrip($params, 'Mapping');//获取携程酒店房型数据数据-已经mapping
  380. if ($getRoomUnMapping['flag'] == false || $getRoomMapping['flag'] == false) {
  381. return ['flag' => false, 'msg' => '获取携程房型数据失败!'];
  382. }
  383. $roomList = ArrayHelper::merge($getRoomMapping['data'], $getRoomUnMapping['data']);
  384. if (empty($roomList)) {
  385. return ['flag' => false, 'msg' => '该酒店下没有房型数据'];
  386. }
  387. /**更新渠道房型数据*/
  388. $channelRoom = new ChannelRoom();
  389. $upFlag = $channelRoom->upRoomForCtrip($roomList, $params['channelHotelId']);
  390. if ($upFlag) {
  391. return ['flag' => true, 'msg' => 'success'];
  392. }
  393. return ['flag' => false, 'msg' => '同步携程房型数据失败'];
  394. }
  395. /**
  396. * Des:获取酒店的房型数据
  397. * Name: getRoomFromCtrip
  398. * @param $params
  399. * @param string $type
  400. * @return array
  401. * @author 倪宗锋
  402. */
  403. public function getRoomFromCtrip($params, $type = 'UnMapping')
  404. {
  405. $data = [
  406. 'SupplierID' => \Yii::$app->params['ctrip']['soap']['SupplierID'],
  407. 'GetMappingInfoType' => $type,
  408. 'GetMappingInfoRequest' => [
  409. 'Hotel' => $params['channelHotelId'],
  410. ]
  411. ];
  412. $soap = new SoapService($data, 'GetMappingInfo', 'GetMappingInfoRequestList', '1.2');
  413. $return = $soap->exec();
  414. if ($return['flag'] == false) {
  415. return $return;
  416. }
  417. $return = $return['data'];
  418. if (empty($return['RequestResult']['Response']['GetMappingInfoResponseList']['HotelResponseItem']['MasterHotel']['ChildHotel'])) {
  419. return ['flag' => false, 'msg' => '同步携程JD房型数据失败[1000]'];
  420. }
  421. $childHotel = $return['RequestResult']['Response']['GetMappingInfoResponseList']['HotelResponseItem']['MasterHotel']['ChildHotel'];
  422. if (empty($childHotel['RoomResponseItem'])) {
  423. $roomList = [];
  424. } else {
  425. if (empty($childHotel['RoomResponseItem']['Room'])) {
  426. $roomList = $childHotel['RoomResponseItem'];
  427. } else {
  428. $roomList[] = $childHotel['RoomResponseItem'];
  429. }
  430. }
  431. return ['flag' => true, 'data' => $roomList];
  432. }
  433. //取消酒店的mapping关系
  434. public function relationCtripHotel($params, $SetType = RoomRelation::MAPPING_SET_TYPE_DELETE_HOTEL)
  435. {
  436. if (empty($params['channelHotelId'])) {
  437. return ['flag' => false, 'msg' => '关联失败,params error'];
  438. }
  439. $data = [
  440. 'SupplierID' => \Yii::$app->params['ctrip']['soap']['SupplierID'],
  441. 'Hotel' => $params['channelHotelId'],
  442. 'RatePlanCode' => '',
  443. 'HotelGroupRoomTypeCode' => '',
  444. 'HotelGroupRoomName' => '',
  445. 'HotelGroupHotelCode' => '',
  446. 'HotelGroupRatePlanCode' => '',
  447. 'BalanceType' => 'PP',
  448. 'MappingType' => 1,
  449. 'SetType' => $SetType
  450. ];
  451. $soap = new SoapService($data, 'SetMappingInfo', 'SetMappingInfoRequest', '1.2');
  452. $soap->exec();
  453. return ['flag' => true, 'msg' => ''];
  454. }
  455. /**
  456. * Des:关联子房型和子酒店
  457. * Name: relationCtripRoom
  458. * @param $params
  459. * @param $SetType int 设置类型:-4 代表删除酒店和房型 Mapping 关系
  460. * 的同时删除房价,只认 Hotel 参数;-3 代表删除酒
  461. * 店和房型 Mapping 关系,只认 Hotel 参数;-2 代
  462. * 表删除房型 Mapping 关系的同时删除房价;-1 代
  463. * 表房型删除 Mapping 关系;0 代表修改;1 代表新增
  464. * @return array
  465. * @author 倪宗锋
  466. */
  467. public function relationCtripRoom($params, $SetType = RoomRelation::MAPPING_SET_TYPE_NEW)
  468. {
  469. $channelRoom = new ChannelRoom();
  470. $roomInfo = $channelRoom->getParamsForCtrip($params);
  471. if (empty($roomInfo['ChannelHotelID']) || empty($roomInfo['ROOM_NAME'])) {
  472. return ['flag' => false, 'msg' => '关联失败,params error'];
  473. }
  474. $data = [
  475. 'SupplierID' => \Yii::$app->params['ctrip']['soap']['SupplierID'],
  476. 'Hotel' => $roomInfo['ChannelHotelID'],
  477. 'Room' => $roomInfo['RoomId'],
  478. 'RatePlanCode' => '',
  479. 'HotelGroupRoomTypeCode' => $roomInfo['ID'],
  480. 'HotelGroupRoomName' => $roomInfo['ROOM_NAME'],
  481. 'HotelGroupHotelCode' => $roomInfo['HOTEL_ID'],
  482. 'HotelGroupRatePlanCode' => '',
  483. 'BalanceType' => 'PP',
  484. 'MappingType' => 1,
  485. 'SetType' => $SetType
  486. ];
  487. $soap = new SoapService($data, 'SetMappingInfo', 'SetMappingInfoRequest', '1.2');
  488. $xml = $soap->exec();
  489. $soapRsp = Utils::xml_to_array($xml);
  490. if($soapRsp["RequestResult"]["ResultCode"] == 0){
  491. return ['flag' => true, 'msg' => ''];
  492. }else{
  493. return ['flag' => false, 'msg' => '携程直连出错(' . $soapRsp["RequestResult"]["Message"] . ')'];
  494. }
  495. }
  496. /**
  497. * Des:推送携程订单状态
  498. * Name: setCtripOrderStatus
  499. * @param $params
  500. * @return mixed
  501. * @author 倪宗锋
  502. */
  503. public function setCtripOrderStatus($params)
  504. {
  505. $data = [
  506. 'OrderID' => $params['OrderID'],
  507. 'InterFaceSendID' => $params['InterFaceSendID'],
  508. 'OrderStatus' => $params['OrderStatus'],
  509. 'InterfaceConfirmNo' => $params['InterfaceConfirmNo'],
  510. 'ResultCode' => $params['ResultCode'],
  511. 'Message' => $params['Message']
  512. ];
  513. if (empty($data['InterfaceConfirmNo']) == false) {
  514. $data['IsHotelConfirm'] = 'T';
  515. } else {
  516. $data['IsHotelConfirm'] = 'F';
  517. }
  518. $soap = new SoapService($data, 'DomesticPushOrderStatus', 'DomesticPushOrderStatusRequest', '1.3');
  519. $result = $soap->exec();
  520. if ($result['flag'] == false) {
  521. return $result;
  522. }
  523. $result = $result['data'];
  524. if (empty($result['RequestResult']['DomesticPushOrderStatusResponse']) || $result['RequestResult']['DomesticPushOrderStatusResponse']['ReturnCode'] != 0) {
  525. return ['flag' => false, 'msg' => '推送订单状态失败!'];
  526. }
  527. return ['flag' => true];
  528. }
  529. /****************计划任务使用函数*********************/
  530. /**
  531. * Des:校验房型mapping信息
  532. * Name: checkMapping
  533. * @return array
  534. * @author 倪宗锋
  535. */
  536. public function checkMapping()
  537. {
  538. //获取所有的mapping信息 如果没有则不必校验
  539. $roomRelation = new RoomRelation();
  540. $getAllRelation = $roomRelation->getAllRelationForCheckMapping();
  541. if (empty($getAllRelation)) {
  542. return ['flag' => true, 'msg' => 'OK'];
  543. }
  544. //一条条校验mapping信息
  545. $msg = '';
  546. foreach ($getAllRelation as $val) {
  547. if ($val['ChannelId'] == \Yii::$app->params['ctrip']['supplier_id']) {//如果为669则为携程
  548. $check = $this->checkCtripMappings($val);//校验携程mapping信息
  549. } else {
  550. continue;
  551. }
  552. if ($check['flag'] == false) {
  553. $msg .= $check['msg'];
  554. }
  555. }
  556. //如果有错误信息 说明有mapping错误
  557. if (empty($msg) == false) {
  558. return ['flag' => false, 'msg' => $msg];
  559. }
  560. return ['flag' => true, 'msg' => 'OK'];
  561. }
  562. /**
  563. * Des:校验携程的mapping
  564. * Name: checkCtripMappings
  565. * @param $params
  566. * @return array
  567. * @author 倪宗锋
  568. */
  569. public function checkCtripMappings($params)
  570. {
  571. $getMappingInfo = $this->getCtripRoomTypeInfo($params);
  572. if ($getMappingInfo['flag'] == false) {
  573. return ['flag' => false, 'msg' => $params['hotel_id'] . ':' . $params['room_id'] . '[1000]' . PHP_EOL];
  574. }
  575. if ($getMappingInfo['data']['ChannelHotelID'] != $params['ChannelHotelID'] || $getMappingInfo['data']['ChannelRoomId'] != $params['ChannelRoomId']) {
  576. return ['flag' => false, 'msg' => $params['hotel_id'] . ':' . $params['room_id'] . '[1001]' . PHP_EOL];
  577. }
  578. return ['flag' => true, 'msg' => ''];
  579. }
  580. /**
  581. * Des:获取携程mapping信息
  582. * Name: getCtripRoomTypeInfo
  583. * @param $params
  584. * @return array
  585. * @author 倪宗锋
  586. */
  587. public function getCtripRoomTypeInfo($params)
  588. {
  589. $data = [
  590. 'SupplierID' => \Yii::$app->params['ctrip']['soap']['SupplierID'],
  591. 'HotelGroupHotelCode' => $params['hotel_id'],
  592. 'HotelGroupRoomTypeCode' => $params['room_id']
  593. ];
  594. $soap = new SoapService($data, 'GetCtripRoomTypeInfo', 'HotelGroupInterfaceRoomTypeListRequest', '1.2');
  595. $return = $soap->exec();
  596. if ($return['flag'] == false) {
  597. return $return;
  598. }
  599. $return = $return['data'];
  600. if (empty($return['RequestResult']['Response']['HotelGroupInterfaceRoomTypeListResponse']['HotelGroupInterfaceRoomTypeList']['HotelGroupInterfaceRoomTypeEntity']) || $return['RequestResult']['ResultCode'] != 0) {
  601. return ['flag' => false, 'msg' => 'not get info!'];
  602. }
  603. $hotel = $return['RequestResult']['Response']['HotelGroupInterfaceRoomTypeListResponse']['HotelGroupInterfaceRoomTypeList']['HotelGroupInterfaceRoomTypeEntity'];
  604. $data = [
  605. 'ChannelHotelID' => $hotel['Hotel'],
  606. 'ChannelRoomId' => $hotel['Room']
  607. ];
  608. return ['flag' => true, 'data' => $data];
  609. }
  610. }
  611. ?>