seller_id : Admin::user()->seller_id; $numPerPage = $request->numPerPage ?: 100; $start = $request->start; $end = $request->end; $reports = SalesReport::when($seller_id,function ($q) use($seller_id){$q->where('seller_id', $seller_id);}) ->where('state','DELIVERED') ->when($start && $end, function ($query) use ($start, $end) { $query->whereBetween('action_time', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]); }) ->when($start && !$end, function ($query) use ($start) { $query->where('action_time', '>=', $start); }) ->when((!$start && $end), function ($query) use ($end) { $query->where('action_time', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end)))); })->orderBy('seller_id','asc')->orderBy('action_time','desc')->paginate($numPerPage); $sellers = Seller::where('status', 1)->get(); return view('Admin::orderData.report', compact('reports','sellers')); } public function signed(Request $request) { $seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id; $numPerPage = $request->numPerPage ?: 100; $start = $request->start; $end = $request->end; $reports = SalesReport::when($seller_id,function ($q) use($seller_id){$q->where('seller_id', $seller_id);}) ->where('state','SIGNED') ->when($start && $end, function ($query) use ($start, $end) { $query->whereBetween('action_time', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]); }) ->when($start && !$end, function ($query) use ($start) { $query->where('action_time', '>=', $start); }) ->when((!$start && $end), function ($query) use ($end) { $query->where('action_time', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end)))); })->orderBy('seller_id','asc')->orderBy('action_time','desc')->paginate($numPerPage); $sellers = Seller::where('status', 1)->get(); return view('Admin::orderData.signed', compact('reports','sellers')); } public function order(Request $request) { $sellers = Seller::where('status', 1)->get(); $orderid = $request->orderid; $mobile = $request->mobile; $nickname = $request->nickname; $start = $request->start; $end = $request->end; $item_id = $request->item_id; $item_type = $request->item_type; $type = $request->type; $orderField = $request->orderField; $orderDirection = $request->orderDirection; $numPerPage = $request->numPerPage ?: 30; $seller_id = Admin::id() == 1 ? $request->seller_id : Admin::user()->seller_id; $orders = Order::when($seller_id,function ($q) use($seller_id){$q->where('seller_id', $seller_id);}) ->when($orderid, function ($query) use ($orderid) { $query->where('orderid', 'like', "%{$orderid}%"); }) ->when($mobile, function ($query) use ($mobile) { $query->whereHas('user', function ($query) use ($mobile) { $query->where('mobile', 'like', "%{$mobile}%"); }); }) ->when($nickname, function ($query) use ($nickname) { $query->whereHas('user', function ($query) use ($nickname) { return $query->whereHas('info', function ($query) use ($nickname) { $query->where('nickname', 'like', "%{$nickname}%"); }); }); }) ->when($item_id, function ($query) use ($item_id) { $query->whereHas('details', function ($query) use ($item_id) { return $query->where('item_id',$item_id); }); }) ->when($item_type, function ($query) use($item_type){ return $query->where('item_type',$item_type); })-> whereHas('logs', function ($query) use ($start,$end,$type) { $query->where('state',$type)->when($start && $end, function ($query) use ($start, $end) { $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]); }) ->when($start && !$end, function ($query) use ($start) { $query->where('created_at', '>=', $start); }) ->when((!$start && $end), function ($query) use ($end) { $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end)))); }); })->where('state', '<>',Order::ORDER_CLOSED) ->when($orderField, function ($query) use ($orderField, $orderDirection) { $query->orderBy($orderField, $orderDirection); }) ->with(['seller', 'user.info']) ->orderBy('created_at', 'desc') ->paginate($numPerPage); return view('Admin::orderData.order', compact('sellers','orders','type','item_id')); } public function dashboard(Request $request) { //已签收 //已经发货 //日期,商户,已发货订单总量,已发货订单总额,订单商品总成本,已发货商品总计,销售价格总计,抵值积分总计,商家结算总计, $sellerids = Seller::get(); $start_arr = ['2019-01-22']; foreach ($start_arr as $starta){ foreach ($sellerids as $key => $seller){ $seller_id = $seller->id; $start = date($starta, strtotime('-1 day')); $end = date($starta); $orderids[$key] = Order::when($seller_id,function ($q) use($seller_id){$q->where('seller_id', $seller_id);}) ->whereHas('logs', function ($query) use ($start,$end) { $query->where('state','PAID|DELIVERED')->when($start && $end, function ($query) use ($start, $end) { $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]); }) ->when($start && !$end, function ($query) use ($start) { $query->where('created_at', '>=', $start); }) ->when((!$start && $end), function ($query) use ($end) { $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end)))); }); })->where('state', '<>',Order::ORDER_CLOSED)->pluck('id'); if(!empty($orderids[$key])){ $detail[$key] = OrderDetail::select(DB::raw('sum(number) as number_sum, sum(score * number) as score_sum, sum(price * number) as price_sum, sum(seller_price * number) as seller_price_sum')) ->whereIn('order_id',$orderids[$key])->first(); if(!empty($detail[$key]) && $detail[$key]->number_sum){ $order[$key] = Order::select(DB::raw('count(*) as order_total, sum(freight) as freight_sum, sum(seller_freight) as seller_freight_sum, sum(amount) as orders_price, sum(score) as orders_score,sum(seller_amount) as seller_amount_sum')) ->whereIn('id',$orderids[$key])->first(); $report[$key] = SalesReport::where(['seller_id'=>$seller_id,'state'=>'DELIVERED','action_time'=>$starta])->first(); if(empty($report[$key])){ SalesReport::create([ 'state'=>'DELIVERED', 'action_time'=>$starta, 'goods_total'=>$detail[$key]->number_sum, 'goods_price_total'=>$detail[$key]->price_sum, 'goods_score_total'=>$detail[$key]->score_sum, 'orders_total'=>$order[$key]->order_total, 'orders_price'=>$order[$key]->orders_price, 'orders_score'=>$order[$key]->orders_score, 'orders_freight'=>$order[$key]->freight_sum, 'seller_id'=>$seller_id, 'seller_total'=>$order[$key]->seller_amount_sum, 'seller_freight'=>$order[$key]->seller_freight_sum, ]); } } } } } } }