|
- <?php
- /**
- *
- * ============================================================================
- * * 版权所有 蜘蛛出行 * *
- * 网站地址: http://www.zhizhuchuxing.com
- * ----------------------------------------------------------------------------
- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
- * 使用;不允许对程序代码以任何形式任何目的的再发布。
- * ============================================================================
- * Author By: 倪宗锋
- * PhpStorm FreeWalker.php
- * Create By 2017/7/8 15:33 $
- */
-
- namespace zzcx\service\home;
-
-
- use common\models\ProdCategory;
- use common\models\ProdImg;
- use common\models\ProdMain;
- use common\util\CurlInterface;
- use common\util\Util;
-
- class FreeWalker
- {
-
- /**
- * Des:获取巴士自由行产品数据
- * Name: getSearch
- * @param $param
- * @return array
- * @author 倪宗锋
- */
- public function getSearch($param)
- {
- $homeLog = require ROOT_PATH . '/zzcx/config/home_' . YII_ENV . '_config.php';
- $param['cms_id'] = $homeLog['free_walker']['cms_id'];
- $prodCate = new ProdCategory();
- $menPList = $prodCate->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;
- }
- }
|