更新代码
This commit is contained in:
184
app/Admin/Controllers/OrderDataController.php
Normal file
184
app/Admin/Controllers/OrderDataController.php
Normal file
@@ -0,0 +1,184 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use App\Models\SalesReport;
|
||||
use Illuminate\Http\Request;
|
||||
use Admin;
|
||||
use RuLong\Order\Models\Order;
|
||||
use App\Models\GoodsParams;
|
||||
use App\Models\Goods;
|
||||
use RuLong\Order\Models\OrderDetail;
|
||||
use App\Models\Seller;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
class OrderDataController extends Controller
|
||||
{
|
||||
|
||||
public function report(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','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,
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user