123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841 |
- <?php
- namespace App\Admin\Controllers\Person;
- use App\Admin\Exports\Person\ResumeExport;
- use App\Admin\Extensions\Form\ValueForm;
- use App\Http\Controllers\Controller;
- use App\Models\AuditReason;
- use App\Models\Company;
- use App\Models\Member;
- use App\Models\Pms;
- use App\Models\Resume;
- use App\Models\SmsRule;
- use App\Models\SmsTemplate;
- use App\Models\Subsite;
- use App\Services\Common\EmailService;
- use App\Services\Common\SmsService;
- use App\Validators\Rules\MobileRule;
- 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;
- use Encore\Admin\Widgets\Tab;
- use Encore\Admin\Widgets\Table;
- use Illuminate\Http\Request;
- use phpDocumentor\Reflection\Types\Context;
- class ResumeController extends Controller
- {
- use HasResourceActions;
- protected $smsService;
- protected $emailService;
- protected $resume;
- /**
- * AjaxController constructor.
- * @param $smsService
- */
- public function __construct(SmsService $smsService, EmailService $emailService, Resume $resume)
- {
- $this->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<time()){
- $expires = '[已过期]';
- $style = 'color:#CCCCCC';
- }
- if ($images) {
- return '<span class="vtip" title="<img src='.upload_asset($images).' width=120 height=120>">
- <img class="avatar small" src="'.upload_asset($images).'" align="absmiddle" style="width: 36px;height: 36px;">
- </span> '.'<span style="'.$style.'">'.htmlspecialchars($this->fullname).' '.$expires.'</span>';
- } else {
- return '<span class="vtip" ></span> '. '<span style="'.$style.'">'.$this->fullname.' '.$expires.'</span>';
- }
- })->width(200);
- $grid->title('简历名称')->display(function ($title) {
- return '<a href="/content/resumes/show?id='.$this->id.'&token=1" target="_blank">'.$title.'</a>';
- })->width(150);
- $grid->complete_percent('简历完整度')->display(function ($complete_percent) {
- return $complete_percent.'%';
- })->label();
- $grid->audit('审核状态')->display(function ($audit) {
- if ($audit==0) {
- return'<span style="color:#666666">审核未通过</span><a style="margin-left: 5px;" ls="'.$this->id.'" class="audit_log"><i class="fa fa-eye"></i></a>';
- } elseif ($audit==2) {
- return'<span style="color: #009900">审核通过</span><a style="margin-left: 5px;" ls="'.$this->id.'" class="audit_log"><i class="fa fa-eye"></i></a>';
- } else {
- return'<span style="color:#FF6600">等待审核</span><a style="margin-left: 5px;" ls="'.$this->id.'" class="audit_log"><i class="fa fa-eye"></i></a>';
- }
- });
- $grid->display('公开')->display(function ($display) {
- return $display ? '公开' : '保密';
- });
- $grid->entrust('委托状态')->display(function ($entrust) {
- $value = $entrust - time();
- if ($value < 0) {
- return'<span style="color:#666666">无</span>';
- } elseif ($value >= 0 && $value < 59) {
- return'<span style="color:#009900">'.$value.'秒</span>';
- } elseif ($value >= 60 && $value < 3600) {
- $min = intval($value / 60);
- return'<span style="color:#009900">'.$min.'分钟</span>';
- } elseif ($value >=3600 && $value < 86400) {
- $h = intval($value / 3600);
- return'<span style="color:#009900">'.$h.'小时</span>';
- } elseif ($value >= 86400 && $value < 86400*30) {
- $d = intval($value / 86400);
- return'<span style="color:#009900">'.intval($d).'天</span>';
- } elseif ($value >= 86400*30 && $value < 86400*30*12) {
- $mon = intval($value / (86400*30));
- return'<span style="color:#009900">'.$mon.'月</span>';
- return $mon."月";
- } else {
- $y = intval($value / (86400*30*12));
- return'<span style="color:#009900">'.$y.'年</span>';
- }
- });
- 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("<button class='btn btn-primary btn-xs jobaudit' data-code=".$actions->row['id'].">审核</button>");
- }
- if (Admin::user()->can('perosn_business')) {
- $actions->append('<button class="btn btn-primary btn-xs business" ls="'.$actions->row['uid'].'" ld="'. htmlspecialchars($actions->row['fullname']) .'" title="业务" >业务</button>');
- }
- if (Admin::user()->can('person_resume_matching')) {
- if (!empty($actions->row['entrust']) && $actions->row['entrust']>time()) {
- $actions->append('<button class="btn btn-primary btn-xs piPei" ls="'.$actions->row['id'].'" ld="'.$actions->row['uid'].'" title="匹配" >匹配</button>');
- }
- }
- 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
- <div class="btn-group" data-toggle="buttons">
- <label class="btn btn-google btn-sm" id="audit_resume" title="审核简历">
- <i class="fa fa-audio-description"></i>
- <input type="radio" class="user-gender">审核简历
- </label>
- </div>
- 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 = '<img border="0" src="'.$imk.'">';
- } 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 = [
- [
- '<div class="manitem"><a target="_blank" href="/admin/personal/managerRes/'.$members['id'].'">简历管理</a></div>',
- '<div class="manitem"><a target="_blank" href="/admin/personal/points?uid='.$members['id'].'&utype='.$members['utype'].'">积分管理</a></div>',
- '<div class="manitem"><a target="_blank" href="'.admin_base_path("/firm/order/personal")."?uid=".$members['id'].'">充值/订单</a></div>',
- '<div class="manitem"><a target="_blank" href="">简历推广</a></div>',
- '<div class="manitem"><a target="_blank" href="/admin/personal/applyJobs?personal_uid='.$members['id'].'">申请的职位</a></div>',
- '<div class="manitem"><a target="_blank" href="/admin/personal/members?id='.$members['id'].'">个人资料</a></div>',
- ]
- ];*/
- $header3 = ['分析统计'];
- $rows3= [
- [
- '<div class="manitem"><a target="_blank" href="">行为分析</a></div>',
- '<div class="manitem" ><a target="_blank" href="">会员日志</a></div>',
- ]
- ];
- $header4 = ['联系会员 (手机:'.$members['mobile'].',邮箱:'.$members['email'].')'];
- $sendSms = '';
- $sendEmail = '';
- $sendSys = '';
- if (Admin::user()->can('person_business_sms')) {
- $sendSms = '<div class="manitem"><a style="cursor:pointer" id="fa_sms" ls="'.$members['mobile'].'">发送短信</a></div>';
- }
- if (Admin::user()->can('person_business_email')) {
- $sendEmail = '<div class="manitem" ><a style="cursor:pointer" id="fa_email" ls="'.$members['email'].'">发送邮件</a></div>';
- }
- if (Admin::user()->can('person_business_sys')) {
- $sendSys = '<div class="manitem" ><a style="cursor:pointer" id="fa_sys" ls="'.$members['id'].'">发送站内信</a></div>';
- }
- $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 = '<div style="height:30px;">对 <strong style="color:#FF6600">'. htmlspecialchars($fullname) .'</strong> 进行以下操作<span style="color: #999999;padding-left: 8px;">用户名:'.htmlspecialchars($members['username']).',uid:'.$uid.'</span> <a target="_blank" href="'.admin_base_path().'/personal/manager/into/'.$members['id'].'">进入会员中心>></a></div>';
- }
- 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('
- <strong style="color:#FF6600">
- <span>您当前配置的短信接口是【阿里大鱼】。</span>
- </strong>
- ');
- $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('<label style="color: rgb(0, 153, 0)"><input type="checkbox" name="pms_notice" value="1" checked="checked">站内信通知</label>');
- 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')]);
- }
- }
- }
- }
- }
|