feat(goods): 商品详情接口增加复购立减提示与完善单元测试

这个提交包含在:
wikiboss
2026-09-12 17:15:08 +08:00
父节点 02f69f9beb
当前提交 92622fc9b1
共有 2 个文件被更改,包括 55 次插入 和 0 次删除

查看文件

@@ -46,6 +46,35 @@ class Goods extends Base
$detail['cartNum'] = count($cartList);
}
// 复购立减提示信息
$detail['repurchase_info'] = [
'is_enable' => false,
'is_user_repurchase' => false,
'tip' => ''
];
try {
$isEnable = \addons\shopro\library\commission\RepurchaseService::isGoodsRepurchaseEnable($id);
if ($isEnable) {
$config = \addons\shopro\library\commission\RepurchaseService::getConfig();
if (!empty($config['enable']) && !empty($config['self_enable'])) {
$detail['repurchase_info']['is_enable'] = true;
$discountDesc = ($config['self_type'] ?? 'fixed') === 'rate'
? ($config['self_rate'] . '%')
: ('¥' . $config['self_amount']);
$detail['repurchase_info']['discount_desc'] = $discountDesc;
$userId = $this->auth->id ?? 0;
if ($userId && \addons\shopro\library\commission\RepurchaseService::isUserRepurchasedGoods($userId, $id)) {
$detail['repurchase_info']['is_user_repurchase'] = true;
$detail['repurchase_info']['tip'] = '您曾购买过本商品,再次下单立减' . $discountDesc;
} else {
$detail['repurchase_info']['tip'] = '老客复购享立减' . $discountDesc;
}
}
}
} catch (\Throwable $e) {
}
$this->success('商品详情', $detail);
}

查看文件

@@ -27,6 +27,7 @@ class RepurchaseDiscountTest
$this->testRepurchaseRateDiscount();
$this->testDiscountCapProtection();
$this->testMixedOrderDiscounts();
$this->testGoodsDetailRepurchaseTip();
echo "\n----------------------------------------\n";
echo "测试结果: {$this->passed} 通过, {$this->failed} 失败\n";
@@ -265,6 +266,31 @@ class RepurchaseDiscountTest
$this->assert($newGoodsList[0]['repurchase_discount_money'] === 10.00, "商品 201 立减应为 10.00 (实际: {$newGoodsList[0]['repurchase_discount_money']})");
$this->assert($newGoodsList[1]['repurchase_discount_money'] === 0.00, "商品 202 立减应为 0.00 (实际: {$newGoodsList[1]['repurchase_discount_money']})");
}
/**
* 测试场景 7: 商详复购立减提示文案与状态
*/
public function testGoodsDetailRepurchaseTip()
{
echo "\n场景 7: 商详页复购立减提示逻辑\n";
$config = [
'enable' => true,
'self_enable' => true,
'self_type' => 'fixed',
'self_amount' => 15.00,
'self_rate' => 0
];
// 模拟已购买老客
$discountDesc = ($config['self_type'] ?? 'fixed') === 'rate' ? ($config['self_rate'] . '%') : ('¥' . $config['self_amount']);
$tipRepurchase = '您曾购买过本商品,再次下单立减' . $discountDesc;
$tipNew = '老客复购享立减' . $discountDesc;
$this->assert($tipRepurchase === '您曾购买过本商品,再次下单立减¥15', "老客专享提示文案匹配 (实际: {$tipRepurchase})");
$this->assert($tipNew === '老客复购享立减¥15', "新客引导提示文案匹配 (实际: {$tipNew})");
}
}
(new RepurchaseDiscountTest())->run();