<?php namespace App\Admin\Controllers\System; use App\Http\Controllers\Controller; use App\Models\SmsQueue; use Encore\Admin\Controllers\HasResourceActions; use Encore\Admin\Facades\Admin; use Encore\Admin\Form; use Encore\Admin\Grid; use Encore\Admin\Layout\Content; use Encore\Admin\Show; class SmsQueueController extends Controller { use HasResourceActions; /** * Index interface. * * @param Content $content * @return Content */ public function index(Content $content) { return $content ->header('短信记录') ->description('发送记录') ->body($this->grid()); } /** * Show interface. * * @param mixed $id * @param Content $content * @return Content */ public function show($id, Content $content) { return $content ->header('短信记录') ->description('详细') ->body($this->detail($id)); } /** * Edit interface. * * @param mixed $id * @param Content $content * @return Content */ public function edit($id, Content $content) { return $content ->header('短信记录') ->description('编辑') ->body($this->form()->edit($id)); } /** * Create interface. * * @param Content $content * @return Content */ public function create(Content $content) { return $content ->header('短信记录') ->description('创建') ->body($this->createForm()); } /** * Make a grid builder. * * @return Grid */ protected function grid() { $grid = new Grid(new SmsQueue); $grid->model()->orderBy('created_at', 'desc'); $grid->id('ID'); $grid->column('batch.name', '批次')->width(150); $grid->utype('发送者')->display(function ($utype) { switch ($utype) { case 1: $utype = '<span class="label label-success">企业</span>'; break; case 2: $utype = '<span class="label label-primary">个人</span>'; break; default: $utype = '<span class="label label-default">系统</span>'; break; } return $utype; }); $grid->s_number('手机号')->width(150); $grid->s_body('短信内容')->width(200); $grid->s_status('状态')->display(function ($m_status) { switch ($m_status) { case 1: $m_status = '<span class="label label-success">成功</span>'; break; case 2: $m_status = '<span class="label label-warning">等待</span>'; break; case 3: $m_status = '<span class="label label-default">失败</span>'; break; default: $m_status = '<span class="label label-warning">等待</span>'; break; } return $m_status; }); $grid->error_message('错误信息')->width(200); $grid->s_sendtime('发送时间'); $grid->created_at('添加时间')->sortable(); $grid->actions(function ($actions) use ($grid) { if (Admin::user()->can('system_sms_queue_delete')) { $actions->disableDelete(false); } }); if (Admin::user()->can('system_sms_queue_delete')) { $grid->tools(function ($tools) { $tools->batch(function ($batch) { $batch->disableDelete(false); }); }); $grid->disableRowSelector(false); } $grid->filter(function ($filter) { $filter->equal('s_status', '状态')->select([ 1 => '发送成功', 2 => '等待发送', 3 => '发送失败', ]); }); $grid->tools(function ($tools) { //$tools->append('<a class="btn btn-sm btn-primary" href="/admin/sys/sms/queue/bath" title="短信推送"><i class="fa fa-save"></i><span class="hidden-xs"> 短信推送</span></a>'); }); return $grid; } /** * Make a show builder. * * @param mixed $id * @return Show */ protected function detail($id) { $show = new Show(SmsQueue::findOrFail($id)); $show->id("ID"); // $show->batch('批次', function ($batch) { // $batch->name(); // }); $show->utype('发送者')->unescape()->as(function ($m_status) { switch ($m_status) { case 1: $m_status = '<span class="label label-success">企业</span>'; break; case 2: $m_status = '<span class="label label-primary">个人</span>'; break; default: $m_status = '<span class="label label-default">系统</span>'; break; } return $m_status; }); $show->s_number('手机号'); $show->s_body('短信内容'); $show->s_status('状态')->unescape()->as(function ($m_status) { switch ($m_status) { case 1: $m_status = '<span class="label label-success">成功</span>'; break; case 2: $m_status = '<span class="label label-warning">等待</span>'; break; case 3: $m_status = '<span class="label label-error">失败</span>'; break; default: $m_status = '<span class="label label-warning">等待</span>'; break; } return $m_status; }); $show->error_message('错误信息'); $show->s_sendtime('发送时间'); $show->created_at('添加时间'); return $show; } /** * Make a form builder. * * @return Form */ protected function form() { $form = new Form(new SmsQueue); $form->display('ID'); $form->display('Created at'); $form->display('Updated at'); return $form; } }