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

57 行
2.1 KiB
PHP

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
namespace addons\shopro\service\partner;
use app\admin\model\shopro\commission\Agent as AgentModel;
/**
* 推三返一:398/400/600 循环,计到直推上级,自购不发
*/
class Push3Reward
{
public function run($order, $buyerId, $parent, ActiveService $active)
{
if (!$parent) {
PartnerRewardService::writeSkip($order, $buyerId, 0, 'push3', 'taster', 'no_parent', '无直推上级');
return;
}
if (intval($parent['user_id']) === intval($buyerId)) {
PartnerRewardService::writeSkip($order, $buyerId, $parent['user_id'], 'push3', 'taster', 'self_buy', '自购不产生推三返一');
return;
}
if (intval($parent['level']) < 1) {
PartnerRewardService::writeSkip($order, $buyerId, $parent['user_id'], 'push3', 'taster', 'no_parent', '直推上级不是品酒师/创客');
return;
}
if (!$active->isActive($parent['agent'] ?? $parent)) {
PartnerRewardService::writeSkip($order, $buyerId, $parent['user_id'], 'push3', 'taster', 'inactive_30d', '直推上级 30 日无自购');
return;
}
$agent = AgentModel::where('user_id', $parent['user_id'])->lock(true)->find();
if (!$agent) {
return;
}
$agent->direct_order_seq = intval($agent->direct_order_seq) + 1;
$agent->save();
$amounts = PartnerConfig::push3Amounts();
$seq = intval($agent->direct_order_seq);
$amount = $amounts[($seq - 1) % 3];
PartnerRewardService::account($order, $buyerId, $agent->user_id, 'push3', 'taster', $amount, $amount, [
'formula' => "直推第{$seq}单,循环第" . ((($seq - 1) % 3) + 1) . "档 +{$amount}",
'seq' => $seq,
]);
}
public function rollbackSeq($userId)
{
$agent = AgentModel::where('user_id', $userId)->lock(true)->find();
if ($agent && $agent->direct_order_seq > 0) {
$agent->direct_order_seq = $agent->direct_order_seq - 1;
$agent->save();
}
}
}