满减的问题的
公司项目叫我做一个功能,临时优惠就是满多少减多少。
价格区间要动态增加删除,如图所示
忽略那个标题,因为今天是冬至,我胡乱写的。由于数据是动态,我直接序列号json存进去。实在太方便。
接着是前端ajax获取优惠哪个区间的问题?刚开始有点头疼,想这个算法改怎么写。主要是这个区间并不是固定,是由客户自己添加的。为什么写什么算法,弄一个数组存放最大优惠价格区间不就行了。
封装个方法:参数是价格和公司的id,如果成功则返回优惠后的价格,否则返回0. 本来想直接返回金额,但是就不知道价格有没有优惠
代码例子:
// 抵扣多少优惠 public function calcCompanyDiscount($money, $companyid){ if(empty($companyid) || empty($money)){ return 0; } global $_W; if (empty($uniacid)) { $uniacid = $_W['MainUniacid']; } $data = $this->getCompanyDiscount($companyid); if($data){ $now = time(); $max_arr = []; if($data['data_status'] == 1 && $now >= strtotime($data['data_activityTime']['start']) && $now < strtotime($data['data_activityTime']['end']) ){ if($data['data_discountMoney'] && is_array($data['data_discountMoney'])){ foreach ($data['data_discountMoney'] as $k=>$v){ if($money >= $v['fullMoney']){ $max_arr['fullMoney'] = $v['fullMoney']; $max_arr['minusMoney'] = $v['minusMoney']; $max_arr['discountMoney'] = $v['discountMoney']; } } } if(!empty($max_arr) && is_array($max_arr)){ if($money >= $max_arr['fullMoney']){ $money -= $max_arr['minusMoney']; if($max_arr['discountMoney'] >= 1 && $max_arr['discountMoney'] <= 9){ $money = $money * ($max_arr['discountMoney'] / 10); } return $money; } } } }else{ return 0; } }