49 行
1.6 KiB
PHP
49 行
1.6 KiB
PHP
<?php
|
|
|
|
namespace addons\shopro\service\partner;
|
|
|
|
/**
|
|
* 创客进阶奖:梯度进阶,不活跃不占基数
|
|
*/
|
|
class MakerDiffReward
|
|
{
|
|
public function run($order, $buyerId, $chain, ActiveService $active)
|
|
{
|
|
$bonus = PartnerConfig::makerBonus();
|
|
$seen = 0;
|
|
$paid = [];
|
|
|
|
foreach ($chain as $node) {
|
|
if (intval($node['level']) < 2) {
|
|
continue;
|
|
}
|
|
$role = 'maker';
|
|
$cap = (float) ($bonus[$node['level']] ?? 0);
|
|
if (!$active->isActive($node['agent'] ?? $node)) {
|
|
PartnerRewardService::writeSkip($order, $buyerId, $node['user_id'], 'maker_diff', $role, 'inactive_30d', '创客 30 日无自购,不占进阶基数');
|
|
continue;
|
|
}
|
|
if ($cap <= $seen) {
|
|
PartnerRewardService::writeSkip($order, $buyerId, $node['user_id'], 'maker_diff', $role, 'cap_not_higher', "当前基数 {$seen},等级基数 {$cap}");
|
|
continue;
|
|
}
|
|
$pay = round($cap - $seen, 2);
|
|
PartnerRewardService::account($order, $buyerId, $node['user_id'], 'maker_diff', $role, $pay, $cap, [
|
|
'formula' => "创客进阶 {$cap} - {$seen} = {$pay}",
|
|
'seen_before' => $seen,
|
|
'cap' => $cap,
|
|
'level' => $node['level'],
|
|
]);
|
|
$seen = $cap;
|
|
$paid[] = [
|
|
'user_id' => $node['user_id'],
|
|
'level' => $node['level'],
|
|
'cap' => $cap,
|
|
'amount' => $pay,
|
|
];
|
|
}
|
|
|
|
return ['seen' => $seen, 'paid' => $paid];
|
|
}
|
|
}
|