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); } }