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->editForm($id)->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 PersonalJobsApply); $grid->model()->when(get_subsite_id()>0, function ($query) { $query->whereHas('resumes', function ($query) { $query->where('subsite_id', get_subsite_id()); }); })->orderBy('id', 'desc'); $grid->id('ID'); $grid->jobs_name('职位名称')->width(200); $grid->company_name('公司名称')->width(200); $grid->resume_name('简历名称')->width(150); $grid->is_reply('反馈状态')->display(function ($is_reply) { switch ($is_reply) { case 1: $is_reply = '企业未查看'; break; case 2: $is_reply = '待反馈'; break; case 3: $is_reply = '合适'; break; case 4: $is_reply = '不合适'; break; case 5: $is_reply = '待定'; break; case 6: $is_reply = '未接通'; break; default: $is_reply = '企业未查看'; break; } return $is_reply; }); $grid->column('members.subsite_id', '所属分站')->display(function ($subsite_id) { if ($subsite_id) { $Subsite = Subsite::find($subsite_id); return isset($Subsite->sitename) ? $Subsite->sitename : '未知'; } return '总站'; })->width(150); $grid->created_at('申请时间')->sortable(); $grid->updated_at('更新时间')->sortable(); $grid->actions(function ($actions) use ($grid) { if (Admin::user()->can('person_apply_jobs_delete')) { $actions->disableDelete(false); } }); if (Admin::user()->can('person_apply_jobs_delete')) { $grid->tools(function ($tools) { $tools->batch(function ($batch) { $batch->disableDelete(false); }); }); $grid->disableRowSelector(false); } $grid->filter(function ($filter) { $filter->disableIdFilter(); $filter->where(function ($query) { switch ($this->input) { case 1: $query->whereRaw(" is_reply =".$this->input); break; case 2: $query->whereRaw(" is_reply =".$this->input); break; case 3: $query->whereRaw(" is_reply =".$this->input); break; case 4: $query->whereRaw(" is_reply =".$this->input); break; case 5: $query->whereRaw(" is_reply =".$this->input); break; case 6: $query->whereRaw(" is_reply =".$this->input); break; } }, '申请反馈', 'inter')->select([ 1=>'企业未查看', 2=>'待反馈', 3=>'合适', 4=>'不合适', 5=>'待定', 6=>'未接通', ]); $filter->where(function ($query) { switch ($this->input) { case 3: $date = date('Y-m-d H:i:s', strtotime('-3 day')); $query->whereRaw(" created_at >='".$date."'"); break; case 7: $date = date('Y-m-d H:i:s', strtotime('-7 day')); $query->whereRaw(" created_at >='".$date."'"); break; case 30: $date = date('Y-m-d H:i:s', strtotime('-30 day')); $query->whereRaw(" created_at >='".$date."'"); break; case 180: $date = date('Y-m-d H:i:s', strtotime('-180 day')); $query->whereRaw(" created_at >='".$date."'"); break; case 365: $date = date('Y-m-d H:i:s', strtotime('-365 day')); $query->whereRaw(" created_at >='".$date."'"); break; } }, '申请时间', 'apply')->select([ 3=>'三天内', 7=>'一周内', 30=>'一月内', 180=>'半年内', 365=>'一年内', ]); $filter->like('company_name', '公司名称'); $filter->like('resume_name', '简历名称 '); $filter->equal('personal_uid', '个人会员ID '); if(get_subsite_id()==0){ $filter->equal('members.subsite_id', '所属分站')->select(array_column(get_all_subsite(), 'sitename', 'id')); } }); return $grid; } /** * Make a show builder. * * @param mixed $id * @return Show */ protected function detail($id) { $show = new Show(PersonalJobsApply::findOrFail($id)); $show->id('ID'); $show->jobs_name('职位名称'); $show->company_name('公司名称'); $show->resume_name('简历名称'); $show->is_reply('反馈状态')->as(function ($is_reply) { switch ($is_reply) { case 1: $is_reply = '企业未查看'; break; case 2: $is_reply = '待反馈'; break; case 3: $is_reply = '合适'; break; case 4: $is_reply = '不合适'; break; case 5: $is_reply = '待定'; break; case 6: $is_reply = '未接通'; break; default: $is_reply = '企业未查看'; break; } return $is_reply; }); $show->members('所属分站')->as(function ($members) { if ($members->subsite_id) { $Subsite = Subsite::find($members->subsite_id); return isset($Subsite->sitename) ? $Subsite->sitename : '未知'; } return '总站'; }); $show->created_at('添加时间'); $show->updated_at('更新时间'); return $show; } /** * Make a form builder. * * @return Form */ protected function form() { $form = new Form(new PersonalJobsApply); $form->display('id'); $form->display('created_at'); $form->display('updated_at'); return $form; } /** * Make a form builder. * * @return Form */ protected function editForm($id) { $form = new Form(new PersonalJobsApply); $form->setAction(route('admin.personal.addPoints')); $MembersHandsel = MembersHandsel::findOrFail($id); $utype = $MembersHandsel->utype; $points = MembersHandsel::find($id)->membersPoints()->where('utype', $utype)->first(); $form->display('points_num', '会员积分')->with(function () use ($points) { return $points->points; }); $form->radio('points_type', '操作积分')->options([1 => '增加', 2=> '减少'])->default(1); $form->number('many_point', '增减积分')->default(0)->min(0); $form->text('explain', '操作说明'); $form->switch('ismany', '是否收费?'); $form->number('amount', '收费金额')->default(0)->min(0); $form->hidden('points_id')->default($points->id); $form->footer(function ($footer) { // 去掉`重置`按钮 $footer->disableReset(); // 去掉`查看`checkbox $footer->disableViewCheck(); // 去掉`继续编辑`checkbox $footer->disableEditingCheck(); // 去掉`继续创建`checkbox $footer->disableCreatingCheck(); }); $form->tools(function (Form\Tools $tools) { // 去掉`删除`按钮 $tools->disableDelete(); }); return $form; } protected function createForm() { $form = new Form(new PersonalJobsApply); $form->display('id'); $form->display('created_at'); $form->display('updated_at'); return $form; } /** * Store a newly created resource in storage. * * @return mixed */ public function store() { return $this->createForm()->store(); } /** * Update the specified resource in storage. * * @param int $id * * @return \Illuminate\Http\Response|\Symfony\Component\HttpFoundation\Response */ public function update($id) { return $this->editForm()->update($id); } public function applyJobs(Content $content) { $id = request()->id; $uid = request()->uid; $resume = Resume::where(['id'=>$id])->first(); $member = MemberInfo::where(['uid'=>$uid])->first(); return $content ->header('职位匹配') ->description('列表') ->body(view('admin.jobs.find_jobs')->with(['grid'=>$this->gridApply(),'resume'=>$resume,'member'=>$member])); } /** * Make a grid builder. * * @return Grid */ protected function gridApply() { $grid = new Grid(new Jobs); $grid->model()->where('valid',1)->where('display',1)->whereIn('audit', getJobsStatus())->orderBy('id', 'desc'); $grid->id('ID'); $grid->jobs_name('职位名称'); $grid->company_name('公司名称'); $grid->audit('审核状态')->display(function ($audit) { switch ($audit) { case 1: $audit = '审核通过'; break; case 2: $audit = '审核中'; break; case 3: $audit = '审核未通过'; break; default: $audit = '审核中'; break; } return $audit; }); $grid->column('categoryScale.demand', '公司规模'); $grid->column('categoryTrade.demand', '所属行业'); $grid->column('categoryEducation.demand', '职位要求'); $grid->column('categoryWage.demand', '薪资待遇'); $grid->created_at('添加时间')->sortable(); $grid->updated_at('更新时间')->sortable(); $grid->disableCreateButton(); $grid->disableExport(); $grid->disableActions(); $grid->tools(function ($tools) { $but = << EOT; $tools->append($but); }); $grid->filter(function ($filter) { // 去掉默认的id过滤器 $filter->disableIdFilter(); $filter->column(1/2, function ($filter) { $filter->like('jobs_name', '职位名称'); }); $filter->column(1/2, function ($filter) { $filter->like('company_name', '公司名称'); }); }); return $grid; } public function applyCompanyJobs(PersonJobsApplyRepository $personJobsApplyRepository, JobsRepository $jobsRepository) { $jobs_id = request()->jobs_id; $resume_id = request()->resume_id; $resume_name = request()->resume_name; $personal_uid = request()->personal_uid; if (empty($jobs_id)) { return json_encode(['code'=>0,'info'=>'职位信息不存在!']); } $resume = Resume::find($resume_id); if (!$resume) { return json_encode(['code'=>0,'info'=>'简历不存在!']); } $resume_display = config('aix.personal_set.per_set.show_set.resume_display'); if ($resume_display!=2) { if ($resume->audit!=2) { return json_encode(['code'=>0,'info'=>'审核中或审核未通过的简历无法投递!']); } } else { if ($resume->audit==0) { return json_encode(['code'=>0,'info'=>'审核未通过的简历无法投递!']); } } if ($resume->display!=1) { return json_encode(['code'=>0,'info'=>'简历已关闭,无法投递!']); } $defaultPre = config('aix.personal_set.per_set.per_set.apply_job_min_percent'); if ($defaultPre) { if ($resume->complete_percent<$defaultPre) { return json_encode(['code'=>0,'info'=>'您的简历完整度小于'.$defaultPre.'%,无法投递!']); } } $todayCount = $personJobsApplyRepository->getTodayCount($resume->uid); if ($todayCount>=config('aix.personal_set.per_set.per_set.apply_jobs_max')) { return json_encode(['code'=>0,'info'=>"您每天可以投递".config('aix.personal_set.per_set.per_set.apply_jobs_max')."个职位,今天已投递了{$todayCount}个"]); } $id = array_filter(explode(',', $jobs_id)); $displayJobs = $jobsRepository->getDisplayJobs($id, 2); if (!empty($displayJobs)) { $disJobs = array_diff($id, array_column($displayJobs, 'id')); if (empty($disJobs)) { return json_encode(['code'=>0,'info'=>'您投递的职位已关闭!']); } $id = $disJobs; } $jobsApply = $personJobsApplyRepository->personApplyByTime( $id, $resume->uid, config('aix.personal_set.per_set.per_set.apply_job_space') ); if (!empty($jobsApply)) { $disApply = array_diff($id, array_column($jobsApply, 'jobs_id')); if (empty($disApply)) { return json_encode(['code'=>0,'info'=>'您已经申请过这个职位了!']); } $id = $disApply; } $jobs = $jobsRepository->getJobs($id); $arr = []; foreach ($jobs as $key => $val) { $arr[$key]['resume_id'] = $resume_id; $arr[$key]['resume_name'] = $resume_name; $arr[$key]['personal_uid'] = $personal_uid; $arr[$key]['jobs_id'] = $val->id; $arr[$key]['jobs_name'] = $val->jobs_name; $arr[$key]['company_id'] = $val->company_id; $arr[$key]['company_name'] = $val->company_name; $arr[$key]['is_apply'] = 2; $arr[$key]['created_at'] = date('Y-m-d H:i:s', time()); $arr[$key]['updated_at'] = date('Y-m-d H:i:s', time()); } $res = PersonalJobsApply::insert($arr); if ($res) { return json_encode(['code'=>1,'info'=>'投递成功!']); } else { return json_encode(['code'=>0,'info'=>'投递失败!']); } } }