getSearchList($param, 4); if (empty($menPList['0'])) { $menPList = []; } return Util::returnArrSu('', ['list' => $menPList]); } /** * Des:获取产品初始化数据 * Name: getInitialize * @param $pro_cate_id * @return array * @author 倪宗锋 */ public function getInitialize($pro_cate_id) { if (Util::checkPattern('intVal', $pro_cate_id) == false) { return Util::returnArrEr('params error'); } /**获取产品信息*/ $prodCate = new ProdCategory(); $prodInfo = $prodCate->getProdDetail($pro_cate_id); if (!isset($prodInfo['category_id']) || $prodInfo['category_id'] != 4) { return Util::returnArrEr('该产品不是巴士自由行产品!'); } /**获取产品的价格日历*/ $getDatePriceList = $this->getDatePriceList($prodInfo); if ($getDatePriceList['flag'] == false) { return $getDatePriceList; } $datePriceList = $getDatePriceList['data']['adult']; $prodInfo['date_list'] = $datePriceList; $prodInfo['child_date_list']=$getDatePriceList['data']['child']; $keys = array_keys($datePriceList);//将数组的健组成一个数组 $date = $keys[0];//取健的第一个值为默认日期 $prodInfo['date'] = $date; /**获取产品的价格列表*/ $getProdArr = $this->getProdArr($prodInfo, $date); if ($getProdArr['flag'] == false) { return $getProdArr; } $prodInfo['prod_arr'] = $getProdArr['data']; /**获取轮播图*/ $prodImg = new ProdImg(); $getProdImg = $prodImg->getProdImg($pro_cate_id); $prodInfo['img_list'] = $getProdImg; return Util::returnArrSu('', $prodInfo); } /** * Des:获取价格日历 * Name: getDatePriceList * @param $prodInfo * @return array * @author 倪宗锋 */ public function getDatePriceList($prodInfo) { $childPriceList=[]; if (empty($prodInfo['sign']) == false) {//如果是cs的巴士自由行 $siteConfig = Util::getSiteConfig(); $time = time(); $data = [ 'auth_code' => Util::authCodeForCs($time), 'user_key' => $siteConfig['adm_user_key'], 'user' => $siteConfig['adm_user'], 'user_id' => $siteConfig['adm_user_id'], 'org_id'=> $siteConfig['adm_source_id'], 'request_time' => $time, 'action' => 'get_price_date_by_month', 'sign' => $prodInfo['sign'], ]; $curl = new CurlInterface($data, 4); $result = $curl->execute($siteConfig['adm_host1'] . '/api/wx/', 'POST'); if (!isset($result['code']) || $result['code'] != '0' || count($result['list']) == 0) { return Util::returnArrEr('产品已售完!'); } $datePriceList = []; foreach ($result['list'] as $val) { if (intval($val['ticket_num']) > 0) { $datePriceList[$val['ticket_date']] = $val['mini_price']; $childPriceList[$val['ticket_date']] = $val['child_price']; } } if (count($datePriceList) == 0) { return Util::returnArrEr('产品已售完!'); } //判断售卖截止时间差 // $s_time_h = $prodInfo['close_sale_time']; $_time_new = array(); foreach ($datePriceList as $k => $v) { // //得到能卖的时间 // $s_time = strtotime($k) + $s_time_h * 60 * 60; // //能卖的时间和当前时间比较 // $currdate = time(); // if ($s_time > $currdate) { // $_time_new[$k] = $v; // } $_time_new[$k] = $v; } $datePriceList = $_time_new; } else { $endDate = strtotime(date('Y-m-01') . " +4 month -1 day");//获取第三个月的最后一天 $_time = range(strtotime(date('Y-m-d')), $endDate, 24 * 60 * 60); $_time = array_map(create_function('$v', 'return date("Y-m-d", $v);'), $_time); //判断售卖截止时间差 // $s_time_h = $prodInfo['close_sale_time']; $_time_new = array(); foreach ($_time as $k => $v) { // //得到能卖的时间 // $s_time = strtotime($v) + $s_time_h * 60 * 60; // //能卖的时间和当前时间比较 // $currdate = time(); // if ($s_time > $currdate) { // $_time_new[] = $v; // } $_time_new[] = $v; } $datePriceList = array_fill_keys($_time_new, $this->dealFloat($prodInfo['show_price'])); } return Util::returnArrSu('', ['adult'=>$datePriceList,'child'=>$childPriceList]); } /** * Des:获取品类某天的产品列表 * Name: getProdArrForDate * @param $params * @return array * @author 倪宗锋 */ public function getProdArrForDate($params) { if (Util::checkPattern('intVal', $params['prod_cate_id']) == false) { return Util::returnArrEr('params error'); } /**获取产品品类信息*/ $prodCate = new ProdCategory(); $prodInfo = $prodCate->getProdDetail($params['prod_cate_id']); if (!isset($prodInfo['category_id']) || $prodInfo['category_id'] != 4) { return Util::returnArrEr('该产品不是巴士自由行产品!'); } /**获取的品类的产品列表*/ $getProdArr = $this->getProdArr($prodInfo, $params['date']); if ($getProdArr['flag'] == false) { return $getProdArr; } $return['prod_arr'] = $getProdArr['data']; /**获取保险**/ $getTripDays = $this->getTripDays($params['prod_cate_id'], $params['date']); if ($getTripDays['flag'] == false) { return $getTripDays; } $return['price'] = $getTripDays['data']['price']; return Util::returnArrSu('', $return); } /** * Des:获取品类的产品列表 * Name: getProdArr * @param $prodInfo * @param $date * @return array * @author 倪宗锋 */ public function getProdArr($prodInfo, $date) { $prodMain = new ProdMain(); $prodArray = $prodMain->getProdArr($prodInfo['pro_cate_id']);//获取本地存储的巴士自由行品类下的巴士自由行产品 if (empty($prodInfo['sign']) == false) { $result = $this->getCsPro($prodInfo, $date); if (!isset($result['code']) || $result['code'] != '0' || count($result['list']) == 0) { return Util::returnArrEr('系统繁忙,请稍后再试!'); } //对数据进行整合 $csProdArr = $result['list']; foreach ($prodArray as $key => $val) { $prod = false; foreach ($csProdArr as $csVal) { if ($csVal['prod_id'] == $val['bus_id']) { if (Util::checkPattern('intVal', $csVal['ticket_num'])) { $prod = true; $lastId = substr($csVal['prod_id'], -1, 1); if ($lastId == 1) { $prodArray[$key]['is_chen'] = 1; } else { $prodArray[$key]['is_chen'] = 0; } $prodArray[$key]['ticket_all_num'] = $csVal['ticket_all_num']; $prodArray[$key]['prod_count'] = $csVal['ticket_num']; $prodArray[$key]['prod_price'] = $csVal['ticket_price']; break; } } } if ($prod == false) {//当这个产品在cs那边不存在的话 则删除该产品 unset($prodArray[$key]); } } $prodArray = array_values($prodArray); } foreach($prodArray as &$v){ $v['prod_price'] = $this->dealFloat($v['prod_price']); } return Util::returnArrSu('', $prodArray); } /** * Des:获取cs巴士自由行产品 * Name: getCsPro * @param $prodInfo * @param $date * @return array * @author 倪宗锋 */ public function getCsPro($prodInfo, $date) { $siteConfig = Util::getSiteConfig(); $time = time(); $data = [ 'auth_code' => Util::authCodeForCs($time), 'user_key' => $siteConfig['adm_user_key'], 'user' => $siteConfig['adm_user'], 'user_id' => $siteConfig['adm_user_id'], 'org_id'=> $siteConfig['adm_source_id'], 'request_time' => $time, 'action' => 'get_price_date_by_day', 'sign' => $prodInfo['sign'], 'run_date' => $date ]; $curl = new CurlInterface($data, 4); $result = $curl->execute($siteConfig['adm_host1'] . '/api/wx/', 'POST');//获取cs的巴士自由行产品 return $result; } /** * Des:获取产品价格 * Name: getPrice * @param $params * @return array * @author 倪宗锋 */ public function getPrice($params) { $prodCategory = new ProdCategory(); $getInfo = $prodCategory->getProdDetail($params['pro_cate_id']); if (empty($getInfo['category_id']) || $getInfo['category_id'] != 4 || empty($getInfo['sign'])) { return Util::returnArrEr('该产品不是巴士自由行产品!'); } $prodMain = new ProdMain(); $prodArr = $prodMain->getProdForCsFreeWalk($params['prod_arr']); if (count($prodArr) == 0) { return Util::returnArrEr('请选择产品!'); } $data = [ 'sign' => $getInfo['sign'], 'date' => $params['start_date'], 'prod_arr' => json_encode($prodArr), 'action' => 'get_tourist_pay_total' ]; $getPrice = Util::sendCs($data, '/api/wx/', 2); if (!isset($getPrice['code']) || $getPrice['code'] != 0 || empty($getPrice['data']['list']['total_money'])) { $msg = '库存不足!'; return Util::returnArrEr($msg); } $total_money = ceil($getPrice['data']['list']['total_money']); return Util::returnArrSu('', ['total_money' => $total_money]); } /** * Function Description:根据prod_cate_id获取自由行保险价格 * Function Name: getTripDays * @param $pro_cate_id * @return array * @author 田玲菲 */ public function getTripDays($pro_cate_id, $run_date) { $prodCategory = new ProdCategory(); $result = $prodCategory->getFreeWalkSign($pro_cate_id); $sign = $result['sign']; /**调用cs获取行程列表接口 获取行程保险价格*/ $sendData = [ 'sign' => $sign, 'run_date' => $run_date, 'action' => 'get_trip_days_insurance' ]; $getPrice = Util::sendCs($sendData, '/api/wx/', 2);//cs接口调用通用函数 if ($getPrice['flag'] == false) {//如果接口调用失败 return Util::returnArrEr('获取保险价格失败!'); } /**获取cs行程列表数据*/ if ($getPrice['code'] == 0) { return Util::returnArrSu('', ['price' => $getPrice['data']['price']]); } else { return Util::returnArrEr('获取价格失败:' . $getPrice['data']['info']); } } /** * Function Description:处理价格 * Function Name: dealFloat * @param $float * * @return float * * @author LUOCJ */ public function dealFloat($float) { $int = floor($float); if ($float - $int == 0) { $float = $int; } return $float; } }