經常有客戶反應,我這件商品利潤大 想讓用戶多抵扣一點積分,這件商品沒有利潤不想讓用戶用積分抵扣,對于這種需求,最簡單粗暴的方法就是把最高可抵扣積分數量放在商品里面來設置。
假設A商品利潤空間大,我設置最高可抵扣50積分,B商品利潤空間少,我設置可抵扣10積分或設置0積分不給抵扣
二開地方
代碼:
/**
* 使用積分
* @param $useIntegral
* @param $userInfo
* @param $payPrice
* @param $other
* @return array
*/
public function useIntegral(bool $useIntegral, $userInfo, string $payPrice, array $other, array $cartInfo = [])
{
/** @var UserBillServices $userBillServices */
$userBillServices = app()->make(UserBillServices::class);
// 可用積分
$usable = bcsub((string)$userInfo['integral'], (string)$userBillServices->getBillSum(['uid' => $userInfo['uid'], 'is_frozen' => 1]), 0);
$SurplusIntegral = $usable;
if ($useIntegral && $userInfo['integral'] > 0 && $other['integralRatio'] > 0) {
// 獲取商品最高可抵扣積分數
$integralMaxNum = 0;
foreach ($cartInfo as $val) {
$integralMaxNum = bcadd($integralMaxNum, bcmul($val['productInfo']['max_integral'], $val['cart_num']));
}
if ($integralMaxNum > 0 && $userInfo['integral'] > $integralMaxNum) {
$integral = $integralMaxNum;
} else {
$integral = $userInfo['integral'];
}
if ($integralMaxNum <= 0) {
// 給默認后臺設置的抵扣積分
$integral = sys_config('integral_max_num', 200);
}
$deductionPrice = (float)bcmul((string)$integral, (string)$other['integralRatio'], 2);
if ($deductionPrice < $payPrice) {
$payPrice = bcsub((string)$payPrice, (string)$deductionPrice, 2);
$usedIntegral = $integral;
} else {
$deductionPrice = $payPrice;
$usedIntegral = (int)ceil(bcdiv((string)$payPrice, (string)$other['integralRatio'], 2));
$payPrice = 0;
}
$deductionPrice = $deductionPrice > 0 ? $deductionPrice : 0;
$usedIntegral = $usedIntegral > 0 ? $usedIntegral : 0;
$SurplusIntegral = (int)bcsub((string)$usable, $usedIntegral, 0);
} else {
$deductionPrice = 0;
$usedIntegral = 0;
}
if ($payPrice <= 0) $payPrice = 0;
return [$payPrice, $deductionPrice, $usedIntegral, $SurplusIntegral];
}
云管家網絡科技有限公司專注CRMEB商城系統二次開發、分銷商城系統開發、城市代理開發等多種應用場景定制開發。