argument('cdate'); if (!$cdate) { $cdate = date('Ymd', strtotime('-1 day')); } Seller::chunkById(500, function ($sellers) use ($cdate) { foreach ($sellers as $seller) { $this->report($seller, $cdate); } }); } public function report(Seller $seller, $cdate) { $chupiaoMoneyRow = Order::select([ DB::raw('sum(IF(type = 3, union_money, money)) as m') ]) ->usable() ->where('draft_date', $cdate) ->where('draft_user_id', $seller->id) ->first(); $chupiaoMoney = $chupiaoMoneyRow ? $chupiaoMoneyRow->m : 0; $sendMoneyRow = Order::select([ DB::raw('sum(IF(type = 3, union_send_prize, lottery_send_prize)) as m') ]) ->usable() ->where('send_date', $cdate) ->where('send_user_id', $seller->id) ->first(); $sendMoney = $sendMoneyRow ? $sendMoneyRow->m : 0; $winMoneyRow = Order::select([ DB::raw('sum(IF(type = 3, union_should_send_prize, lottery_should_send_prize)) as m') ]) ->usable() ->where('draft_date', $cdate) ->where('draft_user_id', $seller->id) ->first(); $winMoney = $winMoneyRow ? $winMoneyRow->m : 0; $incrMoney = ShopBill::where('created_date', $cdate) ->where('type', ShopBill::TYPE_SELLER_INCR) ->where('seller_id', $seller->id) ->sum('money'); $reduceMoney = ShopBill::where('created_date', $cdate) ->where('type', ShopBill::TYPE_SELLER_REDUCE) ->where('seller_id', $seller->id) ->sum('money'); $report = ReportDaySeller::where('seller_id', $seller->id) ->where('cdate', $cdate) ->first(); if (!$report) { $report = new ReportDaySeller(); } $report->seller_id = $seller->id; $report->shop_id = $seller->shop_id; $report->cdate = $cdate; $report->chupiao_money = Helps::floatFormat($chupiaoMoney); $report->send_prize = Helps::floatFormat($sendMoney); $report->win_prize = Helps::floatFormat($winMoney); $report->incr_money = Helps::floatFormat($incrMoney); $report->reduce_money = Helps::floatFormat($reduceMoney); $report->save(); return $report; } }