|
|
|
@ -611,9 +611,10 @@ class ZoneLogic |
|
|
|
*/ |
|
|
|
protected static function judgeUserRate():array |
|
|
|
{ |
|
|
|
$residue_amount = 0; |
|
|
|
$usage_rate = 0; |
|
|
|
try { |
|
|
|
$rate = SettingModel::settingLoad('amount_probability') ?: '0.5'; |
|
|
|
$residue_amount = 0; |
|
|
|
|
|
|
|
# 最近一次充值金额 |
|
|
|
$lastRechargeAmount = RechargeRecords::lastRechargeAmount([['user_id','=',self::$user_id]]); |
|
|
|
@ -623,6 +624,7 @@ class ZoneLogic |
|
|
|
|
|
|
|
$recharge_time = $lastRechargeAmount['recharge_time']; // 充值时间 |
|
|
|
$recharge_amount = $lastRechargeAmount['recharge_amount']; // 充值金额 |
|
|
|
$usage_amount = $lastRechargeAmount['usage_amount']; // 充值金额 |
|
|
|
$estimate_awards_amount = round($recharge_amount * $rate,2); // 预估中奖金额 |
|
|
|
|
|
|
|
# 充值后消费金额 |
|
|
|
@ -643,6 +645,19 @@ class ZoneLogic |
|
|
|
return ['status' => 1]; |
|
|
|
} |
|
|
|
|
|
|
|
# 使用金额充值金额占比 |
|
|
|
$usage_amount_rate = round($usage_amount / $recharge_amount,4); |
|
|
|
# 中奖金额小于预估金额 且 使用占比 展示小于 中奖概率时 加码 |
|
|
|
$rateHalf = round($rate / 2,4); |
|
|
|
if ($sum_amount < $estimate_awards_amount && $usage_amount_rate > $rateHalf && $usage_amount_rate < $rate) { |
|
|
|
$usage_rate = round($sum_amount / $recharge_amount,4); |
|
|
|
} |
|
|
|
|
|
|
|
# 如果使用金额概率 达到 中奖概率 加码 |
|
|
|
$temp_rate = round($usage_amount_rate/$rate,4); |
|
|
|
if ($temp_rate >= ($rateHalf + $rate)) { |
|
|
|
$usage_rate = $temp_rate; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} catch (\Exception $e) { |
|
|
|
@ -651,7 +666,8 @@ class ZoneLogic |
|
|
|
|
|
|
|
return [ |
|
|
|
'status' => 0, |
|
|
|
'residue_amount' => $residue_amount |
|
|
|
'residue_amount' => $residue_amount, |
|
|
|
'usage_rate' => $usage_rate |
|
|
|
]; |
|
|
|
} |
|
|
|
|
|
|
|
@ -673,16 +689,18 @@ class ZoneLogic |
|
|
|
$item['awards'] = 0; |
|
|
|
} else { |
|
|
|
//if (($item['amount'] * $sumCount) < $judgeRate['residue_amount']) { |
|
|
|
if ($judgeRate['usage_rate']) { |
|
|
|
$zoneGoodsData = self::$zoneGoodsData; |
|
|
|
$ceilAmount = ceil($item['amount'] / $zoneGoodsData['price']); |
|
|
|
if ($ceilAmount >= 5) { |
|
|
|
$item['probability'] = $item['probability'] * 2; |
|
|
|
}elseif($item['amount'] > $zoneGoodsData['price']) { |
|
|
|
$rand = rand_float(0,$item['probability'] * 3); |
|
|
|
$rand = rand_float(0,$item['probability']); |
|
|
|
$item['probability'] += $rand; |
|
|
|
} else { |
|
|
|
$item['probability'] += rand_float(0,1 - $item['probability']); |
|
|
|
$item['probability'] += rand_float(0,$judgeRate['usage_rate']); |
|
|
|
} |
|
|
|
} |
|
|
|
//} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -698,7 +716,7 @@ class ZoneLogic |
|
|
|
protected static function restrictAmount($selectedPattern,$sumAmount) |
|
|
|
{ |
|
|
|
$judgeRateData = self::$judgeRateData; |
|
|
|
if (!$judgeRateData['status'] && $sumAmount >= $judgeRateData['residue_amount']) { |
|
|
|
if (!$judgeRateData['status'] && $sumAmount > $judgeRateData['residue_amount']) { |
|
|
|
$selectedPattern['id'] = 0; |
|
|
|
$selectedPattern['awards'] = 0; |
|
|
|
} |
|
|
|
|