feat(partner): 全系统收益与分润用词脱敏改造(统一采用奖励规范)

这个提交包含在:
chen
2026-09-17 14:33:49 +08:00
父节点 213be6af25
当前提交 8e84dc3fcc
共有 19 个文件被更改,包括 128 次插入 和 128 次删除

查看文件

@@ -3,7 +3,7 @@
namespace addons\shopro\service\partner;
/**
* 创客极差:水位差,不活跃不抬 seen
* 创客进阶奖:梯度进阶,不活跃不占基数
*/
class MakerDiffReward
{
@@ -20,16 +20,16 @@ class MakerDiffReward
$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 日无自购,不占水位');
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}");
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}",
'formula' => "创客进阶 {$cap} - {$seen} = {$pay}",
'seen_before' => $seen,
'cap' => $cap,
'level' => $node['level'],

查看文件

@@ -3,7 +3,7 @@
namespace addons\shopro\service\partner;
/**
* 创客平级(逐代 10% 递减级联,最低发放不能少于 0.10 元截断)/ 被超越 5%(只一层)
* 创客协同(逐代 10% 递减级联,最低发放不能少于 0.10 元截断)/ 创客卓越 5%(只一层)
*/
class MakerPeerReward
{
@@ -59,7 +59,7 @@ class MakerPeerReward
'maker_peer',
'maker',
'inactive_30d',
"平级创客(第{$gen}代) 30 日无自购"
"协同创客(第{$gen}代) 30 日无自购"
);
} else {
PartnerRewardService::account(
@@ -72,7 +72,7 @@ class MakerPeerReward
$currentBase,
[
'generation' => $gen,
'formula' => "平级(第{$gen}代) {$currentBase} × " . ($peerRate * 100) . "% = {$amount}",
'formula' => "创客协同(第{$gen}代) {$currentBase} × " . ($peerRate * 100) . "% = {$amount}",
'from_user_id' => $sourceUserId,
'level' => $item['level'],
]
@@ -103,14 +103,14 @@ class MakerPeerReward
}
$amount = round((float) $highest['cap'] * $overRate, 2);
if (!$active->isActive($lower['agent'] ?? $lower)) {
PartnerRewardService::writeSkip($order, $buyerId, $lower['user_id'], 'maker_overtaken', 'maker', 'inactive_30d', '被超越创客 30 日无自购');
PartnerRewardService::writeSkip($order, $buyerId, $lower['user_id'], 'maker_overtaken', 'maker', 'inactive_30d', '卓越创客 30 日无自购');
return;
}
if ($amount < $minAmount) {
return;
}
PartnerRewardService::account($order, $buyerId, $lower['user_id'], 'maker_overtaken', 'maker', $amount, $highest['cap'], [
'formula' => "超越奖 最高水位 {$highest['cap']} × " . ($overRate * 100) . "% = {$amount}",
'formula' => "创客卓越 最高基数 {$highest['cap']} × " . ($overRate * 100) . "% = {$amount}",
'from_user_id' => $highest['user_id'],
]);
}

查看文件

