fix(partner): 创客协同第1代按下级实得进阶奖计算
同级第1代不再用等级标准基数,改为下级本单实际拿到的创客进阶奖乘比例。 Co-authored-by: Cursor <cursoragent@cursor.com>
这个提交包含在:
@@ -58,6 +58,7 @@ class MakerPeerTest
|
||||
$this->testInactiveIntermediaryCascade();
|
||||
$this->testV1PeerCascade();
|
||||
$this->testMultiSegmentPeers();
|
||||
$this->testV6PartialDiffPeerReward();
|
||||
|
||||
echo "\n--------------------------------------------------------\n";
|
||||
echo "测试执行结果: 通过 {$this->passed} 项, 失败 {$this->failed} 项\n";
|
||||
@@ -372,9 +373,9 @@ class MakerPeerTest
|
||||
$eAmount = $eReward ? floatval($eReward['amount']) : 0;
|
||||
|
||||
$this->assert(
|
||||
$bAmount == 2.00 && $dAmount == 6.00 && $eAmount == 0.60,
|
||||
$bAmount == 2.00 && $dAmount == 4.00 && $eAmount == 0.40,
|
||||
$testName,
|
||||
"B(V1平级1)={$bAmount}(期2.00), D(V3平级1)={$dAmount}(期6.00), E(V3平级2)={$eAmount}(期0.60)"
|
||||
"B(V1平级1)={$bAmount}(期2.00), D(V3平级1)={$dAmount}(期4.00), E(V3平级2)={$eAmount}(期0.40)"
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
$this->assert(false, $testName, "异常: " . $e->getMessage());
|
||||
@@ -382,6 +383,48 @@ class MakerPeerTest
|
||||
Db::rollback();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试 7:HL9777场景——V6创客实际拿60进阶奖(120-60),上位同级V6拿实得收益的10%即6元
|
||||
*/
|
||||
public function testV6PartialDiffPeerReward()
|
||||
{
|
||||
$testName = "场景7: V6创客实拿60元进阶奖,上位平级V6按实得10%拿6.00元";
|
||||
|
||||
Db::startTrans();
|
||||
try {
|
||||
$order = ['id' => 9907, 'user_id' => 66];
|
||||
$buyerId = 66;
|
||||
$chain = [
|
||||
['user_id' => 9, 'level' => 4], // V3
|
||||
['user_id' => 4, 'level' => 7], // V6 (实得120-60=60)
|
||||
['user_id' => 2, 'level' => 7], // V6 (同级平级,应得60*10%=6元)
|
||||
];
|
||||
|
||||
$diffResult = [
|
||||
'seen' => 120.0,
|
||||
'paid' => [
|
||||
['user_id' => 9, 'level' => 4, 'cap' => 60.0, 'amount' => 60.0],
|
||||
['user_id' => 4, 'level' => 7, 'cap' => 120.0, 'amount' => 60.0],
|
||||
]
|
||||
];
|
||||
|
||||
$active = new MockActiveService();
|
||||
$reward = new MakerPeerReward();
|
||||
$reward->run($order, $buyerId, $chain, $diffResult, $active);
|
||||
|
||||
$peerReward = Db::name('shopro_partner_reward')->where('order_id', 9907)->where('user_id', 2)->find();
|
||||
$peerAmount = $peerReward ? floatval($peerReward['amount']) : 0;
|
||||
$peerExt = $peerReward ? json_decode($peerReward['ext'], true) : [];
|
||||
|
||||
$pass = ($peerAmount == 6.00) && (($peerExt['generation'] ?? 0) == 1);
|
||||
$this->assert($pass, $testName, "上位V6平级金额={$peerAmount}(期6.00)");
|
||||
} catch (\Exception $e) {
|
||||
$this->assert(false, $testName, "异常: " . $e->getMessage());
|
||||
} finally {
|
||||
Db::rollback();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 执行测试
|
||||
|
||||
在新工单中引用
屏蔽一个用户