在这里,如果$bill->status==1 的话,退款佣金如何核算?是不是少了这种情况呢?
public function descBrokerage(StoreRefundOrder $refundOrder)
{
// 获取用户账单仓库和用户仓库实例
$userBillRepository = app()->make(UserBillRepository::class);
$userRepository = app()->make(UserRepository::class);
// 处理一级佣金退款
if ($refundOrder['extension_one'] > 0) {
// 根据订单ID查询一级佣金账单
$bill = $userBillRepository->getWhere(['category' => 'brokerage', 'type' => 'order_one', 'link_id' => $refundOrder->order_id]);
// 减少订单中的一级佣金金额
$refundOrder->order->extension_one = bcsub($refundOrder->order->extension_one, $refundOrder['extension_one'], 2);
// 如果账单存在且状态不是已退款,则执行佣金扣除操作
$title = $refundOrder->order->activity_type == 4 ? '团员退款' : '用户退款';
if ($bill && $bill->status != 1) {
$userRepository->incBrokerage($bill->uid, $refundOrder['extension_one'], '-');
$userBillRepository->decBill($bill->uid, 'brokerage', 'refund_one', [
'link_id' => $refundOrder->order_id,
'status' => 1,
'title' => $title,
'number' => $refundOrder['extension_one'],
'mark' => $title.'扣除推广佣金' . floatval($refundOrder['extension_one']),
'balance' => 0
]);
}
// 如果账单不存在或状态是已退款,则记录一条财务记录,表示一级佣金的退还
if (!$bill || $bill->status != 1) {
app()->make(FinancialRecordRepository::class)->inc([
'order_id' => $refundOrder->refund_order_id,
'order_sn' => $refundOrder->refund_order_sn,
'user_info' => $bill ? $userRepository->getUsername($bill->uid) : '退还一级佣金',
'user_id' => $bill ? $bill->uid : 0,
'type' => 1,
'financial_type' => 'refund_brokerage_one',
'number' => $refundOrder['extension_one'],
], $refundOrder->mer_id);
}
}
// 处理二级佣金退款
if ($refundOrder['extension_two'] > 0) {
// 根据订单ID查询二级佣金账单
$bill = $userBillRepository->getWhere(['category' => 'brokerage', 'type' => 'order_two', 'link_id' => $refundOrder->order_id]);
// 减少订单中的二级佣金金额
$refundOrder->order->extension_two = bcsub($refundOrder->order->extension_two, $refundOrder['extension_two'], 2);
// 如果账单存在且状态不是已退款,则执行佣金扣除操作
if ($bill && $bill->status != 1) {
$userRepository->incBrokerage($bill->uid, $refundOrder['extension_two'], '-');
$userBillRepository->decBill($bill->uid, 'brokerage', 'refund_two', [
'link_id' => $refundOrder->order_id,
'status' => 1,
'title' => '用户退款',
'number' => $refundOrder['extension_two'],
'mark' => '用户退款扣除推广佣金' . floatval($refundOrder['extension_two']),
'balance' => 0
]);
}
// 如果账单不存在或状态是已退款,则记录一条财务记录,表示二级佣金的退还
if (!$bill || $bill->status != 1) {
app()->make(FinancialRecordRepository::class)->inc([
'order_id' => $refundOrder->refund_order_id,
'order_sn' => $refundOrder->refund_order_sn,
'user_info' => $bill ? $userRepository->getUsername($bill->uid) : '退还二级佣金',
'user_id' => $bill ? $bill->uid : 0,
'type' => 1,
'financial_type' => 'refund_brokerage_two',
'number' => $refundOrder['extension_two'],
], $refundOrder->mer_id);
}
}
// 保存更新后的订单信息
$refundOrder->order->save();
}

