Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 

224 řádky
8.2 KiB

  1. <?php
  2. /**
  3. *
  4. * ============================================================================
  5. * * 版权所有 蜘蛛出行 * *
  6. * 网站地址: http://www.zhizhuchuxing.com
  7. * ----------------------------------------------------------------------------
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
  9. * 使用;不允许对程序代码以任何形式任何目的的再发布。
  10. * ============================================================================
  11. * Author By: 付泓程
  12. * PhpStorm EntranceHotelService.php
  13. * Create By 2017/5/15 16:08 $
  14. */
  15. namespace common\util;
  16. use common\models\ProdCategory;
  17. use common\models\ProdMain;
  18. class EntranceHotelService
  19. {
  20. /**
  21. * Des:获取酒店产品初始化数据
  22. * Name: getInitialize
  23. * @param $prod_cate_id
  24. * @return array
  25. * @author 付泓程
  26. */
  27. public function getInitialize($prod_cate_id)
  28. {
  29. if (Util::checkPattern('intVal', $prod_cate_id) == false) {
  30. return Util::returnArrEr('params error');
  31. }
  32. /**获取产品信息*/
  33. $prodCate = new ProdCategory();
  34. $prodInfo = $prodCate->getProdDetail($prod_cate_id);
  35. // return Util::returnArrSu('fda',$prodInfo);
  36. if (!isset($prodInfo['category_id']) || $prodInfo['category_id'] != 3) {
  37. return Util::returnArrEr('该产品不是酒店产品!');
  38. }
  39. /**获取产品的价格日历*/
  40. $getDatePriceList = $this->getDatePriceList($prodInfo);
  41. if ($getDatePriceList['flag'] == false) {
  42. return $getDatePriceList;
  43. }
  44. $datePriceList = $getDatePriceList['data'];
  45. $prodInfo['date_list'] = $datePriceList;
  46. $keys = array_keys($datePriceList);//将数组的健组成一个数组
  47. $date = $keys[0];//取健的第一个值为默认日期
  48. $prodInfo['date'] = $date;
  49. /**获取产品的价格列表*/
  50. $getProdArr = $this->getProdArr($prodInfo, $date);
  51. if ($getProdArr['flag'] == false) {
  52. return $getProdArr;
  53. }
  54. $prodInfo['prod_arr'] = $getProdArr['data'];
  55. return Util::returnArrSu('', $prodInfo);
  56. }
  57. /**
  58. * Des:获取价格日历
  59. * Name: getDatePriceList
  60. * @param $prodInfo
  61. * @return array
  62. * @author 付泓程
  63. */
  64. public function getDatePriceList($prodInfo)
  65. {
  66. if (empty($prodInfo['sign']) == false) {//如果不是cs的巴士
  67. $siteConfig = Util::getSiteConfig();
  68. $time = time();
  69. $data = [
  70. 'auth_code' => Util::authCodeForCs($time),
  71. 'user_key' => $siteConfig['adm_user_key'],
  72. 'user' => $siteConfig['adm_user'],
  73. 'user_id' => $siteConfig['adm_user_id'],
  74. 'request_time' => $time,
  75. 'action' => 'gate_ticket_mini_value',
  76. 'sign' => $prodInfo['sign'],
  77. ];
  78. $curl = new CurlInterface($data, 4);
  79. // $result = $curl->execute($siteConfig['adm_host1'] . '/api/nfx', 'POST');
  80. // if (!isset($result['code']) || $result['code'] != '0' || count($result['list']) == 0) {
  81. // return Util::returnArrEr('产品已售完!');
  82. // }
  83. $result = ["code"=>"0","info"=>"","list"=>[
  84. ["ticket_date"=>"2017-05-09","ticket_time"=>"","mini_price"=>"509.00"],
  85. ["ticket_date"=>"2017-05-12","ticket_time"=>"","mini_price"=>"512.00"],
  86. ["ticket_date"=>"2017-05-15","ticket_time"=>"","mini_price"=>"515.00"]
  87. ]
  88. ];
  89. $datePriceList = [];
  90. foreach ($result['list'] as $val) {
  91. $datePriceList[$val['ticket_date']] = $val['mini_price'];
  92. }
  93. } else {
  94. $endDate = strtotime(date('Y-m-01') . " +4 month -1 day");//获取第三个月的最后一天
  95. $_time = range(strtotime(date('Y-m-d')), $endDate, 24 * 60 * 60);
  96. $_time = array_map(create_function('$v', 'return date("Y-m-d", $v);'), $_time);
  97. $datePriceList = array_fill_keys($_time, $this->dealFloat($prodInfo['show_price']));
  98. }
  99. return Util::returnArrSu('', $datePriceList);
  100. }
  101. /**
  102. * Des:获取品类的产品列表
  103. * Name: getProdArr
  104. * @param $prodInfo
  105. * @param $date
  106. * @return array
  107. * @author 付泓程
  108. */
  109. public function getProdArr($prodInfo, $date)
  110. {
  111. $prodMain = new ProdMain();
  112. // $prodArray = $prodMain->getProdArr($prodInfo['pro_cate_id']);//获取本地存储的酒店品类下的酒店房型产品
  113. if (empty($prodInfo['sign']) == false) {
  114. $result = $this->getCsPro($prodInfo, $date);
  115. if (!isset($result['code']) || $result['code'] != '0' || count($result['product_list']) == 0) {
  116. return Util::returnArrEr('系统繁忙,请稍后再试!');
  117. }
  118. //对数据进行整合
  119. // $csProdArr = $result['product_list'];
  120. // foreach ($prodArray as $key => $val) {
  121. // $prod = false;
  122. // foreach ($csProdArr as $csVal) {
  123. // if ($csVal['prod_id'] == $val['bus_id']) {
  124. // $prod = true;
  125. // $prodArray[$key]['prod_count'] = $csVal['ticket_num'];
  126. // $prodArray[$key]['prod_price'] = intval(ceil($csVal['ticket_price'])) ;
  127. // break;
  128. // }
  129. // }
  130. // if ($prod == false) {//当这个产品在cs那边不存在的话 则删除该产品
  131. // unset($prodArray[$key]);
  132. // }
  133. // }
  134. $prodArray = array_values($result['product_list']);
  135. }
  136. return Util::returnArrSu('', $prodArray);
  137. }
  138. /**
  139. * Des:获取品类某天的产品列表
  140. * Name: getProdArrForDate
  141. * @param $params
  142. * @return array
  143. * @author 付泓程
  144. */
  145. public function getProdArrForDate($params)
  146. {
  147. if (Util::checkPattern('intVal', $params['prod_cate_id']) == false) {
  148. return Util::returnArrEr('params error');
  149. }
  150. /**获取产品品类信息*/
  151. $prodCate = new ProdCategory();
  152. $prodInfo = $prodCate->getProdDetail($params['prod_cate_id']);
  153. if (!isset($prodInfo['category_id']) || $prodInfo['category_id'] != 3) {
  154. return Util::returnArrEr('该产品不是酒店产品!');
  155. }
  156. /**获取的品类的产品列表*/
  157. $getProdArr = $this->getProdArr($prodInfo, $params['date']);
  158. if ($getProdArr['flag'] == false) {
  159. return $getProdArr;
  160. }
  161. $return['prod_arr'] = $getProdArr['data'];
  162. return Util::returnArrSu('', $return);
  163. }
  164. /**
  165. * Des:获取cs酒店产品
  166. * Name: getCsPro
  167. * @param $prodInfo
  168. * @param $date
  169. * @return array
  170. * @author 付泓程
  171. */
  172. public function getCsPro($prodInfo, $date)
  173. {
  174. $siteConfig = Util::getSiteConfig();
  175. $time = time();
  176. $data = [
  177. 'auth_code' => Util::authCodeForCs($time),
  178. 'user_key' => $siteConfig['adm_user_key'],
  179. 'user' => $siteConfig['adm_user'],
  180. 'user_id' => $siteConfig['adm_user_id'],
  181. 'request_time' => $time,
  182. 'action' => 'gate_ticket_date_run',
  183. 'sign' => $prodInfo['sign'],
  184. 'date' => $date
  185. ];
  186. // $curl = new CurlInterface($data, 4);
  187. // $result = $curl->execute($siteConfig['adm_host1'] . '/api/nfx', 'POST');//获取cs的门票产品
  188. $curl = new CurlInterface($data,4);
  189. $result = $curl->execute('http://cs.zhizhuchuxing.com/zz-jd/st-ht/HTcontrol.php?type=order_ChooseProduct&key_word=&room_name=&current_page=1&page_size=25','GET');
  190. // $result = [];
  191. return $result;
  192. }
  193. /**
  194. * Function Description:处理价格
  195. * Function Name: dealFloat
  196. * @param $float
  197. *
  198. * @return float
  199. *
  200. * @author LUOCJ
  201. */
  202. public function dealFloat($float)
  203. {
  204. $int = floor($float);
  205. if ($float - $int == 0) {
  206. $float = $int;
  207. }
  208. return $float;
  209. }
  210. }