| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841 | <?phpnamespace 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')]);                }            }        }    }}
 |