where('hold_position', '>', 0)->cursor(); foreach ($positions as $position) { $this->handleCostRate($position, $costRate); } } private function handleCostRate($position, $costRate) { // 持仓金额 $position_amount = $position['hold_position'] * $position['unit_amount']; $cost = PriceCalculate($position_amount, '*', $costRate, 4); // 资金费 $balance = SustainableAccount::query()->where('user_id', $position['user_id'])->value('usable_balance'); if ($balance <= $cost) { // 合约账户可用保证金 不足以支付资金费时 执行强平 HandleFlatPosition::dispatch([$position])->onQueue('HandleFlatPosition'); } else { $user = User::query()->find($position['user_id']); if (!blank($user)) { $user->update_wallet_and_log($position['margin_coin_id'], 'usable_balance', -$cost, UserWallet::sustainable_account, 'position_capital_cost', '', $position['contract_id']); } } } }