您当前的位置:首页 > CMS常见问题 > ecshop常见问题 >

ecshop取得商品最终使用价格

0
<?php
//取得商品最终使用价格
//param string goods_id 商品编号
//param string goods_num 购买数量
//param boolean is_spec_price 是否加入规格价格
//param mix spec 规格ID的数组或者逗号分隔的字符串
//return 商品最终购买价格
function get_final_price($goods_id, $goods_num='1', $is_spec_price=false, $spec=array())
{
  $final_price='0';//商品最终购买价格
  $volume_price='0';//商品优惠价格
  $promote_price='0';//商品促销价格
  $user_price='0';//商品会员价格
  $price_list=get_volume_price_list($goods_id,'1');//取得商品优惠价格列表
  if(!empty($price_list)){
    foreach($price_list as $value){
      if($goods_num >= $value['number']){
        $volume_price=$value['price'];
      }
    }
  }
  //取得商品促销价格列表
  //取得商品信息
  $sql='select 
          g.promote_price,
          g.promote_start_date,
          g.promote_end_date,
          IFNULL(mp.user_price, g.shop_price * '.$_SESSION['discount'].') as shop_price 
        from '.$GLOBALS['ecs']->table('goods').' as g 
        left join '.$GLOBALS['ecs']->table('member_price')." as mp 
        on mp.goods_id = g.goods_id and mp.user_rank='".$_SESSION['user_rank']."' where g.goods_id='".$goods_id."' and g.is_delete=0";
  $goods=$GLOBALS['db']->getRow($sql);
  //计算商品的促销价格
  if($goods['promote_price'] > 0){
    $promote_price=bargain_price($goods['promote_price'], $goods['promote_start_date'], $goods['promote_end_date']);
  }else{
    $promote_price=0;
  }
  $user_price=$goods['shop_price'];//取得商品会员价格列表
  //比较商品的优惠价格,促销价格,会员价格
  if(empty($volume_price) && empty($promote_price))
  {
    $final_price=$user_price;
  }elseif(!empty($volume_price) && empty($promote_price))
  {
    $final_price=min($volume_price, $user_price);
  }elseif(empty($volume_price) && !empty($promote_price))
  {
    $final_price=min($promote_price, $user_price);
  }elseif(!empty($volume_price) && !empty($promote_price))
  {
    $final_price=min($volume_price, $promote_price, $user_price);
  }else{
    $final_price=$user_price;
  }
  //如果需要加入规格价格
  if($is_spec_price){
    if(!empty($spec)){
      $spec_price=spec_price($spec);
      $final_price+=$spec_price;
    }
  }
  return $final_price;
}
?>
顶部中部底部