column('id')->sortable();
$grid->column('order_sn');
$grid->column('order_number');
$grid->column('order_phone', '手机号');
$grid->column('order_price');
$grid->column('pay_type')->using(['1'=>'微信支付', '2' => '兑换支付', '3'=>'线下点单'])->label([
1 => 'success',
2 => 'warning',
3 => Admin::color()->info(),
]);
$grid->column('order_status')->bool(['1' => true, '-1' => false]);
// $grid->column('pay_status')->bool(['1' => true, '0' => false]);
// $grid->column('shipping_status')->bool(['1' => true, '0' => false]);
// $grid->column('pay_time');
// $grid->column('shipping_time');
// $grid->column('closed_time');
// $grid->column('is_reserve','是否预约')->using(['1'=>'预约订单', '0' => '普通订单'])->label([
// 0 => 'success',
// 1 => 'danger',
// ]);
// $grid->column('is_niu')->using(['1'=>'吹牛订单', '0' => '普通订单'])->label([
// 0 => 'success',
// 1 => 'danger',
// ]);
$grid->column('created_at', '下单时间');
// $grid->column('updated_at')->sortable();
$grid->model()->orderBy('created_at', 'desc');
$grid->filter(function (Grid\Filter $filter) {
$filter->expand(false);
// $filter->equal('id');
$filter->equal('order_sn');
// $filter->equal('pay_status')->select([0 => '未支付', 1 => '已支付'])->default(1);
// $filter->equal('order_phone', '手机号');
$filter->between('created_at', '下单时间')->date();
});
$grid->actions(function (Grid\Displayers\Actions $actions) {
$actions->disableDelete();
if($actions->row->order_status == 1){
$actions->append(new OrderCancle());
}
if( $actions->row->pay_type == 1 &&
$actions->row->order_status == 1 &&
$actions->row->pay_status != 3 &&
$actions->row->pickup_notice == 0 &&
!empty($actions->row->order_number)
){
$actions->append(new OrderPickUpNotice());
}
$actions->disableEdit();
});
$grid->header(function ($collection) use ($grid) {
$query = OrderModel::query();
// 拿到表格筛选 where 条件数组进行遍历
$grid->model()->getQueries()->unique()->each(function ($value) use (&$query) {
if (in_array($value['method'], ['paginate', 'get', 'orderBy', 'orderByDesc'], true)) {
return;
}
$query = call_user_func_array([$query, $value['method']], $value['arguments'] ?? []);
});
// 查出统计数据
$data = $query->get();
$total_fee = $data->sum('pay_price');
$total_num = $data->count();
return "
订单数:$total_num 单 | 统计收益 : $total_fee 元
";
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, Order::with(['ticket','ticket.quanTicket']), function (Show $show) {
$show->row(function(Show\Row $show){
$show->width(4)->field('order_sn');
$show->width(4)->field('order_number');
$show->width(4)->field('created_at', '下单时间');
// $show->width(4)->field('is_reserve', '是否预约')->using(['0' => '普通订单', '1'=>'预约订单'])->label()->append(function($info){
// return $this->is_reserve? Carbon::parse($this->reserve_time)->toDateString():'';
// });
// $show->width(4)->field('is_niu','是否吹牛')->using(['0' => '普通订单', '1'=>'吹牛订单'])->label();
});
$show->row(function(Show\Row $show){
// $show->width(4)->field('order_phone', '手机号');
$show->width(4)->field('order_status', '订单状态')->using(['0'=>'未确认', '1' => '已确认', '-1'=>'已取消']);
$show->width(4)->field('order_price')->prepend('¥');
$show->width(4)->field('pay_price', '支付价格')->prepend('¥');
});
//优惠券信息
// $show->row(function(Show\Row $show){
// $show->width(4)->field('ticket_id', '优惠券')->as(function(){
// return $this->ticket->quanTicket->quan_name??'';
// })->label();
// $show->width(4)->field('ticket_value', '优惠金额')->prepend('¥');
// $show->width(4)->field('pay_price', '支付价格')->prepend('¥');
// });
$show->row(function(Show\Row $show){
// $show->width(4)->field('pay_status', '支付状态')->using(['0'=>'未支付', '1' => '已支付']);
// $show->width(4)->field('shipping_status', '取餐状态')->using(['0'=>'未取餐', '1' => '已取餐']);
});
// $show->row(function(Show\Row $show){
// // $show->width(4)->field('pay_time', '支付时间');
// // $show->width(4)->field('shipping_time', '取餐时间');
// });
// $show->row(function(Show\Row $show){
$show->goods(function ($model) {
$grid = new Grid(new OrderGoods);
$grid->disablePagination();
$grid->disableToolbar();
$grid->disableRefreshButton();
$grid->disableActions();
$grid->model()->where('order_id', $model->id);
$grid->disableRowSelector();
$grid->goods_name('商品名称');
// $grid->column('is_too', '第二杯半价')->bool(['1' => true, '0' => false]);
$grid->goods_attrs('规格属性')->display(function($goods_attrs){
$goods_attrs = json_decode($goods_attrs, true);
return isset($goods_attrs['info_name']) ? $goods_attrs['info_name']:'';
})->label();
$grid->goods_num('商品数量')->prepend('X ');
$grid->goods_price('商品价格')->prepend('¥');
// $grid->goods_cover()->image(100, 100);
return $grid;
});
// });
$show->panel()
->tools(function ($tools) {
$tools->disableEdit();
$tools->disableDelete();
});
});
}
/**
* 线下下单
*/
public function create(Content $content){
return $content->header('线下下单')
->description('表单')
->body(new CreateOrder());
}
public function toStore(Request $request){
$goods_infos = $request->input('goods_info');
$goods_infos = json_decode($goods_infos, true);
$is_ajax = $request->ajax();
if(count($goods_infos) > 0){
$order_service = new OrderService();
$order = $order_service->createOrderToAdmin($goods_infos);
if(isset($order['status']) && $order['status'] == false){
if($is_ajax){
return JsonResponse::make()->error('下单失败:'.$order['message']);
}else{
admin_toastr('下单失败:'.$order['message'], 'error');
}
}else{
if($is_ajax){
$order = $order_service->payOrder($order);
return JsonResponse::make()->success('下单成功, 取餐码: '.($order->order_number??''));
}else{
admin_toastr('下单成功', 'success');
}
}
}else{
if($is_ajax){
return JsonResponse::make()->error('下单失败');
}else{
admin_toastr('下单失败', 'error');
}
}
return redirect(admin_route('orders.index'));
}
/**
* 取餐核销
*/
public function pickup(Content $content){
return $content->header('取餐核销')
->description('表单')
->body(new PickupOrder());
}
/**
* 确认取餐
*/
public function toPickup(Request $request){
$order_sn = $request->input('order_number');
$order = OrderModel::where('order_sn', $order_sn)
// $start_time = Carbon::now()->startOfDay();
// $end_time = Carbon::now()->endOfDay();
// $order_number = $request->input('order_number');
// OrderModel::where('order_number', $order_number)
// ->whereBetween('created_at', [$start_time, $end_time])
->where([
'order_status' =>1,
'pay_status' =>1
])
->first();
if($order){
if($order->shipping_status == 0){
$order_service = new OrderService();
$res = $order_service->shippingOrder($order);
if(isset($res['status']) && $res['status']==false){
return JsonResponse::make()->error($res['message']);
}else{
return JsonResponse::make()->success('取餐成功');
}
}else{
return JsonResponse::make()->error('该订单已取餐');
}
}else{
return JsonResponse::make()->error('未找到符合订单');
}
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Order(), function (Form $form) {
$form->display('id');
$form->text('user_id');
$form->text('order_sn');
$form->text('order_number');
$form->text('order_price');
$form->text('pay_type');
$form->text('shipping_status');
$form->text('is_niu');
$form->display('created_at');
$form->display('updated_at');
});
}
public function destroy($id){
$goods = OrderModel::findOrFail($id);
if($goods->pay_status == 1){
return JsonResponse::make()->error('该订单已支付,无法删除');
}
return parent::destroy($id);
}
}