@@ -77,46 +77,46 @@ class PartnerConfig
public static function rewardTypeMap()
{
return [
'push3' => '推三返一',
'maker_diff' => '创客极差奖',
'maker_peer' => '创客平级奖',
'maker_overtaken' => '创客超越奖',
'team_venue' => '酒道馆团队奖',
'team_county' => '区县团队奖',
'venue_peer' => '酒道馆平级奖',
'county_peer' => '区县平级奖',
'venue_share' => '酒道馆平台均分',
'county_share' => '区县平台均分',
'madow_share' => '每日分红马豆',
'voucher_grant' => '兑换券发放',
'voucher_release' => '兑换券释放',
'voucher_consume' => '兑换券消费抵扣',
'voucher_consume_refund' => '兑换券退款退还',
'push3' => '推荐开拓奖',
'maker_diff' => '创客进阶奖',
'maker_peer' => '创客协同奖',
'maker_overtaken' => '创客卓越奖',
'team_venue' => '酒道馆运营奖',
'team_county' => '区县统筹奖',
'venue_peer' => '酒道馆协同奖',
'county_peer' => '区县协同奖',
'venue_share' => '酒道馆加权奖励',
'county_share' => '区县加权奖励',
'madow_share' => '每日贡献马豆',
'voucher_grant' => '消费补贴发放',
'voucher_release' => '消费补贴到账',
'voucher_consume' => '消费券抵扣',
'voucher_consume_refund' => '消费券退款退还',
];
}
public static function skipReasonText($code, $forUser = false)
{
$inner = [
'no_parent' => '无直推上级',
'self_buy' => '自购',
'no_parent' => '无推荐上级',
'self_buy' => '本人自购',
'inactive_30d' => '受益人 30 日无自购',
'not_maker' => '不是创客',
'not_venue' => '不是酒道馆',
'not_county' => '不是区县代理',
'cap_not_higher' => '等级未超过水位',
'not_maker' => '不是创客身份',
'not_venue' => '不是酒道馆身份',
'not_county' => '不是区县代理身份',
'cap_not_higher' => '等级未超过基数水位',
'already_settled' => '幂等跳过',
'partner_goods_off' => '商品未参与',
'partner_off' => '结算未开启',
];
$user = [
'no_parent' => '暂无推荐人,不产生推三返一',
'self_buy' => '自己下单不产生推三返一',
'inactive_30d' => '需 30 日内有本人订单才能领取',
'no_parent' => '暂无推荐人,不计提推荐开拓奖',
'self_buy' => '本人下单不计提推荐开拓奖',
'inactive_30d' => '需 30 日内有本人订单才能领取奖励',
'not_maker' => '',
'not_venue' => '',
'not_county' => '',
'cap_not_higher' => '平级不发极差,走平级奖',
'cap_not_higher' => '同阶不计进阶差额,享受协同奖励',
'already_settled' => '',
'partner_goods_off' => '',
'partner_off' => '',

查看文件

@@ -3,7 +3,7 @@
namespace addons\shopro\service\partner;
/**
* 酒道馆 / 区县平级 10% 逐代递减级联,最低发放不能少于 0.10 元截断
* 酒道馆 / 区县协同奖 10% 逐代递减级联,最低发放不能少于 0.10 元截断
*/
class PeerShareReward
{
@@ -62,7 +62,7 @@ class PeerShareReward
$type,
$role,
'inactive_30d',
"{$label}平级(第{$gen}代) 30 日无自购"
"{$label}协同(第{$gen}代) 30 日无自购"
);
} else {
PartnerRewardService::account(
@@ -75,7 +75,7 @@ class PeerShareReward
$currentBase,
[
'generation' => $gen,
'formula' => "{$label}平级(第{$gen}代) {$currentBase} × " . ($rate * 100) . "% = {$amount}",
'formula' => "{$label}协同(第{$gen}代) {$currentBase} × " . ($rate * 100) . "% = {$amount}",
'from_user_id' => $sourceUserId,
]
);

查看文件

@@ -5,26 +5,26 @@ namespace addons\shopro\service\partner;
use app\admin\model\shopro\commission\Agent as AgentModel;
/**
* 推三返一:398/400/600 循环,计到直推上级,自购不发
* 推荐开拓奖:398/400/600 循环,计到推荐人,自购不发
*/
class Push3Reward
{
public function run($order, $buyerId, $parent, ActiveService $active)
{
if (!$parent) {
PartnerRewardService::writeSkip($order, $buyerId, 0, 'push3', 'taster', 'no_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', '自购不产生推三返一');
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', '直推上级不是品酒师/创客');
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 日无自购');
PartnerRewardService::writeSkip($order, $buyerId, $parent['user_id'], 'push3', 'taster', 'inactive_30d', '需 30 日内有本人订单才能领取奖励');
return;
}
@@ -40,7 +40,7 @@ class Push3Reward
$amount = $amounts[($seq - 1) % 3];
PartnerRewardService::account($order, $buyerId, $agent->user_id, 'push3', 'taster', $amount, $amount, [
'formula' => "直推第{$seq}单,循环第" . ((($seq - 1) % 3) + 1) . "档 +{$amount}",
'formula' => "推荐开拓第{$seq}单,循环第" . ((($seq - 1) % 3) + 1) . "档 +{$amount}",
'seq' => $seq,
]);
}

查看文件

@@ -3,7 +3,7 @@
namespace addons\shopro\service\partner;
/**
* 团队拆 100:无馆有县=100;有馆有县=50+50;有馆无县=50
* 统筹运营奖励:无馆有县=100;有馆有县=50+50;有馆无县=50
*/
class TeamSplitReward
{
@@ -26,7 +26,7 @@ class TeamSplitReward
PartnerRewardService::writeSkip($order, $buyerId, $venue['user_id'], 'team_venue', 'venue', 'inactive_30d', '酒道馆 30 日无自购');
} else {
PartnerRewardService::account($order, $buyerId, $venue['user_id'], 'team_venue', 'venue', $venueSplit, $venueSplit, [
'formula' => "酒道馆团队拆分 {$venueSplit}",
'formula' => "酒道馆运营奖 {$venueSplit}",
]);
$result['venue'] = ['user_id' => $venue['user_id'], 'amount' => $venueSplit, 'index' => $venue['index']];
}
@@ -38,7 +38,7 @@ class TeamSplitReward
PartnerRewardService::writeSkip($order, $buyerId, $county['user_id'], 'team_county', 'county', 'inactive_30d', '区县 30 日无自购');
} else {
PartnerRewardService::account($order, $buyerId, $county['user_id'], 'team_county', 'county', $amount, $amount, [
'formula' => $venue ? "区县团队拆分 {$amount}(馆上)" : "无馆区县全额 {$amount}",
'formula' => $venue ? "区县统筹奖 {$amount}(馆上)" : "区县统筹奖 {$amount}(直达)",
]);
$result['county'] = ['user_id' => $county['user_id'], 'amount' => $amount, 'index' => $county['index']];
}