/**
* 获取动态价格节点数据
* @param type $pid
* @param type $qbdate
* @param type $qedate
* @return type
*/publicfunctionget_data($pid,$qbdate="",$qedate=""){//查询时间容错if($qbdate>$qedate){$tmpdate=$qbdate;$qbdate=$qedate;$qedate=$tmpdate;}$today=mktime(0,0,0,date('m'),date('d'),date('Y'));//is_date 是app functions global.funs.php中的自定义函数if(empty($qbdate)||!is_date($qbdate))$qbdate=strtotime("-60 days",$today);//默认查询开始年份if(empty($qedate)||!is_date($qedate))$qedate=strtotime("+60 days",$today);//获取景点信息$this->table_name=$this->db_tablepre.'travel_scenic';$pid=intval($pid);if(!$pid)returnfalse;$r=$this->get_one(array('id'=>$pid));$data['pid']=$r['id'];$data['title']=$r['title'];$data['price']=$r['price'];$data['cost']=$r['cost'];$data['qbdate']=$qbdate;$data['qedate']=$qedate;$days=ceil(abs($qbdate-$qedate)/86400);//查询开始日期与结束日期的天数//给时间段内的数组赋初值(基本价格)for($i=0;$i<=$days;$i++){$the_day=strtotime("+".$i." days",$qbdate);$y=intval(date('Y',$the_day));$m=intval(date('m',$the_day));$d=intval(date('d',$the_day));$price_data[$y.'_'.$m.'_'.$d]=$data['price'];$cost_data[$y.'_'.$m.'_'.$d]=$data['cost'];$desc_data[$y.'_'.$m.'_'.$d]="";}//SQL查询准备$qbyear=date('Y',$qbdate);$qbmonth=date('m',$qbdate);$qbday=date('d',$qbdate);$qeyear=date('Y',$qedate);$qemonth=date('m',$qedate);$qeday=date('d',$qedate);$this->table_name='travel_scenic_dynprice';//此处用循环来解决跨年度查询的问题,每次查询一年的,然后合并;for($qyear=$qbyear;$qyear<=$qeyear;$qyear++){$this->query("select*,
DATE_FORMAT(concat(CASE byear WHEN 0 THEN '".$qyear."' ELSE byear END ,'-',bmonth,'-',bday),'%Y-%m-%d') as bdate,
DATE_FORMAT(concat(CASE eyear WHEN 0 THEN '".$qyear."' ELSE eyear END ,'-',emonth,'-',eday),'%Y-%m-%d') as edate
from phpcms_travel_scenic_dynprice
where pid=".$pid." and priority=1 and status=1
and DATE_FORMAT(concat(CASE byear WHEN 0 THEN '".$qyear."' ELSE byear END ,'-',bmonth,'-',bday),'%Y-%m-%d') >='".$qbyear."-".$qbmonth."-".$qbday."'
and DATE_FORMAT(concat(CASE eyear WHEN 0 THEN '".$qyear."' ELSE eyear END ,'-',emonth,'-',eday),'%Y-%m-%d')<='".$qeyear."-".$qemonth."-".$qeday."'
order by id asc");$r2=$this->fetch_array();foreach($r2as$key=>$value){$tmp_bdate=strtotime($r2[$key]['bdate']);$tmp_edate=strtotime($r2[$key]['edate']);$days=ceil(abs($tmp_bdate-$tmp_edate)/86400);//echo $days;for($i=0;$i<=$days;$i++){$the_day=strtotime("+".$i." days",$tmp_bdate);$y=intval(date('Y',$the_day));$m=intval(date('m',$the_day));$d=intval(date('d',$the_day));$price_data[$y.'_'.$m.'_'.$d]=$r2[$key]['dynprice'];$cost_data[$y.'_'.$m.'_'.$d]=$r2[$key]['dyncost'];$desc_data[$y.'_'.$m.'_'.$d]=$r2[$key]['description'];}}//合并每年的数组$price_data+=$price_data;$cost_data+=$cost_data;}//print_r($price_data);//此处针对特定时间的价格进行处理。$this->query("select*,
DATE_FORMAT(concat(byear ,'-',bmonth,'-',bday),'%Y-%m-%d') as bdate,
DATE_FORMAT(concat(eyear,'-',emonth,'-',eday),'%Y-%m-%d') as edate
from phpcms_travel_scenic_dynprice
where pid=".$pid." and priority=2 and status=1
and DATE_FORMAT(concat(byear,'-',bmonth,'-',bday),'%Y-%m-%d') >='".$qbyear."-".$qbmonth."-".$qbday."'
and DATE_FORMAT(concat(eyear,'-',emonth,'-',eday),'%Y-%m-%d')<='".$qeyear."-".$qemonth."-".$qeday."'
order by id asc");$r3=$this->fetch_array();foreach($r3as$key=>$value){$tmp_bdate=strtotime($r3[$key]['bdate']);$tmp_edate=strtotime($r3[$key]['edate']);$days=ceil(abs($tmp_bdate-$tmp_edate)/86400);for($i=0;$i<=$days;$i++){$the_day=strtotime("+".$i." days",$tmp_bdate);//echo date("Y-m-d",$the_day)." ";$y=intval(date('Y',$the_day));$m=intval(date('m',$the_day));$d=intval(date('d',$the_day));$price_data[$y.'_'.$m.'_'.$d]=$r3[$key]['dynprice'];$cost_data[$y.'_'.$m.'_'.$d]=$r3[$key]['dyncost'];$desc_data[$y.'_'.$m.'_'.$d]=$r3[$key]['description'];}}//去除price_data和cost_data连续都相同的节点$i=1;$count=count($price_data);foreach($price_dataas$key=>$value){if($i==1){$first_node=$price_data[$key];$first_node2=$cost_data[$key];}if($i!=1&&$i!=$count){if($price_data[$key]==$first_node&&$cost_data[$key]==$first_node2){unset($price_data[$key]);unset($cost_data[$key]);unset($desc_data[$key]);}else{$first_node=$price_data[$key];$first_node2=$cost_data[$key];}}$i++;}$data['price_data']=$price_data;$data['cost_data']=$cost_data;$data['desc_data']=$desc_data;//print_r($data);return$data;}/**
* 根据数据生成chart所需的data数据
* @param type $data
* @return type
*/publicfunctionget_chartdata($data){$price_data=$data['price_data'];$cost_data=$data['cost_data'];$desc_data=$data['desc_data'];$chartdata="[";foreach($price_dataas$key=>$value){$keys=explode("_",$key);$chartdata.="[new Date(".$keys[0].", ".($keys[1]-1).", ".$keys[2]."), ".$price_data[$key].",'".$desc_data[$key]."'],";}$chartdata=rtrim($chartdata,',').']';$chartdata2="[";foreach($cost_dataas$key=>$value){$keys=explode("_",$key);$chartdata2.="[new Date(".$keys[0].", ".($keys[1]-1).", ".$keys[2]."), ".$cost_data[$key].",'".$desc_data[$key]."'],";}$chartdata2=rtrim($chartdata2,',').']';returnarray('pid'=>$data['pid'],'title'=>$data['title'],'qbdate'=>$data['qbdate'],'qedate'=>$data['qedate'],'chartprice'=>$chartdata,'chartcost'=>$chartdata2);}