smsService = $smsService; $this->emailService = $emailService; $this->resume = $resume; } /** * Index interface. * * @param Content $content * @return Content */ public function index(Content $content) { $grid = $this->grid()->render(); return $content ->header('简历列表') ->description('') ->body(view('admin.resume.resume')->with(['grid'=>$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->form()); } /** * Make a grid builder. * * @return Grid */ protected function grid() { $grid = new Grid(new Resume); $grid->model() /*->when(get_subsite_id()>0, function ($query) { $query->where('subsite_id', get_subsite_id()); $query->whereHas('subsite',function ($query){ $query->where('effective', 1); }); })*/ ->orderByRaw("FIELD(audit, 1,2,0)")->orderBy('updated_at', 'desc'); $grid->id('ID'); $grid->column('memberInfos.images', '姓名')->display(function ($images) { $expires = ''; $style = 'color:#3c8dbc'; if($this->expires && $this->expires    '.''.htmlspecialchars($this->fullname).'  '.$expires.''; } else { return '   '. ''.$this->fullname.'  '.$expires.''; } })->width(200); $grid->title('简历名称')->display(function ($title) { return ''.$title.''; })->width(150); $grid->complete_percent('简历完整度')->display(function ($complete_percent) { return $complete_percent.'%'; })->label(); $grid->audit('审核状态')->display(function ($audit) { if ($audit==0) { return'审核未通过'; } elseif ($audit==2) { return'审核通过'; } else { return'等待审核'; } }); $grid->display('公开')->display(function ($display) { return $display ? '公开' : '保密'; }); $grid->entrust('委托状态')->display(function ($entrust) { $value = $entrust - time(); if ($value < 0) { return''; } elseif ($value >= 0 && $value < 59) { return''.$value.'秒'; } elseif ($value >= 60 && $value < 3600) { $min = intval($value / 60); return''.$min.'分钟'; } elseif ($value >=3600 && $value < 86400) { $h = intval($value / 3600); return''.$h.'小时'; } elseif ($value >= 86400 && $value < 86400*30) { $d = intval($value / 86400); return''.intval($d).'天'; } elseif ($value >= 86400*30 && $value < 86400*30*12) { $mon = intval($value / (86400*30)); return''.$mon.'月'; return $mon."月"; } else { $y = intval($value / (86400*30*12)); return''.$y.'年'; } }); if(get_subsite_open()){ $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) { $actions->disableView(false); if (Admin::user()->can('person_resume_audit')) { $actions->append(""); } if (Admin::user()->can('perosn_business')) { $actions->append(''); } if (Admin::user()->can('person_resume_matching')) { if (!empty($actions->row['entrust']) && $actions->row['entrust']>time()) { $actions->append(''); } } if (Admin::user()->can('person_resume_delete')) { $actions->disableDelete(false); } }); if (Admin::user()->can('person_resume_delete')) { $grid->tools(function ($tools) { $tools->batch(function ($batch) { $batch->disableDelete(false); }); }); $grid->disableRowSelector(false); } $grid->tools(function ($tools) { if (Admin::user()->can('person_resume_audit')) { $but = << EOT; $tools->append($but); } }); if (Admin::user()->can('person_resume_export')) { $grid->disableExport(false); //显示导出按钮 $grid->exporter(new ResumeExport()); //传入自己在第1步创建的导出类 } $grid->filter(function ($filter) { // 去掉默认的id过滤器 // $filter->disableIdFilter(); $filter->column(1/2, function ($filter) { $filter->equal('display', '可见状态')->select([ 0=>'不可见', 1=>'可见' ]); $filter->equal('audit', '审核状态')->select([ 0=>'审核未通过', 1=>'等待审核', 2=>'审核通过', ]); $filter->equal('photo', '简历照片')->select([ 0=>'无', 1=>'有', ]); $filter->where(function ($query) { switch ($this->input) { case 3: $query->whereRaw("entrust > ".time()." and entrust<=".strtotime('3 day')); break; case 7: $query->whereRaw("entrust > ".time()." and entrust<=".strtotime('7 day')); break; case 14: $query->whereRaw("entrust > ".time()." and entrust<=".strtotime('14 day')); break; case 30: $query->whereRaw("entrust > ".time()." and entrust<=".strtotime('30 day')); break; } }, '是否委托', 'entrust')->select([ 3=>'三天内', 7=>'一周内', 14=>'二周内', 30=>'一月内', ]); if(get_subsite_id()==0 && get_subsite_open()){ $filter->equal('subsite_id', '所属分站')->select(array_column(get_all_subsite(), 'sitename', 'id')); } }); $filter->column(1/2, function ($filter) { $filter->equal('uid', '会员ID'); $filter->like('fullname', '姓名'); $filter->like('memberInfos.id_card', '身份证'); $filter->like('memberInfos.phone', '手机号'); $filter->between('created_at', '创建时间')->datetime(); $filter->between('updated_at', '刷新时间')->datetime(); /*$filter->where(function ($query) { switch ($this->input) { case 3: $query->whereRaw("created_at>='".date('Y-m-d H:i:s', strtotime('-3 day'))."'"); break; case 7: $query->whereRaw("created_at>='".date('Y-m-d H:i:s', strtotime('-7 day'))."'"); break; case 30: $query->whereRaw("created_at>='".date('Y-m-d H:i:s', strtotime('-30 day'))."'"); break; } }, '创建时间', 'created_at')->select([ 3=>'三天内', 7=>'一周内', 30=>'一月内', ]); $filter->where(function ($query) { switch ($this->input) { case 3: $query->whereRaw("updated_at>='".date('Y-m-d H:i:s', strtotime('-3 day'))."'"); break; case 7: $query->whereRaw("updated_at>='".date('Y-m-d H:i:s', strtotime('-7 day'))."'"); break; case 30: $query->whereRaw("updated_at>='".date('Y-m-d H:i:s', strtotime('-30 day'))."'"); break; } }, '刷新时间', 'updated_at')->select([ 3=>'三天内', 7=>'一周内', 30=>'一月内', ]);*/ }); }); return $grid; } /** * Make a show builder. * * @param mixed $id * @return Show */ protected function detail($id) { $result = Resume::find($id)->getResumeAllInfo(); if(isset($result->memberInfos->display_images)){ if($result->memberInfos->display_images==1){ $display_images = '公开'; } elseif ($result->memberInfos->display_images==2){ $display_images = '不公开'; }else{ $display_images = '未上传照片'; } }else{ $display_images = '未上传照片'; } if(isset($result->memberInfos->images)){ if($result->memberInfos->images){ $imk = upload_asset($result->memberInfos->images); $images = ''; } else{ $images = ''; } }else{ $images = ''; } if($result->audit==2){ $audit = '已通过审核'; }elseif ($result->audit==0){ $audit = '审核未通过请修改'; }else{ $audit = '正在审核中'; } $resume = [$result->title,$result->display?'公开':'不公开',$display_images, $result->complete_percent.'%',$audit,$result->talent?'高级':'普通',$result->created_at,$result->updated_at]; $member_info = []; if($result->memberInfos){ $data = $result->memberInfos; $member_info = [$data->realname,$data->sex_cn,date('Y')-($data->birthday), $data->height,$data->education_cn,$data->marriage_cn,$data->experience_cn,$data->householdaddress_cn,$data->phone,$data->email,$images]; } $job_intention = [$result->nature_cn,$result->district_cn, $result->wage_cn,$result->intention_jobs,$result->trade_cn]; $profile =[$result->specialty]; $education = []; if(!$result->resumeEducation->isEmpty()){ foreach ($result->resumeEducation as $resumeEducation){ if($resumeEducation->todate){ $time =$resumeEducation->startyear.'年'.$resumeEducation->startmonth.'月-'.'至今'; }else{ $time =$resumeEducation->startyear.'年'.$resumeEducation->startmonth.'月-'.$resumeEducation->endyear.'年'.$resumeEducation->endmonth.'月'; } $education[]= [$time,$resumeEducation->school,$resumeEducation->speciality,$resumeEducation->education_cn]; } } $work = []; if(!$result->resumeWork->isEmpty()){ foreach ($result->resumeWork as $resumeWork){ if($resumeWork->todate){ $time =$resumeWork->startyear.'年'.$resumeWork->startmonth.'月-'.'至今'; }else{ $time =$resumeWork->startyear.'年'.$resumeWork->startmonth.'月-'.$resumeWork->endyear.'年'.$resumeWork->endmonth.'月'; } $work[]= [$time,$resumeWork->companyname,$resumeWork->jobs]; } } $train=[]; if(!$result->resumeTrain->isEmpty()){ foreach ($result->resumeTrain as $resumeTrain){ if($resumeTrain->todate){ $time =$resumeTrain->startyear.'年'.$resumeTrain->startmonth.'月-'.'至今'; }else{ $time =$resumeTrain->startyear.'年'.$resumeTrain->startmonth.'月-'.$resumeTrain->endyear.'年'.$resumeTrain->endmonth.'月'; } $train[]= [$time,$resumeTrain->agency,$resumeTrain->course]; } } $credent = []; if(!$result->resumeCredent->isEmpty()){ foreach ($result->resumeCredent as $resumeCredent){ $time =$resumeCredent->year.'年'.$resumeCredent->month.'月'; $credent[]= [$time,$resumeCredent->name]; } } $language = []; if(!$result->resumeLanguage->isEmpty()){ foreach ($result->resumeLanguage as $resumeLanguage){ $language[]= [$resumeLanguage->language_cn,$resumeLanguage->level_cn]; } } $tag_cn = [$result->tag_cn]; $title = [ '基本设置', '基本信息', '求职意向', '个人简介', '教育经历', '工作经历', '培训经历', '获得证书', '语言能力', '特长标签', ]; $tab_content=[]; foreach ($title as $key => $val) { if ($key==0) { $headers = ['简历名称', '公开设置', '照片公开设置', '简历完整度','简历审核','简历等级','创建时间','刷新时间']; $rows = [ $resume ]; $table = new Table($headers, $rows); } elseif($key==1) { $headers = ['姓名', '性别', '年龄', '身高','学历','婚姻状况','工作经验','户籍','联系电话','联系邮箱','头像']; $rows = [ $member_info ]; $table = new Table($headers, $rows,['base_info']); } elseif($key==2) { $headers = ['期望岗位性质', '期望工作地', '期望月薪', '期望从事的岗位','期望从事的行业']; $rows = [ $job_intention ]; $table = new Table($headers, $rows); } elseif($key==3) { $headers = []; $rows = [ $profile ]; $table = new Table($headers, $rows); } elseif($key==4) { $headers = ['起止年月', '学校名称', '专业名称', '学历']; $rows = $education; $table = new Table($headers, $rows); } elseif($key==5) { $headers = ['起止年月', '公司名称', '职位名称']; $rows = $work; $table = new Table($headers, $rows); } elseif($key==6) { $headers = ['起止年月', '机构名称', '培训课程']; $rows = $train; $table = new Table($headers, $rows); }elseif($key==7) { $headers = ['起止年月', '证书名称']; $rows = $credent; $table = new Table($headers, $rows); }elseif($key==8) { $headers = ['语言类型', '语言等级']; $rows = $language; $table = new Table($headers, $rows); }elseif($key==9) { $headers = []; $rows = [$tag_cn]; $table = new Table($headers, $rows); } $tab_content[$key]['type'] = $val; $tab_content[$key]['form'] = $table; } return view('admin.resume.detail')->with(['contents'=>$tab_content,'result'=>$result])->render(); } /** * Make a form builder. * * @return Form */ protected function form() { $form = new Form(new Resume); $form->display('ID'); $form->display('Created at'); $form->display('Updated at'); return $form; } /** * @审核日志 * @param Request $request * @return array */ public function audit(Request $request) { $id = $request->id; $type = $request->type; $headers = ['status'=>'审核状态', 'tim'=>'审核时间', 'sec'=>'描述']; $res = AuditReason::where(['type_id'=>$id,'type'=>$type])->get(); $data = []; foreach ($res as $k => $v) { if ($v['status']==0) { $data[$k]['status'] = '审核未通过'; } elseif ($v['status']==2) { $data[$k]['status'] = '审核通过'; } else { $data[$k]['status'] = '等待审核'; } $data[$k]['tim'] = $v['created_at']; $data[$k]['sec'] = $v['audit_man'].'--'.$v['reason']; } $rows = $data; $table = new Table($headers, $rows); return ['html'=>$table->render(),'detail'=>'审核日志']; } public function manager(Request $request) { $uid = $request->uid; $fullname = $request->fullname; $members = Member::where(['id'=>$uid])->select(['id','username','email','mobile','utype'])->first(); $header2 = ['会员管理']; $rows2 = ''; /*$rows2 = [ [ '', '', '', '', '', '', ] ];*/ $header3 = ['分析统计']; $rows3= [ [ '', '', ] ]; $header4 = ['联系会员 (手机:'.$members['mobile'].',邮箱:'.$members['email'].')']; $sendSms = ''; $sendEmail = ''; $sendSys = ''; if (Admin::user()->can('person_business_sms')) { $sendSms = ''; } if (Admin::user()->can('person_business_email')) { $sendEmail = ''; } if (Admin::user()->can('person_business_sys')) { $sendSys = ''; } $rows4= [ [ $sendSms, $sendEmail, $sendSys, ] ]; $table2 = new Table($header2, $rows2); $table3 = new Table($header3, $rows3); $table3->style('width:180px'); $table4 = new Table($header4, $rows4); $had = ''; if (Admin::user()->can('person_business_login')) { $had = '
'. htmlspecialchars($fullname) .' 进行以下操作用户名:'.htmlspecialchars($members['username']).',uid:'.$uid.'    进入会员中心>>
'; } return json_encode(['html'=>[$table2->render(),$table3->render(),$table4->render()],'detail'=>'管理','had'=>$had]); } /** * 发送短信 * return json */ public function sms(Request $request) { $mobile = $request->mobile; $form = new \Encore\Admin\Widgets\Form(); $form->action(route('admin.personal.uidSms')); $form->disableReset(); $form->html(' 您当前配置的短信接口是【阿里大鱼】。 '); $form->mobile('mobile', '接受手机')->default($mobile); $form->textarea('message','消息'); $form->hidden('sms_id')->default('sms_custom'); return json_encode(['html'=>$form->render(),'detail'=>'发送短信']); } public function uidSms(Request $request) { $moile = $request->mobile; $sms_id = $request->sms_id; $message = $request->message; if (!$moile || !$sms_id || !$message) { admin_toastr('请把资料信息填写完整!', 'error'); return back(); } $SmsRule = SmsRule::where('alias', $sms_id)->first(); if (isset($SmsRule->status) && !empty($SmsRule->status)) { $this->smsService->sendSms($moile, $sms_id, ['content'=>$message]); admin_toastr('短信发送成功', 'success'); } else { admin_toastr('请先开启短信-短信规则配置!', 'error'); } return back(); } /** * 发送邮件. * return json */ public function email(Request $request) { $email = $request->email; $form = new \Encore\Admin\Widgets\Form(); $form->action(route('admin.personal.uidEmail')); $form->disableReset(); $form->email('email', '收件地址')->default($email); $form->text('title', '邮件标题'); $form->textarea('body', '邮件内容'); return json_encode(['html'=>$form->render(),'detail'=>'发送邮件']); } public function uidEmail(Request $request) { $email = $request->email; $title = $request->title; $body = $request->body; if (!$email || !$title || !$body) { admin_toastr('请把资料信息填写完整!', 'error'); return back(); } $this->emailService->sendMail($email, EmailService::TEMPLATE_SEND_CONTENT, ['title'=>$title], ['content'=>$body]); admin_toastr('邮件发送成功', 'success'); return back(); } /** * 发送站内信 * return json */ public function sys(Request $request) { $uid = $request->uid; $form = new \Encore\Admin\Widgets\Form(); $form->action(route('admin.personal.uidSend')); $form->disableReset(); $form->hidden('uid')->default($uid); $form->textarea('body', '发送内容'); return json_encode(['html'=>$form->render(),'detail'=>'发送站内信']); } public function uidSend(Request $request) { if (!$request->uid) { admin_toastr('数据异常', 'error'); return back(); } if (!$request->body) { admin_toastr('发送内容不能为空!', 'error'); return back(); } $data = []; $url = $request->route()->uri; $use_type = explode('/', $url)[1]; if ($use_type=='personal') { $userManager = Member::findOrfail($request->uid); } else { $userManager = Company::findOrfail($request->uid); } if (!$userManager) { admin_toastr('该用户不存在!', 'error'); return back(); } $data['utype'] = $userManager->utype; $data['msgtype'] = 1; $data['msgfromuid'] = Admin::user()->id; $data['msgfrom'] = Admin::user()->username; $data['msgtoname'] = $userManager->username; $data['msgtouid'] = $userManager->id; $data['message'] = $request->body; if (Pms::create($data)) { admin_toastr('发送成功!', 'success'); } else { admin_toastr('发送失败!', 'error'); } return back(); } /** * return json */ public function auditResume(Request $request) { $id = $request->id; $form = new \Encore\Admin\Widgets\Form(); $form->action(route('admin.personal.auditR')); $form->disableReset(); $form->hidden('id', 'ID')->default($id); $form->radio('audit', '审核')->options([2=>'审核通过',0=>'审核未通过'])->default(2); $form->textarea('remark', '备注'); $form->html(''); return json_encode(['html'=>$form->render(),'detail'=>'审核简历']); } public function auditR(Request $request) { $id = $request->id; $audit = $request->audit; $remark = $request->remark; $pms_notice = $request->pms_notice; $arr = array_filter(explode(',', $id)); if (empty($arr)) { admin_toastr('数据异常', 'error'); return back(); } $reus=Resume::with(['members:id,username,mobile'])->whereIn('id', $arr)->get(); $mobile = []; foreach ($reus as $res) { if (isset($res->members->mobile)) { if (validator_check($res->members->mobile, new MobileRule())) { $mobile[] = $res->members->mobile; } } } $mobile = array_unique($mobile); $sms_id = $audit ? 'sms_resumeallow' : 'sms_resumenotallow'; $result = Resume::whereIn('id', $arr)->update(['audit'=>$audit]); $data=[]; foreach ($arr as $k => $v) { $data[$k]['type'] = 1; $data[$k]['type_id'] = $v; $data[$k]['status'] = $audit; $data[$k]['reason'] = $remark; $data[$k]['audit_man'] = Admin::user()->username; $data[$k]['created_at'] = date('Y-m-d H:i:s', time()); $data[$k]['updated_at'] = date('Y-m-d H:i:s', time()); } $this->auditReason($data); if ($pms_notice) { if ($audit==0) { $stat='审核未通过'; } elseif ($audit==2) { $stat = '审核通过'; } else { $stat='等待审核'; } $da = []; foreach ($reus as $k => $v) { $da[$k]['uid'] = $v['members']['id']; $da[$k]['username'] = $v['members']['username']; $da[$k]['resume_title'] = $v->title; } foreach ($da as $k => $v) { $ds[$k]['msgtype'] = 1; $ds[$k]['msgfromuid'] = Admin::user()->id; $ds[$k]['msgfrom'] = Admin::user()->username; $ds[$k]['msgtoname'] = $v['username'] ? $v['username'] : 'admin'; $ds[$k]['msgtouid'] = $v['uid'] ? $v['uid'] : 0; if ($v['resume_title']) { $resume_title = '('.$v['resume_title'].')'; } else { $resume_title = ''; } $ds[$k]['message'] = $remark ? '简历'.$resume_title.$stat.'<备注:'.$remark.'>' : '简历'.$resume_title.$stat; $ds[$k]['created_at'] = date('Y-m-d H:i:s', time()); $ds[$k]['updated_at'] = date('Y-m-d H:i:s', time()); } Pms::insert($ds); } if ($result) { event_search_update(Resume::class, (string)implode(',', $arr), 'update'); $this->resumeSms($sms_id, $mobile); admin_toastr('审核成功', 'success'); } else { admin_toastr('审核失败', 'error'); } return back(); } /** * CREAT 审核日志. * @param $type * @param $status * @param $reason * @param $audit_man * return arr */ public function auditReason($data) { AuditReason::insert($data); } public function resumeSms($sms_id, $mobile) { $SmsRule = SmsRule::where('alias', $sms_id)->first(); if (isset($SmsRule->status) && !empty($SmsRule->status)) { if ($mobile) { foreach ($mobile as $mobiles) { $this->smsService->sendSms($mobiles, $sms_id, ['sitename'=>config('aix.system.site.site.site_name'),'sitedomain'=>config('aix.system.site.site.site_domain')]); } } } } }