diff --git a/app/Http/Controllers/Api/VerificationController.php b/app/Http/Controllers/Api/VerificationController.php index 1c0e6f0..5c1effa 100644 --- a/app/Http/Controllers/Api/VerificationController.php +++ b/app/Http/Controllers/Api/VerificationController.php @@ -132,172 +132,73 @@ class VerificationController extends Controller $order->id, StatementTraits::$type[0] ); - //抽成 - //if ($order->guide->rate > 0) { - // //计算抽成金额 - // $guideCut = bcmul($order->guide_price, $order->guide->rate, 6); - // $cutPrice = $guideCut > 0 ? bcdiv($guideCut, 100, 6) : 0; - // //总后台抽成流水 - // if ($cutPrice > 0) { - // $adminCreate[] = $service->createByOrderFormAdmin( - // $cutPrice, - // StatementType::CUT, - // $order->guide->id, - // DemandTraits::$col[2], - // $order->id, - // ); - // //地接被抽成流水 - // $statementCreate[] = $service->createByOrder( - // bcmul($cutPrice, -1, 2), - // StatementType::CUT, - // $order->guide->id, - // DemandTraits::$col[2], - // $order->id, - // StatementTraits::$type[0] - // ); - //$guidePrice = bcsub($order->guide_price, $cutPrice, 6); + $guide = Guide::query()->where('id', $order->guide->id)->lockForUpdate()->first(); $guide->balance = bcadd($guide->balance, $guidePrice, 6); $guide->save(); - // } - //} } - //分账给供应商 - $orderItem = OrderProductItem::query() - ->where([ - ['order_id', '=', $order->id], - ['supplier_id', '<>', 0], //supplier_id=0是代理商自营产品,供应商没有分账权利 - ]) - ->with('supplier') - ->select('*') - ->selectRaw('sum(price) as sum_price,sum(single_deposit * num) as sum_persons') - ->groupBy('supplier_id') - ->get(); - foreach ($orderItem as $v) { + /** + * 线下付款已经在app/AdminAgent/Extensions/Grid/ChangeOrderStatus.php扣过了 + * 这里不能再重复扣除。如果需要解除,同时还要注意下退款的情况 + */ + if ($order->pay_type != PayType::OFFLINE) { + //分账给供应商 + $orderItem = OrderProductItem::query() + ->where([ + ['order_id', '=', $order->id], + ['supplier_id', '<>', 0], //supplier_id=0是代理商自营产品,供应商没有分账权利 + ]) + ->with('supplier') + ->select('*') + ->selectRaw('sum(price) as sum_price,sum(single_deposit * num) as sum_persons') + ->groupBy('supplier_id') + ->get(); + foreach ($orderItem as $v) { + $cost = bcadd($cost, $v->sum_price, 6); + $supplierPrice = $v->sum_price; + $statementCreate[] = $service->createByOrder( + $v->sum_price, + StatementType::ORDER, + $v->supplier_id, + DemandTraits::$col[1], + $order->id, + StatementTraits::$type[0] + ); + + $supplier = Supplier::query()->where('id', $v->supplier_id)->lockForUpdate()->first(); + //处理交易金 + if ($v->sum_persons > 0) { + //计算交易金 + $deposit = $v->sum_persons; + + //扣 + $supplier->trade_balance = bcsub($supplier->trade_balance, $deposit, 6); + //$supplier->balance = bcadd($supplier->deposit_used, $supplierPrice, 6); + //$supplier->balance = bcsub($supplier->deposit_frozen, $supplierPrice, 6); + } + + $supplier->balance = bcadd($supplier->balance, $supplierPrice, 6); + $supplier->save(); + } + + //分账给代理商 + //成本价 加上地接价格 + $agentPrice = bcsub($order->price, $cost, 2); - $cost = bcadd($cost, $v->sum_price, 6); - $supplierPrice = $v->sum_price; $statementCreate[] = $service->createByOrder( - $v->sum_price, + $agentPrice, StatementType::ORDER, - $v->supplier_id, - DemandTraits::$col[1], + $order->agent_id, + DemandTraits::$col[0], $order->id, StatementTraits::$type[0] ); - //if ($v->supplier->rate > 0) { - // //计算抽成金额 - // $supplierCut = bcmul($v->sum_price, $v->supplier->rate, 6); - // $cutPrice = $supplierCut > 0 ? bcdiv($supplierCut, 100, 6) : 0; - // if ($cutPrice > 0) { - // //总后台抽成流水 - // $adminCreate[] = $service->createByOrderFormAdmin( - // $cutPrice, - // StatementType::CUT, - // $v->supplier_id, - // DemandTraits::$col[1], - // $order->id, - // ); - // //供应商被抽成流水 - // $statementCreate[] = $service->createByOrder( - // bcmul($cutPrice, -1, 6), - // StatementType::CUT, - // $v->supplier_id, - // DemandTraits::$col[1], - // $order->id, - // StatementTraits::$type[0] - // ); - // $supplierPrice = bcsub($supplierPrice, $cutPrice, 6); - // - // } - //} - - $supplier = Supplier::query()->where('id', $v->supplier_id)->lockForUpdate()->first(); - //处理交易金 - if ($v->sum_persons > 0) { - //计算交易金 - $deposit = $v->sum_persons; - //流水 -// $statementCreate[] = $service->createByOrder( -// bcmul($deposit, -1, 6), -// StatementType::DEPOSIT, -// $v->supplier_id, -// DemandTraits::$col[1], -// $order->id, -// StatementTraits::$type[0] -// ); - //扣 - $supplier->trade_balance = bcsub($supplier->trade_balance,$deposit,6); - //$supplier->balance = bcadd($supplier->deposit_used, $supplierPrice, 6); - //$supplier->balance = bcsub($supplier->deposit_frozen, $supplierPrice, 6); - } - - $supplier->balance = bcadd($supplier->balance, $supplierPrice, 6); - $supplier->save(); - } - - //分账给代理商 - //成本价 加上地接价格 - $agentPrice = bcsub($order->price, $cost, 2); - - - $statementCreate[] = $service->createByOrder( - $agentPrice, - StatementType::ORDER, - $order->agent_id, - DemandTraits::$col[0], - $order->id, - StatementTraits::$type[0] - ); - // - ////抽成 - //if ($order->agent->rate > 0) { - // //计算抽成金额 - // $agentCut = bcmul($agentPrice, $order->agent->rate, 6); - // $cutPrice = $agentCut > 0 ? bcdiv($agentCut, 100, 6) : 0; - // - // //总后台抽成流水 - // if ($cutPrice > 0) { - // $adminCreate[] = $service->createByOrderFormAdmin( - // $cutPrice, - // StatementType::CUT, - // $order->agent->id, - // DemandTraits::$col[0], - // $order->id, - // ); - // //代理商被抽成流水 - // $statementCreate[] = $service->createByOrder( - // bcmul($cutPrice, -1, 6), - // StatementType::CUT, - // $order->agent->id, - // DemandTraits::$col[0], - // $order->id, - // StatementTraits::$type[0] - // ); - // $agentPrice = bcsub($agentPrice, $cutPrice, 6); - // } - - - //扣除微信支付手续费 - //$chargePrice = bcmul($order->price, 0.006, 6); - //$statementCreate[] = $service->createByOrder( - // bcmul($chargePrice, -1, 6), - // StatementType::CHARGE, - // $order->agent_id, - // DemandTraits::$col[0], - // $order->id, - // StatementTraits::$type[0] - //); - //$agentPrice = bcsub($agentPrice, $chargePrice, 6); $agent = Agent::query()->where('id', $order->agent->id)->lockForUpdate()->first(); $agent->balance = bcadd($agent->balance, $agentPrice, 6); $agent->save(); - //} - //if (!empty($adminCreate)) { - // $order->statementAdmin()->createMany($adminCreate); - //} + } if (!empty($statementCreate)) { $order->statement()->createMany($statementCreate);