where('status', Order::STATUS_COMPLETED) // 没有售后订单 ->whereDoesntHave('afterSales') // 售后期过了 ->where('completed_at', '<', now()->subDays($saleDays)) // 未支付提成 ->whereNull('profit_paid') ->limit(10) ->get(); // 修改提成记录的状态为 等待结算 OrderProfit::whereIn('order_id', $orders->pluck('id'))->where('status', 0)->update(['status' => 4]); // 获取 等待结算 的提成记录, 按照 user_id 分组 OrderProfit::where('status', 4)->chunk(50, function ($list) use ($service) { $list = $list->groupBy('user_id'); foreach($list as $id => $items) { try { DB::beginTransaction(); $service->wechatTransfers($items); DB::commit(); } catch (\Exception $e) { DB::rollBack(); $this->error($e->getMessage()); } } }); // 没有待付款的提成记录 foreach($orders as $item) { if (!$item->profits()->where('status', 4)->exists()) { $item->update(['profit_paid' => $now]); } } $page++; if ($page === 0) { sleep(60); } elseif ($page === 1) { sleep(30); } else { sleep(15); } } } }