更新代码
This commit is contained in:
372
app/Admin/Controllers/OrderController.php
Normal file
372
app/Admin/Controllers/OrderController.php
Normal file
@@ -0,0 +1,372 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Controllers;
|
||||
|
||||
use Admin;
|
||||
use App\Models\Goods;
|
||||
use App\Models\GoodsParams;
|
||||
use Illuminate\Http\Request;
|
||||
use Logistic;
|
||||
use RuLong\Order\Models\Order;
|
||||
|
||||
class OrderController extends Controller
|
||||
{
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$orderid = $request->orderid;
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$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;
|
||||
$admin = Admin::user();
|
||||
|
||||
$orders = Order::when($admin->id > 1, function ($query) use ($admin) {
|
||||
$query->where('seller_id', $admin->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($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.index', compact('orders'));
|
||||
}
|
||||
|
||||
public function unpay(Request $request)
|
||||
{
|
||||
$orderid = $request->orderid;
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$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::Unpaid()->where('seller_id', Admin::user()->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($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($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})
|
||||
->when(!$start && $end, function ($query) use ($end) {
|
||||
return $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.index', compact('orders'));
|
||||
}
|
||||
|
||||
public function paid(Request $request)
|
||||
{
|
||||
$orderid = $request->orderid;
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$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::UnDeliver()->where('seller_id', Admin::user()->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($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($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})
|
||||
->when(!$start && $end, function ($query) use ($end) {
|
||||
return $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.index', compact('orders'));
|
||||
}
|
||||
|
||||
public function signed(Request $request)
|
||||
{
|
||||
|
||||
$orderid = $request->orderid;
|
||||
$mobile = $request->mobile;
|
||||
$nickname = $request->nickname;
|
||||
$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::Signed()->where('seller_id', Admin::user()->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_type, function ($query) use ($item_type) {
|
||||
return $query->where('item_type', $item_type);
|
||||
})
|
||||
->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($start && $end, function ($query) use ($start, $end) {
|
||||
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
|
||||
})
|
||||
->when($start && !$end, function ($query) use ($start) {
|
||||
return $query->where('created_at', '>=', $start);
|
||||
})
|
||||
->when(!$start && $end, function ($query) use ($end) {
|
||||
return $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.index', compact('orders'));
|
||||
}
|
||||
|
||||
public function show(Order $order)
|
||||
{
|
||||
return view('Admin::orders.show', compact('order'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单发货
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T14:47:34+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function deliver(Request $request, Order $order)
|
||||
{
|
||||
if ($request->isMethod('PUT')) {
|
||||
try {
|
||||
$order->deliver($request->company, $request->number);
|
||||
return $this->success('发货成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('发货失败' . $e->getmessage());
|
||||
}
|
||||
} else {
|
||||
return view('Admin::orders.deliver', compact('order'));
|
||||
}
|
||||
}
|
||||
|
||||
public function signin(Order $order)
|
||||
{
|
||||
try {
|
||||
$order->deliver('自提', '自提');
|
||||
$order->signin();
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单发货
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T14:47:34+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function remark(Request $request, Order $order)
|
||||
{
|
||||
if ($request->isMethod('PUT')) {
|
||||
try {
|
||||
$order->remark_mgr = $request->remark_mgr;
|
||||
$order->save();
|
||||
return $this->success('备注成功', 'close');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('备注失败' . $e->getmessage());
|
||||
}
|
||||
} else {
|
||||
return view('Admin::orders.remark', compact('order'));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 取消订单
|
||||
* @Author:<C.Jason>
|
||||
* @Date:2018-11-02T14:45:57+0800
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function destroy()
|
||||
{}
|
||||
|
||||
public function close(Order $order)
|
||||
{
|
||||
try {
|
||||
$order->close();
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function complete(Order $order)
|
||||
{
|
||||
try {
|
||||
$order->complete();
|
||||
return $this->success('操作成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error('操作失败' . $e->getmessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function logistic(Order $order)
|
||||
{
|
||||
$message = Logistic::getMessage($order->express->company ?? '', $order->express->number ?? ''); //类型csn,编号
|
||||
return view('Admin::orders.logistic', compact('order', 'message'));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user