| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989 | <?phpnamespace App\Admin\Controllers\Company;use Aix\Sms\Contracts\Smser;use App\Admin\Exports\Company\JobsExport;use App\Admin\Extensions\Tools\DialogTool;use App\Http\Controllers\Controller;use App\Models\Admin\AdminRole;use App\Models\AuditReason;use App\Models\Category;use App\Models\CategoryDistrict;use App\Models\CategoryJobs;use App\Models\Company;use App\Models\Jobs;use App\Models\JobsContact;use App\Models\Subsite;use App\Models\SubsiteJob;use App\Models\ViewJob;use App\Repositories\JobsRepository;use App\Services\Common\EmailService;use App\Services\Common\PmsService;use App\Services\Common\SmsService;use App\Services\Common\WechatService;use App\Services\SubsiteService;use Encore\Admin\Auth\Permission;use Encore\Admin\Controllers\HasResourceActions;use Encore\Admin\Facades\Admin;use Encore\Admin\Form;use Encore\Admin\Grid;use Encore\Admin\Grid\Filter\TimestampBetween;use Encore\Admin\Layout\Content;use Encore\Admin\Show;use Encore\Admin\Widgets\Table;use Illuminate\Http\Request;use Illuminate\Support\Facades\DB;use Illuminate\Support\Facades\Input;use Illuminate\Support\MessageBag;class JobsController extends Controller{    use HasResourceActions;    protected $jobsRepository;    protected $pmsService;    protected $subsiteService;    protected $smsService;    protected $wechatService;    protected $emailService;    /**     * JobsController constructor.     * @param JobsRepository $jobsRepository .     * @param SubsiteService $subsiteService .     * @param PmsService $pmsService .     */    public function __construct(JobsRepository $jobsRepository, PmsService $pmsService, SubsiteService $subsiteService, SmsService $smsService, WechatService $wechatService, EmailService $emailService)    {        $this->jobsRepository = $jobsRepository;        $this->pmsService     = $pmsService;        $this->subsiteService = $subsiteService;        $this->smsService     = $smsService;        $this->wechatService  = $wechatService;        $this->emailService   = $emailService;    }    /**     * Index interface.     *     * @param Content $content     * @return Content     */    public function index(Content $content)    {        $grid = $this->grid()->render();        return $content            ->header('职位管理')            ->description('列表')            ->body(view('admin.jobs.index')->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)    {        $js = <<<ETO        $(document).ready(function() {             $('.radio-inline,.iCheck-helper').click(function() {                var val = $(this).closest(".radio-inline").find("input:radio").val();                 if (val == '0') {                    $("input[name=wage]").parents('.form-group').hide();                 }                 else if (val == '1') {                    $("input[name=wage]").parents('.form-group').show();                 }            });            if($("input:radio[name='negotiable']:checked").val() == '0')            {                                    $("input[name=wage]").parents('.form-group').hide();            } else {                $("input[name=wage]").parents('.form-group').show();            }        });ETO;        Admin::script($js);        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->form($id = 0));    }    /**     * Make a grid builder.     *     * @return Grid     */    protected function grid()    {        Permission::check('jobs_manager');        $grid = new Grid(new Jobs);        $grid->model()->with(['jobsContact', 'company'])->when(get_subsite_id() > 0, function ($query) {            $query->where('subsite_id', get_subsite_id());        })->when(Admin::user()->isRole(AdminRole::$consultantSlug), function ($query) {            $query->whereHas('companyConsultant', function ($query) {                $query->where('consultant_id', isset(Admin::user()->consultant->id) ? Admin::user()->consultant->id : -1);            });        })->orderByRaw('field(audit,0,2,1,3)')->orderBy('created_at', 'desc');        $grid->model()->when(get_subsite_id() > 0, function ($query) {            $query->where('subsite_id', get_subsite_id());        })->when(Admin::user()->isRole('health'), function ($query) {            $query->where('is_health',1);        })->orderByRaw("field(audit,2,1,3,0)")->orderBy('id', 'desc');        $grid->id('id');        $grid->jobs_name('职位名称')->display(function ($jobs_name) {            return "<a href=" . route(url_rewrite('AIX_jobsshow'), ['id' => $this->id]) . " target='_blank' title='" . $jobs_name . "' style='display:inline-block;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;max-width:180px'>" . $jobs_name . "</a>";        })->width(200);        $grid->column('promition', '推广类型')->display(function ($promition) {            $stick     = '';            $emergency = '';            if ($this->stick == 0 && $this->emergency == 0) {                return "<span>无推广</span>";            } else {                if ($this->stick == 1) {                    $stick = "<span>已置顶</span>";                }                if ($this->emergency == 1) {                    $emergency = '<span>已紧急</span>';                }                return $stick . $emergency;            }        });        $grid->company_name('公司名称')->display(function ($company_name) {            return "<a href=" . route(url_rewrite('AIX_companyshow'), ['id' => $this->company_id]) . " title='" . $company_name . "' target='_blank' style='display:inline-block;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;max-width:200px'>" . $company_name . "</a>";        })->width(200);        $grid->audit('审核状态')->display(function ($audit) {            switch ($audit) {                case 0://                    return '未审核<a class="logview" data-id='.$this->id.'><i class="fa fa-eye"></i></a>';                    break;                case 1:                    return '<span style="color: green">审核通过</span><a class="logview" data-id=' . $this->id . '><i class="fa fa-eye"></i></a>';                    break;                case 2:                    return '<span style="color: red">审核中<a class="logview" data-id=' . $this->id . '><i class="fa fa-eye"></i></a></span>';                    break;                case 3:                    return '<span style="color: black">审核未通过</span><a class="logview" data-id=' . $this->id . '><i class="fa fa-eye"></i></a>';                    break;            }        });        if (get_subsite_open()) {            $grid->subsite_id('所属分站')->display(function ($subsite_id) {                if ($subsite_id == 0) {                    return "总站";                } else {                    try {                        $subsite = Subsite::findOrFail($subsite_id);                        return $subsite->sitename;                    } catch (\Exception $exception) {                        return "--";                    }                }            });        }        $grid->refresh_time('刷新时间')->display(function ($refresh_time) {            return date('Y-m-d H:i:s', $refresh_time);        });        $grid->created_at('发布时间');        $grid->tools(function ($tools) {            if (Admin::user()->can('jobs_manager_refresh')) {                $tools->append("<a class='btn btn-sm btn-primary btn-refresh'><i class='fa fa-refresh'></i>职位刷新</a>");            }        });        $grid->click('点击量');        $grid->actions(function ($actions) {            if (Admin::user()->can('jobs_manager_edit')) {                $actions->disableEdit(false);            }            if (Admin::user()->can('company_manager_bussiness')) {                $actions->append("<button class='btn btn-primary btn-xs business' id=" . $actions->row['company_id'] . ">业务</button>");            }            if (Admin::user()->can('jobs_manager_delete')) {                $actions->disableDelete(false);            }            if (Admin::user()->can('jobs_manager_audit')) {                $actions->append("<button class='btn btn-primary btn-xs jobaudit' data-code=" . $actions->row['id'] . ">审核</button>");            }        });        if (Admin::user()->can('jobs_export')) {            $grid->disableExport(false); //显示导出按钮            $grid->exporter(new JobsExport()); //传入自己在第1步创建的导出类        }        $grid->filter(function ($filter) {            // 在这里添加字段过滤器            $filter->column(1 / 2, function ($filter) {                $filter->like('jobs_name', '职位名称');                $filter->equal('company_id', '企业id');                $filter->equal('audit', '职位审核')->select(['1' => '审核通过', '2' => '审核中', '3' => '审核未通过']);                $filter->where(function ($query) {                    if ($this->input == '1') {                        $query->where(['stick' => 0, 'emergency' => 0]);                    } elseif ($this->input == 2) {                        $query->where(['stick' => 1]);                    } elseif ($this->input == 3) {                        $query->where(['emergency' => 1]);                    }                }, '推广类型', 'promotion')->select([0 => '不限', 1 => '未推广', 2 => '置顶', 3 => '紧急'])->default('0');                $filter->equal('valid', '有效状态')->select(['0' => '无效职位', '1' => '有效职位']);                $filter->equal('is_health', '卫健系统')->select([1 => '是', 2 => '否']);                $filter->equal('health_type', '卫健招聘分类')->select([1 => '高层次人才', 2 => '紧缺急需', 3 => '统招', 4 => '编外'])->default(1);                $filter->equal('is_ic', '集成电路')->select([1 => '是', 2 => '否']);            });            $filter->column(1 / 2, function ($filter) {                $filter->equal('id', '职位ID');                $filter->like('company_name', '企业名称');                if (get_subsite_open()) {                    $subsite    = Subsite::where('effective', 1)->select('id', 'sitename')->get();                    $subsiteArr = [];                    if ($subsite) {                        $subsiteArr = $subsite->toArray();                        $subsiteArr = array_column($subsiteArr, 'sitename', 'id');                    }                    $subsiteArr[0] = "总站";                    ksort($subsiteArr);                    if (get_subsite_id() == 0) {                        $filter->equal('subsite_id', '所属分站')->select($subsiteArr);                    }                }                $filter->between('created_at', '发布时间')->datetime();                $filter->use(new TimestampBetween('refresh_time', '刷新时间'))->datetime();            });        });        //审核模态框        $grid->tools(function ($tools) {            if (Admin::user()->can('jobs_manager_delete')) {                $tools->batch(function (Grid\Tools\BatchActions $batch) {                    $batch->disableDelete(false);                });            }            if (Admin::user()->can('jobs_manager_audit')) {                $form = new \Encore\Admin\Widgets\Form();                $form->action(route('jobs.audit'));                $form->radio('audit1', '审核状态')->options([1 => '审核通过', 3 => '审核未通过'])->default(1);                $states = [                    'on'  => ['value' => 1, 'text' => '是', 'color' => 'success'],                    'off' => ['value' => 0, 'text' => '否', 'color' => 'danger'],                ];                $form->textarea('reason', '备注');                $form->html("<input type='checkbox' name='is_send' checked value='1'/>站内信通知");                $config = [                    'button'        => "审核",//添加的按钮文字                    'title'         => "将所选职位",//弹窗标题                    'dialog_cancel' => "取消",//取消文字                    'dialog_ok'     => "确认",//确认文字                    'is_batch'      => true,//是否批量操作,如果是批量操作则提交表单时会带上ids参数                ];                $tools->append(new DialogTool($form, $config));            }        });        return $grid;    }    /**     * Make a show builder.     *     * @param mixed $id     * @return Show     */    protected function detail($id)    {        $show = new Show(Jobs::findOrFail($id));        $jobs = Jobs::findOrFail($id);        $show->id('ID');        $show->jobs_name('职位名称');        $show->valid('在招状态')->as(function ($valid) {            switch ($valid) {                case 1:                    return "在招";                    break;                case 0:                    return '关闭';                    break;            }        });        $show->audit('审核状态')->as(function ($audit) {            switch ($audit) {                case 1:                    return "审核通过";                    break;                case 2:                    return "审核中";                    break;                case 3:                    return "审核未通过";                    break;                case 0:                    break;            }        });        $show->nature('职位性质')->as(function ($nature) {            if (!$nature) {                return '不限';            } else {                return get_category($nature);            }        });        $show->ygxs('用工形式')->as(function ($ygxs) {            if (isset(Category::categoryType('AIX_ygxs')[$ygxs])) {                return Category::categoryType('AIX_ygxs')[$ygxs];            } else {                return "";            }        });        $show->techlevel('技能等级')->as(function ($techlevel) {            if (isset(Category::categoryType('AIX_techlevel')[$techlevel])) {                return Category::categoryType('AIX_techlevel')[$techlevel];            } else {                return "";            }        });        if ($jobs->ygxs != 363) { //不等于小时工显示            $show->syq('试用期时间')->as(function ($syq) {                if (isset(Category::categoryType('zs_syq')[$syq])) {                    return Category::categoryType('zs_syq')[$syq];                } else {                    return "";                }            });            if ($jobs->syq != 367) { //试用期无不显示                $show->syqxz_min('试用期薪资');            }        } else {            $show->wage_min('小时工薪资')->as(function ($wage_min) {                return $wage_min . "元/小时";            });        }        /**         * 比较坑的Show 关联,必须要全小写,如果你关联的和你获取名字一样那直接不显示....         **/        $show->jobscontact()->contact('联系人')->as(function ($contact) {            return $contact->contact;        });        $show->jobscontact()->contact_show('联系人是否公开')->as(function ($contact) {            return $contact->contact_show ? "公开" : "不公开";        });        $show->jobscontact()->telephone('电话')->as(function ($contact) {            return $contact->telephone;        });        $show->jobscontact()->telephone_show('电话是否公开')->as(function ($contact) {            return $contact->telephone_show ? "公开" : "不公开";        });        $show->jobscontact()->email('邮箱')->as(function ($contact) {            return $contact->email;        });        $show->jobscontact()->email_show('邮箱是否公开')->as(function ($contact) {            return $contact->email_show ? "公开" : "不公开";        });        $show->category('职位分类')->as(function ($category) {            return get_job_category_cn($this->topclass . '.' . $category . '.' . $this->subclass);        });        $show->subsite_id('所属分站')->as(function ($subsite_id) {            if ($subsite_id == 0) {                return "总站";            } else {                $subsite = Subsite::findOrFail($subsite_id);                return $subsite->sitename;            }        });        $show->district('工作地区')->as(function ($district) {            return get_district_cn($district);        });        $show->negotiable('是否面议')->as(function ($negotiable) {            if ($negotiable) {                return '是';            } else {                return '否';            }        });        if ($jobs->wage == -1) {            $show->wage_cn('薪资待遇')->as(function () {                return $this->wage_min . '~' . $this->wage_max . '/月';            });        } elseif ($jobs->wage == 0) {            $show->wage_cn('薪资待遇')->as(function () {                return "面议";            });        } else {            $show->wage_cn('薪资待遇')->as(function () {                return get_category($this->wage);            });        }        $show->department('所属部门');        $show->education('学历要求')->as(function ($education) {            if ($education) {                return get_category($education);            } else {                return '不限';            }        });        $show->experience('工作经验')->as(function ($experience) {            if ($experience) {                return get_category($experience);            } else {                return '不限';            }        });        $show->sex('性别要求')->as(function ($sex) {            if (!$sex) {                return '不限';            } else {                return $sex == 1 ? "男" : "女";            }        });        $show->amount('招聘人数');        $show->tag('职位亮点')->as(function ($tag) {            $tagid = implode(',', $tag);            if ($tagid) {                return get_tag_cn($tagid);            } else {                return '';            }        });        $show->jobs_content('职位描述');        $show->created_at('创建时间');        $show->updated_at('更新时间');        return $show;    }    /**     * Make a form builder.     *     * @return Form     */    protected function editForm($id)    {        Permission::check('jobs_manager_edit');        $form = new Form(new Jobs);        $form->tab('职位信息', function (Form $form) use ($id) {            $jobsData = Jobs::where('id', $id)->select('audit', 'negotiable', 'age', 'topclass', 'category', 'subclass', 'district', 'wage', 'wage_min', 'wage_max')->first()->toArray();            session(["jobsData" => $jobsData]);            if ($jobsData['district']) {                $district = string_to_array('.', $jobsData['district']);            }            $form->display('id');            $form->text('jobs_name', '职位名称')->rules(['required'], ['required' => '请填写职位名称'])->setMustMark();            $form->display('company_name', '公司名称');            $form->radio('display', '在招状态')->options([1 => '在招', 2 => '关闭']);            $form->radio('audit', '审核状态')->options([1 => '审核通过', 2 => '审核中', 3 => '审核未通过']);            $jobsNature    = Category::categoryType('AIX_jobs_nature');            $jobsNature[0] = '不限';            $form->radio('nature', '职位性质')->options($jobsNature);//                if (get_subsite_id()==0 && get_subsite_open()) {//                    $subsites = Subsite::where(array('effective'=>1))->orderBy('order', 'asc')->get()->pluck('sitename', 'id');//                    if ($subsites) {//                        $relations = SubsiteJob::where(['jobs_id'=>$id])->get()->pluck('subsite_id')->toArray();//                        $form->multipleSelect('relate_subsites', '同步分站')->options($subsites)->default($relations);////                    }//                } else {//                    $form->hidden('relate_subsites');//                }//                $form->hidden('subsite_id')->value(get_subsite_id());//                $form->select('ygxs', '用工形式')->options(Category::categoryType('AIX_ygxs'))->setMustMark();//                $form->select('techlevel', '技能等级')->options(Category::categoryType('AIX_techlevel'))->setMustMark();            $form->select('topclass', '职位大类')->options(CategoryJobs::List()->pluck('name', 'id'))->load('category', admin_base_path('/sys/categoryJobs/category'))->rules('required', ['required' => '请选择职位大类'])->setMustMark();            $form->select('category', '职位中类')->options(CategoryJobs::category($jobsData['topclass']))->load('subclass', admin_base_path('/sys/categoryJobs/category'))->rules('required', ['required' => '请选择职位中类'])->setMustMark();            $form->select('subclass', '职位小类')->options(CategoryJobs::category($jobsData['category']))->rules('required', ['required' => '请选择职位小类'])->setMustMark();            if (!empty($district)) {                if (!isset($district[1])) {                    $district[1] = "";                    $district[2] = "";                }//没有的话给默认值                $form->select('province', '所属省份')->options(CategoryDistrict::List()->pluck('name', 'id'))->setWidth(3)->load('city', admin_base_path('sys/category/categoryDis'))->rules('required', ['required' => '请选择相应的企业所属省份'])->default($district[0])->setMustMark();                $form->select('city', '所属城市')->options(CategoryDistrict::categoryDis($district[0]))->setWidth(3)->load('area', admin_base_path('sys/category/categoryDis'))->rules('required', ['required' => '请选择相应的企业所属城市'])->default($district[1])->setMustMark();                //$form->select('area', '所属县区')->default(0)->setWidth(3)->setMustMark();            } else {                $form->select('province', '所属省份')->options(CategoryDistrict::List()->pluck('name', 'id'))->setWidth(3)->load('city', admin_base_path('sys/category/categoryDis'))->rules('required', ['required' => '请选择相应的企业所属省份'])->default(0)->setMustMark();                $form->select('city', '所属城市')->setWidth(3)->load('area', admin_base_path('sys/category/categoryDis'))->rules('required', ['required' => '请选择相应的企业所属城市'])->default(0)->setMustMark();                //$form->select('area', '所属县区')->setWidth(3)->default(0)->setMustMark();            }//                $form->select('syq', '试用期时间')->options(Category::categoryType('zs_syq'))->rules('required', array('required'=>'请选择试用期时间'))->setMustMark();//                $form->number('syqxz_min', '试用期薪资')->min(config('aix.companyset.comset.com_set.wage_min'));            if ($jobsData['wage'] == 0) {                $form->hidden('wage');                $form->number('wage_min', '最低薪资')->min(config('aix.companyset.comset.com_set.wage_min'))->help("请填写大于" . config('aix.companyset.comset.com_set.wage_min') . "的10的倍数");                $form->number('wage_max', '最高薪资')->help("请填写大于最低薪资的10的倍数");            } else {                $option     = Category::categoryType('AIX_wage');                $option[-1] = '面议';                $form->select('wage', '薪资待遇')->options($option)->default($jobsData['wage']);                $form->hidden('wage_min');                $form->hidden('wage_max');            }            $education      = Category::categoryType('AIX_education');            $education['0'] = '不限';            $form->radio('education', '学历要求')->options($education);            $experience      = Category::categoryType('AIX_experience');            $experience['0'] = "不限";            $form->radio('experience', '工作经验')->options($experience);            $form->radio('sex', '性别要求')->options([0 => '不限', 1 => '男', 2 => '女']);            $form->radio('is_health', '卫健系统')->options([1 => '是', 2 => '否'])->default(2);            $form->radio('health_type', '卫健招聘分类')->options([1 => '高层次人才', 2 => '紧缺急需', 3 => '统招', 4 => '编外'])->default(1);            $form->radio('is_ic', '集成电路')->options([1 => '是', 2 => '否'])->default(2);            $form->radio('is_deformity', '是否接受残疾人')->options([1 => '是', 2 => '否'])->default(2);            $form->radio('is_soldier', '是否接受退役军人')->options([1 => '是', 2 => '否'])->default(2);            $form->number('min_age', '最低年龄')->default(isset($jobsData['age'][0]) ? $jobsData['age'][0] : '')->min(16)->max(65)->help('最低年龄不能低于国家规定用工年龄');            $form->number('max_age', '最高年龄')->default(isset($jobsData['age'][1]) ? $jobsData['age'][1] : '')->min(16)->max(65)->help('最高年龄不能高于65周岁');            $form->number('amount', '招聘人数')->min(1)->max(99)->rules(['required'], ['required' => '请输入招聘人数'])->help('请填写招聘人数1~99')->setMustMark();            $form->multipleSelect('tag', '职位亮点')->options(Category::categoryType('AIX_jobtag'));            $form->textarea('jobs_content', '职位描述')->attribute(['maxlength' => 2000])->rules(['required'], ['required' => "请填写职位描述"])->setMustMark();        })->tab('联系人', function (Form $form) {            $form->text("contact.contact", '联系人')->setWidth(3);            $form->radio('contact.contact_show', '联系人是否公开')->options([0 => '不公开', 1 => '公开']);            $form->text('contact.telephone', '联系电话')->setWidth(3);            $form->radio('contact.telephone_show', '联系电话是否公开')->options([0 => '不公开', 1 => '公开']);//                $form->text('contact.landline_tel', '固定电话')->setWidth(3)->help('区号-号码-分机号(以“-”分隔)');  //这个字段引起问题//                $form->radio('contact.landline_tel_show', '固定电话是否公开')->options([0=>'不公开',1=>'公开']);            $form->text('contact.email', 'Email')->setWidth(3);            $form->radio('contact.email_show', 'Email是否公开')->options([0 => '不公开', 1 => '公开']);            $form->text('contact.address', '联系地址')->setWidth(3);        });        $form->disableEditingCheck();        $form->disableCreatingCheck();        $form->disableViewCheck();        $form->disableReset();        $form->tools(function ($tools) {            $tools->disableView();            $tools->disableDelete();        });        $form->ignore('province');        $form->ignore('city');        $form->ignore('area');        $form->ignore('min_age');        $form->ignore('max_age');        $form->ignore(['relate_subsites']);        $form->saving(function (Form $form) {            $minage = Input::get('min_age');            $maxage = Input::get('max_age');            if ($maxage && $minage) {                if ($maxage <= $minage) {                    $error = new MessageBag([                        'title'   => '提示',                        'message' => '最高年龄不能小最低年龄',                    ]);                    return back()->with(compact('error'));                }            }            if ($form->wage == -1) {                $form->wage_min = 0;                $form->wage_max = 0;            } else {                if ($form->wage != 0) {                    $wage = explode('~', format_wage(get_category($form->wage)));                    if (isset($wage[1])) {                        $form->wage_max = $wage[1];                    }                    $form->wage_min = $wage[0];                } else {                    if ($form->wage_min < config('aix.companyset.comset.com_set.wage_min')) {                        $error = new MessageBag([                            'title'   => '提示',                            'message' => '最低薪资请填写大于' . config('aix.companyset.comset.com_set.wage_min'),                        ]);                        return back()->with(compact('error'));                    }                    if ($form->wage_min % 10 != 0) {                        $error = new MessageBag([                            'title'   => '提示',                            'message' => '薪资请填写10的倍数',                        ]);                        return back()->with(compact('error'));                    }                    if ($form->wage_max % 10 != 0) {                        $error = new MessageBag([                            'title'   => '提示',                            'message' => '薪资请填写10的倍数',                        ]);                        return back()->with(compact('error'));                    }                    if (isset($form->wage_max) && $form->wage_max && $form->wage_max < $form->wage_min) {                        $error = new MessageBag([                            'title'   => '提示',                            'message' => '最高薪资不能低于最低薪资',                        ]);                        return back()->with(compact('error'));                    }                }            }            if (($form->min_age && !$form->max_age) || ($form->max_age && !$form->min_age)) {                $error = new MessageBag([                    'title'   => '提示',                    'message' => '请同时填写最高和最低年龄',                ]);                return back()->with(compact('error'));            }            if ($form->min_age && $form->min_age < 16) {                $error = new MessageBag([                    'title'   => '提示',                    'message' => '最低年龄不能小于16岁',                ]);                return back()->with(compact('error'));            }            if ($form->max_age && $form->min_age > 65) {                $error = new MessageBag([                    'title'   => '提示',                    'message' => '最高年龄不能大于65岁',                ]);                return back()->with(compact('error'));            }            if ($form->syqxz_min && $form->syqxz_min < $form->wage_min * 0.8) {                $error = new MessageBag([                    'title'   => '提示',                    'message' => '试用期薪资不得低于正式工资的80%',                ]);                return back()->with(compact('error'));            }            if ($form->syq == 367) {//无试用期 就把工资清0                $form->syqxz_min = null;            }        });        $form->saved(function (Form $form) use ($id) {            $province = \Illuminate\Support\Facades\Request::input('province');            $city     = \Illuminate\Support\Facades\Request::input('city');            $area     = \Illuminate\Support\Facades\Request::input('area');            $district = $province . '.' . $city . '.' . $area;            $age[]    = \Illuminate\Support\Facades\Request::input('min_age');            $age[]    = \Illuminate\Support\Facades\Request::input('max_age');            $age = implode('-', $age);            $jobsData = session('jobsData');//记录修改前的数据            if (!empty($jobsData)) {                if ($jobsData['audit'] != $form->model()->audit) {//修改了审核状态                    //审核日志$reason                    $auditData           = [];                    $auditData['ids']    = $id;                    $auditData['status'] = $form->model()->audit;                    $auditData['type']   = 3;                    $auditData['reason'] = "";                    AuditReason::addData($auditData);                }            }            Jobs::where('id', $id)->update(['district' => $district, 'age' => $age]);            $subsites = \Illuminate\Support\Facades\Request::input('relate_subsites');            if ($subsites) {                $subsites = array_merge([get_subsite_id()], $subsites);                SubsiteJob::where('jobs_id', $form->model()->id)->delete();                $set_data = [];                foreach ($subsites as $k => $v) {                    if ($v !== null) {                        $set_data[] = [                            'jobs_id'    => $form->model()->id,                            'subsite_id' => $v,                            'created_at' => date('Y-m-d H:i:s'),                            'updated_at' => date('Y-m-d H:i:s'),                        ];                    }                }                SubsiteJob::insert($set_data);            }        });        return $form;    }    public function update($id)    {        $result = $this->editForm($id)->update($id);        event_search_update(Jobs::class, (string)$id, 'update');        $cids              = Jobs::where('id', $id)->pluck('company_id')->toArray();        $company_condition = [['whereIn', 'id', $cids]];        event_search_update(Company::class, $company_condition, 'update');        return $result;    }    public function jobsAudit(Request $request)    {        $ids = $request->ids;        if (!$ids) {            return admin_toastr('请选择要审核的职位', 'error');        }        $id          = explode(',', $ids);        $job_com_ids = $this->jobsRepository->findWhereIn('id', $id, ['company_id', 'id', 'jobs_name'])->toArray();        $reason = $request->reason;        $audit  = $request->audit1;        $data   = ['audit' => $audit];        if (Jobs::jobsUpdate($id, $data)) {            event_search_update(Jobs::class, implode(',', $id), 'update');            if ($job_com_ids) {                $company_ids = [];                foreach ($company_ids as $k => $c) {                    $company_ids[] = $c['company_id'];                }                $company_condition = [['whereIn', 'id', $company_ids]];                event_search_update(Company::class, $company_condition, 'update');            }            switch ($request->audit1) {                case 1:                    $html  = "通过审核";                    $alias = Smser::TEMPLATE_SMS_JOBSALLOW;                    break;                case 3:                    $html  = "未通过审核";                    $alias = Smser::TEMPLATE_SMS_JOBSNOTALLOW;                    break;            }//            if ($job_com_ids) {//                $company_ids = [];//                foreach ($job_com_ids as $k => $c) {//                    $company_ids[] = $c['company_id'];//                    $company = Company::find($c['company_id']);//                    $this->wechatService->sendTemplateMessage($company, 'set_jobsallow',[//                        'keyword1'=>[$c['jobs_name'],'#0000ff'],//                        'keyword2'=>[$html,$css],//                        'keyword3'=>[$reason,'#0000ff'],//                    ],route('mobile.firm.jobs.list'));////                    if($company->email){//                        $this->emailService->sendMail($company->email, $email, ['jobsname'=>$c['jobs_name']], ['jobsname'=>$c['jobs_name'],'sitedomain'=>route('com.index')]);//                    }////                }//                $company_condition = [['whereIn','id', $company_ids]];//                event_search_update(Company::class, $company_condition, 'update');//            }            $mobile = [];            foreach ($id as $key => $val) {                $jobsInfo = Jobs::with('jobsContact')->find($val);                if ($jobsInfo->jobsContact && $jobsInfo->jobsContact->telephone) {                    if (!in_array($jobsInfo->jobsContact->telephone, $mobile)) {                        $mobile[] = $jobsInfo->jobsContact->telephone;                        $this->smsService->sendSms($jobsInfo->jobsContact->telephone, $alias, ['sitename' => config('aix.system.site.site.site_name'), 'jobsname' => $jobsInfo->jobs_name, 'sitedomain' => config('aix.system.site.site.site_domain')]);                    }                }            }            //审核日志$reason            $auditData           = [];            $auditData['ids']    = $id;            $auditData['status'] = $audit;            $auditData['type']   = 3;            $auditData['reason'] = $reason;            AuditReason::addData($auditData);            if ($request->is_send) {                // 站内信                $insertData = [];                foreach ($job_com_ids as $key => $val) {                    $insertData[$key] = [                        'utype'      => 1,                        'msgtype'    => 1,                        'msgfromuid' => admin::user()->id,                        'msgfrom'    => admin::user()->username,                        'msgtoname'  => getComUserName($val['company_id']),                        'msgtouid'   => $val['company_id'],                        'message'    => '职位ID:' . $val['id'] . ',职位名称:' . $val['jobs_name'] . ',' . $html . ',【备注】' . $reason,                        'new'        => 1,                        'created_at' => date('Y-m-d H:i:s', time()),                        'updated_at' => date('Y-m-d H:i:s', time()),                    ];                }                $this->pmsService->addBatchPms($insertData);            }            if ($request->type) {                admin_toastr('职位审核成功', 'success');                return back();            } else {                return admin_toastr('职位审核成功', 'success');            }        } else {            if ($request->type) {                admin_toastr('职位审核失败', 'error');                return back();            } else {                return admin_toastr('职位审核失败', 'error');            }        }    }    public function jobsbusiness(Content $content)    {        return $content->body(view(admin_base_path() . '/jobsbusiness/jobs_business'));    }    public function jobsrefresh(Request $request)    {        $ids = $request->ids;        if (!$ids) {            return admin_toastr('请选择要刷新的职位', 'error');        }        $id   = explode(',', $ids);        $data = ['refresh_time' => time()];        if (Jobs::jobsUpdate($id, $data)) {            event_search_update(Jobs::class, implode(',', $id), 'update');            $com_ids           = $this->jobsRepository->findWhereIn('id', $id, ['company_id'])->toArray();            $company_condition = [['whereIn', 'id', $com_ids]];            event_search_update(Company::class, $company_condition, 'update');            return admin_toastr('职位刷新成功', 'success');        } else {            return admin_toastr('职位刷新失败', 'error!');        }    }    //删除职位    public function destroy($id)    {        $ids = explode(',', $id);        $company_id = Jobs::select('company_id')->whereIn('id', $ids)->get()->toArray();        $cids       = [];        if ($company_id) {            foreach ($company_id as $k => $v) {                $cids[] = $v['company_id'];            }        }        DB::beginTransaction();//检查数据库事务        try {            if (false === Jobs::destroy($ids)) {                throw  new \Exception('删除职位失败!');            }            if (false === JobsContact::whereIn('job_id', $ids)->delete()) {                throw  new \Exception('职位联系人删除失败,删除职位失败!');            }            if (false === ViewJob::whereIn('job_id', $ids)->delete()) {                throw  new \Exception('职位被浏览信息删除失败,删除职位失败!');            }            $condition = [['whereIn', 'id', $ids]];            event_search_update(Jobs::class, $condition, 'delete');            $company_condition = [['whereIn', 'id', $cids]];            event_search_update(Company::class, $company_condition, 'update');            DB::commit();        } catch (\Exception $e) {            DB::rollback();            return admin_toastr($e->getMessage(), 'error');        }        return admin_toastr('职位删除成功', 'success');    }    public function auditLog(Request $request)    {        $id      = $request->id;        $type    = $request->type;        $headers = ['status' => '审核状态', 'tim' => '审核时间', 'sec' => '描述'];        $data    = [];        $res     = AuditReason::where(['type_id' => $id, 'type' => $type])->orderBy('id', 'desc')->get();        if (!$res) {            $rows = $data;        } else {            foreach ($res as $k => $v) {                if ($v['status'] == 3) {                    $data[$k]['status'] = '审核失败';                } elseif ($v['status'] == 1) {                    $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' => '审核日志'];    }}
 |