修复:平台抽成金额设置为固定金额时,抽成金额计算错误(未乘以购买数量)

This commit is contained in:
wuhui_zzw 2024-02-18 11:03:50 +08:00
parent 93d507182d
commit 4c9a1153f2
2 changed files with 9 additions and 7 deletions

View File

@ -69,7 +69,7 @@ return [
],
// 订单核销成功事件触发
'order.verify' => [
// 酒卡额度解冻
// 订单核销成功 - 平台抽成相关冻结内容解冻
'app\listener\platformCommission\OrderTakeEvent'
],
],

View File

@ -21,6 +21,7 @@ class OrderPaySuccessEvent{
$groupOrder = $groupOrder['groupOrder'];
try{
Log::info('支付成功 - 平台抽成处理 - 开始: '.var_export(['uid'=>$groupOrder->uid,'group_order_id'=>$groupOrder->group_order_id],1));
// 订单支付成功 - 平台抽成处理
$this->orderPaySuccessHandle($groupOrder);
// 订单支付成功 触发购买商品升级
Queue::push(UserBrokerageLevelJob::class,[
@ -71,17 +72,17 @@ class OrderPaySuccessEvent{
if($productInfo->platform_commission_switch == 1){
// 独立设置
if($productInfo->platform_commission_type == 1) {
// 固定金额
$platformCommissionMoney = $productInfo->platform_commission_money;
// 固定金额 最终抽成金额需要乘以购买数量
$platformCommissionMoney = (float)sprintf("%.3f",$productInfo->platform_commission_money * $orderProductInfo->product_num);
}else{
// 独立比例
$platformCommissionRate = $productInfo->platform_commission_rate;
$platformCommissionMoney = (float)sprintf("%.2f",$orderTotalPrice * $platformCommissionRate / 100);
$platformCommissionMoney = (float)sprintf("%.3f",$orderTotalPrice * $platformCommissionRate / 100);
}
}else{
// 统一设置 获取商户设置抽成比例 获取抽成总金额
$platformCommissionRate = (float)Merchant::getDB()->where('mer_id', $orderInfo->mer_id)->value('platform_commission');
$platformCommissionMoney = (float)sprintf("%.2f",$orderTotalPrice * $platformCommissionRate / 100);
$platformCommissionMoney = (float)sprintf("%.3f",$orderTotalPrice * $platformCommissionRate / 100);
}
// 使用商品售价进行处理
if($platformCommissionMoney > 0){
@ -113,9 +114,10 @@ class OrderPaySuccessEvent{
->where('type', 'order')
->where('category', 'mer_lock_money')
->where('pm', 1)
->dec('number',$platformCommissionMoney) ->update();
->dec('number',$platformCommissionMoney)
->update();
} else {
Merchant::where('mer_id', $orderInfo->mer_id)->dec('mer_money',$platformCommissionMoney) ->update();
Merchant::where('mer_id', $orderInfo->mer_id)->dec('mer_money',$platformCommissionMoney)->update();
}
}
}