fix(partner): 创客协同第1代按下级实得进阶奖计算

同级第1代不再用等级标准基数,改为下级本单实际拿到的创客进阶奖乘比例。

Co-authored-by: Cursor <cursoragent@cursor.com>
这个提交包含在:
chen
2026-10-22 08:58:26 +08:00
父节点 092155c645
当前提交 ecdee1f53a
共有 2 个文件被更改,包括 53 次插入 和 8 次删除

查看文件

@@ -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();
}
}
}
// 执行测试