emailService = $emailService; } /** * Index interface. * * @param Content $content * @return Content */ public function index(Content $content) { return $content ->header('账号申诉') ->description(' ') ->body(view('admin.content.appeal')->with(['grid'=>$this->grid()])); } /** * Show interface. * * @param mixed $id * @param Content $content * @return Content */ public function show($id, Content $content) { return $content ->header('Detail') ->description('description') ->body($this->detail($id)); } /** * Edit interface. * * @param mixed $id * @param Content $content * @return Content */ public function edit($id, Content $content) { return $content ->header('Edit') ->description('description') ->body($this->form()->edit($id)); } /** * Create interface. * * @param Content $content * @return Content */ public function create(Content $content) { return $content ->header('Create') ->description('description') ->body($this->form()); } /** * Make a grid builder. * * @return Grid */ protected function grid() { $grid = new Grid(new Appeal); if (get_subsite_id() != 0) { $where['subsite_id'] = get_subsite_id(); $grid->model()->where($where)->orderBy('status', 'asc')->orderBy('created_at', 'desc'); } else { $grid->model()->orderBy('status', 'asc')->orderBy('created_at', 'desc'); } $grid->real_name('真实姓名'); $grid->status('处理状态')->display(function () { return $this->status?'已处理':'未处理'; }); $grid->description('申诉描述')->display(function () { return ''.cut_str($this->description, 35, 0, "...").''; })->width(300); $grid->mobile('手机号码'); $grid->email('联系邮箱')->width(300); if(get_subsite_open()){ $grid->subsite_id('所属分站')->display(function () { $subsites = Cache::get('subsites_list'); if (array_has($subsites, $this->subsite_id)) { return $subsites[$this->subsite_id]['sitename']; } return ''; }); } $grid->created_at('申诉时间'); $grid->actions(function ($actions) { if (Admin::user()->can('content_appeal_audit')) { $actions->append(""); } if ($actions->row->status == 0 && Admin::user()->can('content_appeal_sendemail')) { $actions->append(""); } if (Admin::user()->can('content_appeal_delete')) { $actions->disableDelete(false); } }); if (Admin::user()->can('content_appeal_delete')) { $grid->tools(function ($tools) { $tools->batch(function ($batch) { $batch->disableDelete(false); }); }); } if (!Admin::user()->can('content_appeal_delete') && !Admin::user()->can('content_appeal_audit')) { $grid->disableRowSelector(); } $grid->filter(function (Filter $filter) { $filter->disableIdFilter(); $filter->column(2/3, function ($filter) { $subsites = Subsite::where(array('effective'=>1))->orderBy('order', 'asc')->get()->pluck('sitename', 'id')->toArray(); if ($subsites) { $subsites = array('' => '不限', '0' => '总站') + $subsites; $filter->equal('subsite_id', '所属分站')->select($subsites); } if (get_subsite_id() == 0) { $nums = Appeal::where(array('status'=>'0'))->get()->count(); } else { $nums = Appeal::where(array('status'=>'0', 'subsite_id'=>get_subsite_id()))->get()->count(); } $num_html =''; if ($nums>0) { //$num_html = '('.$nums.')'; $num_html = '('.$nums.')'; } $status_option = array('0'=>'未处理'.$num_html,'1'=>'已处理'); $status_option = array(''=>'不限')+$status_option; $filter->equal('status', '处理状态')->radio($status_option); $date3 = date('Y-m-d', strtotime("-3 day")); $date7 = date('Y-m-d', strtotime("-7 day")); $date30 = date("Y-m-d", strtotime("-1 month")); $date180 = date("Y-m-d", strtotime("-6 month")); $date360 = date("Y-m-d", strtotime("-1 year")); $date_option = array( '' => '不限', $date3 => '三天内', $date7 => '一周内', $date30 => '一月内', $date180 => '半年内', $date360 => '一年内', ); $filter->where(function ($query) { $query->where('created_at', '>=', "{$this->input}"); }, '申诉时间', 'created_at')->radio($date_option); }); }); //审核功能 if (Admin::user()->can('content_appeal_audit')) { $grid->tools(function ($tools) { $form = new \Encore\Admin\Widgets\Form(); $form->action(route('appeal.audit')); $status_option = array('0'=>'未处理','1'=>'已处理'); $form->radio('status', '将所选账号申诉设置为:')->options($status_option)->default(1)->setWidth(8, 4); $form->hidden('ids'); $form->json('val'); $config = array('title'=>'处理账号申诉','button'=>'处理','dialog_cancel' => "取消", 'dialog_ok' => "确认", 'is_batch' => true); $tools->append(new DialogTool($form, $config)); }); } /*$grid->tools(function (Grid\Tools $tools) { $tools->disableRefreshButton(); });*/ return $grid; } public function audit(Request $request) { $rst = $request->validate(['status'=>'required'], array('status.required'=>'请选择处理状态')); $ids = $request->input('ids'); if (empty($ids)) { if($request->type) { admin_toastr('请选择需要处理的数据', 'error'); return back(); }else{ return admin_toastr('请选择需要处理的数据', 'error'); } } $id_arr = explode(',', $ids); $update_data = array( 'status' => $request->input('status'), 'updated_at' => date('Y-m-d H:i:s', time()) ); if (Appeal::whereIn('id', $id_arr)->update($update_data) === false) { if($request->type) { admin_toastr('处理失败', 'error'); return back(); }else{ return admin_toastr('处理失败', 'error'); } } else { //添加审核日志 $reason_data = array('ids'=>$id_arr,'status'=>$request->input('status'),'type'=>'7'); if ($request->input('audit')=='1') { $reason_data['reason'] = '将所选账号申诉设置为已处理'; } else { $reason_data['reason'] = '将所选账号申诉设置为未处理'; } AuditReason::addData($reason_data); if($request->type) { admin_toastr('处理成功', 'success'); return back(); }else{ return admin_toastr('处理成功', 'success'); } } } /** * Make a show builder. * * @param mixed $id * @return Show */ protected function detail($id) { $show = new Show(Appeal::findOrFail($id)); $show->id('ID'); $show->real_name('真实姓名'); $show->mobile('手机号码'); $show->email('联系邮箱'); $show->description('描述'); if(get_subsite_open()){ $show->subsite_id('所属分站')->as(function ($subsite_id) { if ($subsite_id) { $Subsite = Subsite::findOrFail($subsite_id); return $Subsite->sitename; } return '总站'; }); } $show->status('处理状态')->as(function ($status) { if ($status) { return '已处理'; } return '未处理'; }); $show->created_at('申诉时间'); $show->updated_at('处理时间'); /*$show->panel()->tools(function ($tools) { $tools->disableEdit(); $tools->disableDelete(); });*/ return $show; } /** * Make a form builder. * * @return Form */ protected function form() { $form = new Form(new Appeal); $form->display('ID'); $form->display('Created at'); $form->display('Updated at'); return $form; } //发送邮件 public function sendEmail(Request $request) { $username = $request->input('username', ''); $password = $request->input('pwd', ''); $email = $request->input('email', ''); $id = $request->input('ids', ''); if (!$username) { admin_toastr('请输入登录用户名!', 'error'); return back(); } if (!$password) { admin_toastr('请输入登录密码!', 'error'); return back(); } if (!$id || !$email) { admin_toastr('发送失败,参数错误!', 'error'); return back(); } if (!fieldRegex($email, 'email')) { admin_toastr('发送失败,邮箱格式错误!', 'error'); return back(); } $body = '您好,您的帐号申诉已被受理!您的登录账号是:'.$username.',登录密码是:'.$password.'。'; $title = '账号申诉回执邮件'; $this->emailService->sendMail($email, EmailService::TEMPLATE_SEND_CONTENT, ['title'=>$title], ['content'=>$body]); //修改处理字段 $update_data = array( 'status' => 1, 'updated_at' => date('Y-m-d H:i:s', time()) ); $id_arr = explode(',', $id); Appeal::whereIn('id', $id_arr)->update($update_data); admin_toastr('回执邮件发送成功!', 'success'); return back(); } }