header('黑名单列表') ->description('') ->body(view('admin.jobfair.jobfair_blacklist')->with(['content'=>$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(view('admin.jobfair.jobfair_blacklist_add')->with(['content'=>$this->createForm()])); } /** * Make a grid builder. * * @return Grid */ protected function grid() { $grid = new Grid(new JobfairBlacklist); $grid->model()->whereHas('companys'); $grid->column('companys.companyname', '公司名称')->width(200); $grid->status('状态')->display(function ($status) { if ($status==1) { return '等待解除'; } else { return '已解除'; } }); $grid->type('类型')->display(function ($type) { if ($type==1) { return '系统拉黑'; } else { return '手动拉黑'; } }); $grid->details('备注'); $grid->add_time('拉黑时间')->display(function ($add_time) { return $add_time ? date('Y-m-d H:i:s', $add_time) : ''; }); $grid->remove_time('解除时间')->display(function ($remove_time) { return $remove_time ? date('Y-m-d H:i:s', $remove_time) : ''; }); $grid->operator('操作人'); $grid->disableExport(); $grid->actions(function ($actions) { if (Admin::user()->can('jobfair_blacklist_unsealing')) { if ($actions->row['status']==1) { $name = '解封'; $status = 2; $actions->append(''); } } }); $grid->tools(function ($tools) use ($grid) { if (Admin::user()->can('jobfair_blacklist_unsealing')) { $but = << EOT; $tools->append($but); } }); if (Admin::user()->can('jobfair_blacklist_unsealing')) { $grid->disableRowSelector(false); } $grid->filter(function ($filter) { $filter->like('companys.companyname', '公司名称'); $filter->equal('status', '状态')->select([ 1 => '等待解除', 2 => '已解除', ]); $filter->equal('type', '类型')->select([ 1 => '系统拉黑', 2 => '手动拉黑', ]); }); if (Admin::user()->can('jobfair_blacklist_create')) { $grid->disableCreateButton(false); } return $grid; } /** * Make a show builder. * * @param mixed $id * @return Show */ protected function detail($id) { $show = new Show(JobfairBlacklist::findOrFail($id)); $show->id('ID'); $show->companys()->companyname('公司名称')->as(function ($companys){ return $companys->companyname; }); $show->status('状态')->as(function ($status) { if ($status==1) { return '等待解除'; } else { return '已解除'; } }); $show->type('类型')->as(function ($type) { if ($type==1) { return '系统拉黑'; } else { return '手动拉黑'; } }); $show->details('备注'); $show->add_time('拉黑时间')->as(function ($add_time) { return $add_time ? date('Y-m-d H:i:s', $add_time) : ''; }); $show->remove_time('解除时间')->as(function ($remove_time) { return $remove_time ? date('Y-m-d H:i:s', $remove_time) : ''; }); $show->operator('操作人'); $show->created_at('Created at'); $show->updated_at('Updated at'); return $show; } /** * Make a form builder. * * @return Form */ protected function form() { $form = new Form(new JobfairBlacklist); $form->display('ID'); $form->display('Created at'); $form->display('Updated at'); return $form; } protected function createForm() { $form = new \Encore\Admin\Widgets\Form();//表单使用admin提供的表单 $form->action(route('blacklist.add')); $JobfairCompany = JobfairCompany::select('company_id')->groupBy('company_id')->get()->toArray(); $companyArr = array_column($JobfairCompany, 'company_id'); $Company = Company::whereIn('id', $companyArr)->select('id', 'companyname')->get()->toArray(); $needAyy = array_column($Company, 'companyname', 'id'); $form->select('company_id', '企业名称')->options($needAyy)->rules([ 'required', ])->setMustMark();; $form->textarea('details', '备注')->rules([ 'required', ])->setMustMark();; $form->disableReset(); return $form->render(); } public function blacklistAdd(Request $request) { $request->validate([ 'company_id' => 'required', 'details' => 'required', ]); $company_id = $request->company_id; $details = $request->details; $JobfairBlacklist = JobfairBlacklist::where(['company_id'=>$company_id])->first(); if ($JobfairBlacklist) { $blackCompany = JobfairBlacklist::where(['company_id'=>$company_id,'remove_time'=>0,'status'=>1])->first(); if ($blackCompany) { admin_toastr('该参会企业已在黑名单之列!', 'error'); return back(); } $result = JobfairBlacklist::where(['company_id'=>$company_id])->update( ['remove_time'=>0,'status'=>1,'operator'=>admin::user()->username,'details'=>$details] ); } else { $result = JobfairBlacklist::create( ['company_id'=>$company_id,'type'=>2,'details'=>$details,'add_time'=>time(),'operator'=>admin::user()->username] ); } if ($result) { admin_toastr('操作成功!!', 'success'); return redirect(route('blacklist.index')); } else { admin_toastr('操作失败!', 'error'); return back(); } } public function blacklistDelete(Request $request) { $id = $request->id; $form = new \Encore\Admin\Widgets\Form(); $form->action(route('blacklist.deleted')); $form->disableReset(); $form->hidden('id', 'ID')->default($id); $form->textarea('details', '备注'); return json_encode(['html'=>$form->render(),'detail'=>'参会企业解封']); } public function blacklistD(Request $request) { $blackArr = []; $company_id = []; $id = $request->id; $details = $request->details; $arr = array_filter(explode(',', $id)); if (empty($id)) { admin_toastr('数据异常!', 'error'); return back(); } if (empty($details)) { admin_toastr('请填写备注!', 'error'); return back(); } $JobfairBlacklist = JobfairBlacklist::whereIn('id', $arr)->get(); if ($JobfairBlacklist->isEmpty()) { admin_toastr('数据异常!', 'error'); return back(); } else { foreach ($JobfairBlacklist as $key => $val) { if ($val->remove_time==0&&$val->status==1) { $blackArr[] = $val->id; $company_id[]=$val->company_id; } } } \DB::beginTransaction(); try { JobfairBlacklist::whereIn('id', $blackArr) ->update(['details'=>$details, 'remove_time'=>time(), 'operator'=>admin::user()->username, 'status'=>2]); if ($company_id) { JobfairCompany::whereIn('company_id', $company_id) ->where('created_at', '<', date('Y-m-d H:i:s', time()))->update(['black_status'=>1]); } \DB::commit(); admin_toastr('操作成功!!', 'success'); return redirect(route('blacklist.index')); } catch (\Exception $e) { \DB::rollback(); admin_toastr('操作失败!', 'error'); return back(); } } }