什么是动态价格(自命名)?--一般来说商品有个固定的价格,随着节假日或者促销活动可能会发生价格变化,结束后又恢复原价,如果每次价格变化都需要修改价格,那么不仅在时间上不好把握,也需要消耗更多的人力。 为了适应这种情况,我们可以给价格在预期的时间段赋予一个新的价格,那么,动态价格就是--给未来的时间段设置一个新的价格,当这个时间到来的时候自动采用新的价格。
要点:
1.优先级:特定时间 > 节假日(不带年份) > 常规价格
2.如何读取数据
3.如何转为图表
效果图:
动态价格添加及列表
核心代码:
public function get_data($pid,$qbdate="",$qedate="")
{
if($qbdate>$qedate){
$tmpdate=$qbdate;
$qbdate=$qedate;
$qedate=$tmpdate;
}
$today=mktime(0,0,0,date('m'),date('d'),date('Y'));
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) return false;
$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]="";
}
$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 ($r2 as $key => $value) {
$tmp_bdate=strtotime($r2[$key]['bdate']);
$tmp_edate=strtotime($r2[$key]['edate']);
$days=ceil(abs($tmp_bdate-$tmp_edate)/86400);
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;
}
$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 ($r3 as $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);
$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'];
}
}
$i=1;
$count=count($price_data);
foreach ($price_data as $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;
return $data;
}
public function get_chartdata($data)
{
$price_data=$data['price_data'];
$cost_data=$data['cost_data'];
$desc_data=$data['desc_data'];
$chartdata="[";
foreach ($price_data as $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_data as $key => $value) {
$keys=explode("_",$key);
$chartdata2.="[new Date(".$keys[0].", ".($keys[1]-1).", ".$keys[2]."), ".$cost_data[$key].",'".$desc_data[$key]."'],";
}
$chartdata2=rtrim($chartdata2,',').']';
return array('pid'=>$data['pid'],
'title'=>$data['title'],
'qbdate'=>$data['qbdate'],
'qedate'=>$data['qedate'],
'chartprice'=>$chartdata,
'chartcost'=>$chartdata2);
}
本文标签:
声明:本文由代码号注册/游客用户【杨舟察】供稿发布,本站不对用户发布的phpcms实现动态价格实现方法代码示例信息内容原创度和真实性等负责。如内容侵犯您的版权或其他权益,请留言并加以说明。站长审查之后若情况属实会及时为您删除。同时遵循 CC 4.0 BY-SA 版权协议,尊重和保护作者的劳动成果,转载请标明出处链接和本声明内容。本文作者:杨舟察» https://www.ebingou.cn/dmh/15597.html
很赞哦! (0)