109 lines
4.5 KiB
PHP
109 lines
4.5 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use Admin;
|
|
use Illuminate\Http\Request;
|
|
use RuLong\Order\Models\Order;
|
|
use App\Models\GoodsParams;
|
|
use App\Models\Goods;
|
|
class OrderAllController extends Controller
|
|
{
|
|
|
|
public function index(Request $request)
|
|
{
|
|
|
|
$orderid = $request->orderid;
|
|
$mobile = $request->mobile;
|
|
$nickname = $request->nickname;
|
|
$seller = $request->seller;
|
|
$state = $request->state;
|
|
$start = $request->start;
|
|
$end = $request->end;
|
|
$title = $request->title;
|
|
$item_type = $request->item_type;
|
|
$orderField = $request->orderField;
|
|
$orderDirection = $request->orderDirection;
|
|
$numPerPage = $request->numPerPage ?: 30;
|
|
|
|
$orders = Order::when($seller, function ($query) use ($seller) {
|
|
$query->whereHas('seller', function ($query) use ($seller) {
|
|
$query->where('name', 'like', "%{$seller}%");
|
|
});
|
|
})
|
|
->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($title, function ($query) use ($title) {
|
|
$goods_ids = Goods::where('title', 'like',"%{$title}%")->pluck('id');
|
|
$params_ids = GoodsParams::whereIn('goods_id',$goods_ids)->pluck('id');
|
|
$query->whereHas('details', function ($query) use ($params_ids) {
|
|
return $query->whereIn('item_id',$params_ids);
|
|
});
|
|
})
|
|
->when($item_type, function ($query) use($item_type){
|
|
return $query->where('item_type',$item_type);
|
|
})
|
|
->when($state == '', function ($query){
|
|
return $query->where('state', '<>',Order::ORDER_CLOSED);
|
|
})
|
|
->when($state, function ($query) use ($state) {
|
|
switch ($state) {
|
|
case 'UNPAY':
|
|
return $query->where('state', Order::ORDER_UNPAY);
|
|
break;
|
|
case 'PAID':
|
|
return $query->whereIn('state', [Order::ORDER_PAID, Order::ORDER_DELIVER]);
|
|
break;
|
|
case 'DELIVERED':
|
|
return $query->where('state', Order::ORDER_DELIVERED);
|
|
break;
|
|
case 'SIGNED':
|
|
return $query->where('state', Order::ORDER_SIGNED);
|
|
break;
|
|
case 'CLOSED':
|
|
return $query->where('state', Order::ORDER_CLOSED);
|
|
break;
|
|
case 'CANCEL':
|
|
return $query->where('state', Order::ORDER_CANCEL);
|
|
break;
|
|
case 'COMPLETED':
|
|
return $query->where('state', Order::ORDER_COMPLETED);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
})
|
|
->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))));
|
|
})
|
|
->when($orderField, function ($query) use ($orderField, $orderDirection) {
|
|
$query->orderBy($orderField, $orderDirection);
|
|
})
|
|
->with(['seller', 'user.info'])
|
|
->orderBy('created_at', 'desc')
|
|
->paginate($numPerPage);
|
|
return view('Admin::orders.allSellerOrder', compact('orders'));
|
|
}
|
|
|
|
|
|
}
|