文件
Henglianshutong/addons/shopro/service/partner/MakerDiffReward.php

49 行
1.6 KiB
PHP

<?php
namespace addons\shopro\service\partner;
/**
* 创客极差:水位差,不活跃不抬 seen
*/
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];
}
}