autoCheck(); $this->autoPayCommission(); } public function autoCheck() { if ((int)config('v2board.commission_auto_check_enable', 1)) { Order::where('commission_status', 0) ->where('invite_user_id', '!=', NULL) ->whereIn('status', [3, 4]) ->where('updated_at', '<=', strtotime('-3 day', time())) ->update([ 'commission_status' => 1 ]); } } public function autoPayCommission() { $order = Order::where('commission_status', 1) ->where('invite_user_id', '!=', NULL) ->get(); foreach ($order as $item) { DB::beginTransaction(); $inviter = User::find($item->invite_user_id); if (!$inviter) continue; $inviter->commission_balance = $inviter->commission_balance + $item->commission_balance; if (!$inviter->save()) { DB::rollBack(); continue; } $item->commission_status = 2; if (!$item->save()){ DB::rollBack(); continue; } DB::commit(); } } }