| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792 | <?php/** * Created by PhpStorm. * User: michaelwu * Date: 2018/11/14 * Time: 9:40 */namespace App\Http\Controllers\Web\Content;use App\Http\Controllers\Web\WebBaseController;use App\Models\Ad;use App\Models\Jobs;use App\Repositories\CompanyRepository;use App\Repositories\MemberLogRepository;use App\Services\Common\CategoryService;use App\Services\Company\JobsService;use App\Services\Content\FeedbackService;use Illuminate\Http\Request;use App\Exceptions\ResponseException;use App\Services\Content\ReportService;use App\Services\Content\TaskService;use App\Services\Company\PersonalJobsApplyService;use App\Services\Company\CompanyService;use App\Services\Person\PersonFavoriteService;use App\Services\Content\AdService;use App\Services\Common\SearchService;use App\Services\Common\HotWordService;use App\Validators\Content\ReportValidatorRequest;use App\Validators\Content\MsgValidatorRequest;use Illuminate\Support\Facades\Cache;class JobsController extends WebBaseController{    protected $jobsService;    protected $categoryService;    protected $feedbackService;    protected $reportService;    protected $taskService;    protected $personalJobsApplyService;    protected $companyService;    protected $personFavoriteService;    protected $adService;    protected $searchService;    protected $hotWordService;    protected $memberLogRepository;    /**     * JobsController constructor.     * @param $JobsService     * @param $categoryService     * @param $feedbackService     * @param $reportService     * @param $taskService     * @param $personalJobsApplyService     * @param $companyService     * @param $personFavoriteService     * @param $adService     * @param $searchService     * @param $hotWordService     */    public function __construct(MemberLogRepository $memberLogRepository,JobsService $jobsService, CategoryService $categoryService, FeedbackService $feedbackService, ReportService $reportService, TaskService $taskService, PersonalJobsApplyService $personalJobsApplyService, CompanyService $companyService, PersonFavoriteService $personFavoriteService, AdService $adService, SearchService $searchService, HotWordService $hotWordService)    {        $this->jobsService = $jobsService;        $this->categoryService = $categoryService;        $this->feedbackService = $feedbackService;        $this->reportService = $reportService;        $this->taskService = $taskService;        $this->personalJobsApplyService = $personalJobsApplyService;        $this->companyService = $companyService;        $this->personFavoriteService = $personFavoriteService;        $this->adService = $adService;        $this->searchService = $searchService;        $this->hotWordService = $hotWordService;        $this->memberLogRepository=$memberLogRepository;    }    public function index(Request $request)    {        $citycategory = $request->input('citycategory');        $search_type = $request->input('search_type', 'jobs');        if ($search_type == 'company') {            return redirect(route('jobs.companyList', array('list_type'=>'AIX_companylist')));        } else {            session(['hotword_show_type' => 1]);            //职位搜索            //$citys = $this->categoryService->getCitys($citycategory);   //获取地标地段            //$district_info = $this->categoryService->getDefaultDistrictInfo(); //获取默认地区信息            $job_category = $this->categoryService->getJobsCategoryInfo();      //获取职位分类信息            $filter_where = array(                'AIX_wage'         => 100,                'AIX_jobtag'       => 100,                'AIX_trade'        => 100,                'AIX_scale'        => 100,                'AIX_jobs_nature' => 100,                'AIX_education'   => 100,                'AIX_experience'  => 100            );            $categories = $this->categoryService->getCategories($filter_where);     //过滤条件信息            //广告位            $ad_where = array(                'theme'       => 'default',                'org'         => 'Home',                'alias'       => 'AIX_jobs_list_right',                'num'         => '1'            );            $ad_infos = $this->adService->getAds($ad_where);            $hotWords = $this->hotWordService->getHotWords(array('type'=>1), 'list_order desc,w_hot desc', '21');    //热门关键词            $job_hotwords = array_slice($hotWords->toArray(), 0, 10);            $company_hotwords = $this->hotWordService->getHotWords(array('type'=>2), 'list_order desc,w_hot desc', '10');            $param_array = array('citycategory','wage','jobtag','trade','scale','nature','education','experience','settr','jobcategory','key','sort', 'search_cont','license','apply','search_type','lng','lat','range','wa','wage_min','wage_max');            $params= array();            if ($request->all()) {                foreach ($request->all() as $k => $v) {                    if (in_array($k, $param_array) && $v) {                        $params[$k] = $v;                    }                }            }            //处理薪资参数            $deal_params = $params;            $customize_params = $params;            $nowage_params = $params;            if (array_has($params, 'wage') && (array_has($params, 'wage_min') || array_has($params, 'wage_max'))) {                unset($deal_params['wage']);                unset($nowage_params['wage']);            }            if (array_has($customize_params, 'wage_min')) {                unset($customize_params['wage_min']);                unset($nowage_params['wage_min']);            }            if (array_has($customize_params, 'wage_max')) {                unset($customize_params['wage_max']);                unset($nowage_params['wage_max']);            }            $map_data = array();            if (array_has($params, 'lng') && array_has($params, 'lat') && (array_has($params, 'range') || array_has($params, 'wa'))) {                if (array_has($params, 'range')) {                    $map_data = array('lng'=>$params['lng'],'lat'=>$params['lat'],'range'=>$params['range']);                } elseif (array_has($params, 'wa')) {                    $map_data = array('lng'=>$params['lng'],'lat'=>$params['lat'],'range'=>round($params['wa']/1000, 2));                } else {                    $map_data = array('lng'=>$params['lng'],'lat'=>$params['lat'],'range'=>config('aix.system.map.map.map_range'));                }            }            $show_filter = false;            $filter_array = array('sort', 'search_cont','license','apply','search_type');            if ($params && (count($params) <= count($filter_array))) {                foreach ($params as $k => $v) {                    if (!in_array($k, $filter_array)) {                        $show_filter = true;                        break;                    }                }            } elseif (count($params) > count($filter_array)) {                $show_filter = true;            }            $hidden_all_result = 0;            $show_login_notice = 0;            $list_limit = '';            $order_by = array('stime'=>'desc', 'refresh_time'=>'desc');            $search_key = '';            $where = array();            if ($params) {                $search_key = array_has($params, 'key')?$params['key']:'';                if (array_has($params, 'sort')) {                    if ($params['sort'] == 'rtime') {                        $order_by = 'refresh_time';                    } else {                        $order_by = $params['sort'];                    }                } else {                    $order_by = array('stime'=>'desc', 'refresh_time'=>'desc');                }            }            $is_subsite = 0;            $subsites = Cache::get('subsites_list');            if ($subsites) {                if (!array_has($params, 'citycategory')) {                    if (get_subsite_id() > 0) {                        $citycategory = $subsites[get_subsite_id()]['district'];                    }                }                $is_subsite = 1;            }            $citys = $this->categoryService->getCitys($citycategory);   //获取地标地段            $district_info = $this->categoryService->getDefaultDistrictInfo(); //获取默认地区信息            $where = $this->setWhere($deal_params, $citys, $job_category);   //组合where条件            if (config('aix.companyset.search_com.search_basic.jobs_search_login')==1 && !auth('web-company')->check() && !auth('web-member')->check()) {                $need_login_params = $param_array;                if ($is_subsite ==1) {                    unset($need_login_params[array_search('citycategory', $need_login_params)]);                };                foreach ($params as $k => $v) {                    if (in_array($k, $need_login_params) && $v) {                        $hidden_all_result = 1;                        $where[] = array('id','=',0); //设置该条件使查询结果为空                        break;                    }                }                $show_login_notice = 1;                $list_limit = config('aix.companyset.search_com.search_basic.jobs_search_num_login');            }            $callback = function ($query) {                $query->with(['company.membersSetmeal']);            };            $list = $this->searchService->search('Job', $where, $order_by, $search_key, '10', '', $callback);            if ($list->total()>0) {                $list_items = $this->jobsService->dealjobFilelds($list->items(), $map_data);            } else {                $list_items = array();            }            $emergency_jobs = $this->searchService->searchEmergencyJobs(4);       //紧急招聘            $recommend_jobs = $this->searchService->searchRecommendJobs(5, $this->getUser());   //推荐职位            //设置职位默认显示方式            if (!session('jobs_show_type')) {                $type = config('aix.companyset.comset.show_set.jobs_list_show_type');                session(['jobs_show_type' => $type]);            }            //设置薪资视图显示            $wage_info = '';            if (array_has($params, 'wage_min') || array_has($params, 'wage_max')) {                $wage_min = array_has($params, 'wage_min')?array_get($params, 'wage_min'):0;                $wage_max = array_has($params, 'wage_max')?array_get($params, 'wage_max'):0;                if ($wage_min>0 && $wage_max==0) {                    $wage_info = $wage_min.'以上/月';                } elseif ($wage_min==0 && $wage_max>0) {                    $wage_info = $wage_min.'以下/月';                } else {                    $wage_info = $wage_min.'-'.$wage_max.'/月';                }                //$wage_info = $this->jobsService->dealWage(0, $wage_min, $wage_max);            } elseif (array_has($params, 'wage')) {                if (array_has($categories, 'AIX_wage') && array_has($categories['AIX_wage'], $params['wage'])) {                    $wage_info = $categories['AIX_wage'][$params['wage']]['demand'];                }            }            $return_data = array(                'search_type'        => $search_type,                'city'                => $citys,                'categories'         => $categories,                'params'              => $params,                'wage_params'        => $deal_params,                'customize_params'   => $customize_params,                'nowage_params'      => $nowage_params,                'wage_info'          => $wage_info,                'district_info'      => $district_info,                'job_category'       => $job_category,                'ad_info'             => $ad_infos,                'hotWords'            => $hotWords,                'job_hotwords'       => $job_hotwords,                'company_hotwords'   => $company_hotwords,                'list'                 => $list,                'list_items'          => $list_items,                'show_login_notice'  => $show_login_notice,                'hidden_all_result'  => $hidden_all_result,                'show_filter'         => $show_filter,                'limit'                => $list_limit,                'emergency_jobs'      => $emergency_jobs,                'recommend_jobs'      => $recommend_jobs,            );            return view('app.content.jobs.list', $return_data);        }    }    public function comList(Request $request)    {        session(['hotword_show_type' => 2]);        $return_data = array();        $search_key = $request->input('key', '');        $trade = $request->input('trade');        $nature = $request->input('nature');        $param_array = array('key','trade','nature');        $params= array();        $where = array();        if ($request->all()) {            foreach ($request->all() as $k => $v) {                if (in_array($k, $param_array) && $v) {                    $params[$k] = $v;                    if ($k !='key') {                        $where[] = array($k, '=', $v);                    }                }            }        }        $where[] = array('user_status', '=', 1);        $where[] = array('subsite_ids', '=', get_subsite_id());        //$order_by = array('refresh_time'=>'desc','id'=>'desc');        $order_by = '';        $list = $this->searchService->search('Company', $where, $order_by, $search_key);        if ($list->total() >0) {            //处理企业信息            $list_items = $this->companyService->dealCompanyFields($list->items());        } else {            $list_items = array();        }        $filter_where = array(            'AIX_trade'         => 100,            'AIX_company_type' => 100        );        $categories = $this->categoryService->getCategories($filter_where);        //热门关键字        $job_hotwords = $this->hotWordService->getHotWords(array('type'=>1), 'list_order desc,w_hot desc', '10');        $company_hotwords = $this->hotWordService->getHotWords(array('type'=>2), 'list_order desc,w_hot desc', '10');        $return_data = array(            'search_type'       => 'company',            'params'             => $params,            'categories'         => $categories,            'list'                => $list,            'list_items'         => $list_items,            'job_hotwords'       => $job_hotwords,            'company_hotwords'   => $company_hotwords,        );        //企业搜索        return view('app.content.jobs.company_list', $return_data);    }    public function setWhere($params, $citys, $job_category)    {        $where = array();        //审核状态过滤        if (config('aix.companyset.comset.show_set.jobs_display')==1) {            $where[] = array('audit','=',1);        } else {            $where[] = array('audit','<>',3);        }        $where[] = array('valid','=',1);        $where[] = array('display','=',1);        if ($params) {            foreach ($params as $k => $v) {                if ($k == 'citycategory') {                    //地标地段                    $where[] = array('district','=',$citys['select']['id']);                } elseif ($k == 'jobcategory') {                    //职位分类                    if ($job_category && $v && array_get($job_category['spell'], $v)) {                        if ($job_category && $v && array_get($job_category['spell'], $v)) {                            $where[] = array('intention_jobs_id','=',$job_category['spell'][$v]['id']);                        }                    }                } elseif ($k=='jobtag') {                    //职位亮点                    $where[] = array('tag', '=',$v);                } elseif ($k=='search_cont') {                    if ($v=='setmeal') {                        //名企招聘                        $where[] = array('setmeal_id', '>',1);                    }                } elseif ($k=='license') {                    //营业执照                    $where[] = array('company.certificate_img_audit', '=',1);                } elseif ($k =='settr') {                    //更新时间                    $update_time = date('Y-m-d H:i:s', strtotime(date('Y-m-d', strtotime('-'.$v.' day'))));                    $where[] = array('updated_at', '>=',$update_time);                } elseif ($k =='apply') {                    $where['apply'] = $v;                } elseif ($k =='wa') {                    $where[] = array('range', '=',round($params['wa']/1000, 2));                    if (!(array_has($params, 'lng')&& array_has($params, 'lat'))) {                        $where[] = array('lng', '=', subsite_config('aix.system.map.map.map_x'));                        $where[] = array('lat', '=', subsite_config('aix.system.map.map.map_y'));                    }                } elseif ($k =='wage') {                    //获取薪资最大值和最小值                    $filter_where = array( 'AIX_wage'=> 100);                    $categories = $this->categoryService->getCategories($filter_where);                    if ($categories) {                        $wage = $categories['AIX_wage'][$params['wage']]['origin_demand'];                        if ($wage) {                            $wage = format_wage($wage);                        }                        $wage_arr = explode_wage($wage);                        $where[] = $wage_arr[0];                        $where[] = $wage_arr[1];                    }                } elseif ($k =='wage_min') {                    $where[] = ['wage_min', '>=',$v];                } elseif ($k =='wage_max') {                    $where[] = ['wage_max', '<=',$v];                } elseif ($k !='sort' && $k !='key' && $k !='search_type' && $k !='m_zoom') {                    $where[] = array($k, '=', $v);                }            }        }        $where[] = ['subsite_ids','=', get_subsite_id()];        return $where;    }    public function category()    {        session(['hotword_show_type' => 1]);        $serch_type = null;        $district_info = $this->categoryService->getDefaultDistrictInfo();        //获取职位分类信息        $job_cates = $this->categoryService->getJobsCategories();        //dd($job_cates[0]);        $citys = $this->categoryService->getCitys();        $job_hotwords = $this->hotWordService->getHotWords(array('type'=>1), 'list_order desc,w_hot desc', '10');        $company_hotwords = $this->hotWordService->getHotWords(array('type'=>2), 'list_order desc,w_hot desc', '10');        $return_data = array(            'search_type'      => $serch_type,            'city'              => $citys,            'district_info'    => $district_info,            'job_hotwords'     => $job_hotwords,            'company_hotwords' => $company_hotwords,            'job_cates'         => $job_cates        );        return view('app.content.jobs.category', $return_data);    }    public function hotWord(Request $request)    {        $key = $request->input('query', '');        $key = trim($key);        if (!$key) {            return response()->json(array('status'=>0,'msg'=>'请输入关健字!'));        }    }    public function getUser()    {        $user = array();        if (auth('web-member')->check()) {            $user = auth('web-member')->user();        } elseif (auth('web-company')->check()) {            $user = auth('web-company')->user();        }        return $user;    }    public function show(Request $request)    {        $job_id = $request->input('id');        $job_rst = $this->jobsService->getJobInfo(array('id'=>$job_id), $this->getUser());    //获取job信息        if ($job_rst['status'] == 0) {            $back_url = \Illuminate\Support\Facades\URL::previous();            return $this->showMessage($job_rst['error'], $back_url, true, '上一页', '3');        }        $job_info = $job_rst['job'];        $cate_jobs = $this->searchService->searchCateJobs($job_info, 6);      //看了此职位的人还会看(同类别6条其它职位)        $this->putSeoData('job', $job_info);        //当前公司的其它职位        $other_where = array(            array('company_id','=',$job_info->company_id),            array('valid','=',1),            array('display','=',1),            array('id','<>',$job_id)        );        if (config('aix.companyset.comset.show_set.jobs_display')==1) {            $other_where[] = array('audit','=',1);        } else {            $other_where[] = array('audit','<>',3);        }        $other_jobs = $this->jobsService->getOtherJobs($other_where, 6);        $return_data = array(            'info'             => $job_info,            'other_jobs'      => $other_jobs,            'cate_jobs'       => $cate_jobs,            'redirect_url'    => route('jobs.show', ['id'=>$job_info->id])        );        return view('app.content.jobs.job_show', $return_data);    }    public function click(Request $request)    {        $id = $request->input('id');        $rst = $this->jobsService->incrementData(array('id'=>$id), 1, 'click');        $data = array('status'=>0);        if ($rst) {            $data = array('status'=>1);        }        return response()->json($data);    }    //留言    public function sendMsg(MsgValidatorRequest $request)    {        $form_data = array(            'parent_id' => $request->input('parent_id', '0'),            'touid' => $request->input('touid'),            'message' => $request->input('message'),            'ip'       => ip2long($request->getClientIp()),            'ip_address' => '本机地址'        );        $rst = $this->feedbackService->sendMsg($form_data, 3);        $data = array('status'=>0);        if ($rst) {            $data = array('status'=>1,'msg'=>'反馈成功,感谢您对本站的关注!','insert_id'=>$rst['data']['id']);        } else {            $data = array('msg'=>'数据保存失败!');        }        return response()->json($data);    }    //收藏职位    public function favor(Request $request)    {        $jid = $request->jid;        $reg = $this->jobsService->jobFavor($jid);        $return_data = array('status'=>0,'msg' => '收藏失败!');        if ($reg) {            $return_data = array( 'status'=>1, 'msg' => '收藏成功!');        }        return response()->json($return_data);    }    public function loginDig(Request $request)    {        $html = '';        $redirect_url = $request->input('redirect_url', route('home'));        if ($request->input('type')=='per') {            $html = view('app.common.ajax.per_login', ['redirect_url'=>$redirect_url])->render();        } elseif ($request->input('type')=='com') {            $html = view('app.common.ajax.com_login', ['redirect_url'=>$redirect_url])->render();        }        $return_data = array( 'status'=>1, 'html' => $html);        return response()->json($return_data);    }    //职位举报    public function report(Request $request)    {        $jobs_id = $request->input('jobs_id');        if (!$jobs_id) {            throw new ResponseException('请选择要举报的职位!');        }        $report_types  = $this->reportService->getReportTypes('1');        $taskInfo = $this->taskService->getTask('2', 'report_jobs'); //举报积分信息        $page_data = array('type_arr'=>$report_types,'jobs_id'=>$jobs_id,'taskInfo'=>$taskInfo);        $html = view('app.common.ajax.report_job', $page_data)->render();        $return_data = array( 'status'=>1, 'html' => $html);        return response()->json($return_data);    }    public function reportJobs(ReportValidatorRequest $request)    {        $report_type = $request->input('report_type');        $jobs_id     = $request->input('jobs_id');        $telephone   = trim($request->input('telephone'));        $content     = trim($request->input('content'));        if (!$content) {            throw new ResponseException('请填写备注说明!');        }        if (!$telephone) {            throw new ResponseException('请填写联系电话!');        }        //添加举报信息        $report_data = array(            'utype' => 1,            'utype_id' => $jobs_id,            'type_id'  => $report_type,            'phone'    => $telephone,            'content'  => $content,            'audit'    => 1        );        $rst = $this->reportService->addReport($report_data);        if ($rst) {            //添加会员日志            $user_info = array(                'uid' => auth('web-member')->user()->id,                'utype' =>2,                'username' => auth('web-member')->user()->username,                'ip' => ip2long($request->getClientIp()),                'log_address'=>'本机地址'            );//            $this->feedbackService->addMembersLog($user_info, '2042', '投诉职位(职位id:'.$jobs_id.')');            if(!$this->memberLogRepository->createLog(auth('web-member')->user(),2042,$jobs_id)){                throw new \Exception("日志记失败!");            }            $return_data = array( 'status'=>1, 'msg' => '投诉成功!请等待管理员核实!');            return response()->json($return_data);        } else {            throw new ResponseException('举报失败!');        }    }    //职位申请    public function apply(Request $request)    {        //判断个人资料是否完善        $jobs_id = $request->input('jobs_id');        $resume_id = $request->input('resume_id');        if (!$jobs_id) {            throw new ResponseException('请选择要投递的职位!');        }        if (!is_array($jobs_id)) {            $jobs_id = explode(',', $jobs_id);        }        if ($resume_id) {            //选择投递简历后            $apply_rst = $this->personalJobsApplyService->applyJobs($jobs_id, $resume_id, $this->getUser());            //完整度不够            $return_data = array();            if (array_get($apply_rst, 'status') == 0 && array_get($apply_rst, 'complete')) {                $resume_complete = array_get($apply_rst, 'complete');                $page_data = array('info'=>$resume_complete);                $html = view('app.common.ajax.apply_job_percent_tip', $page_data)->render();                $return_data = array(                    'status' => array_get($apply_rst, 'status'),                    'html'   => $html,                    'resume_id' => $resume_id                );                return response()->json($return_data);            } else if (array_get($apply_rst, 'status') == 0) {                return response()->json($return_data);            }            $tpl = 'app.common.ajax.batch_delivery_success';            if ($apply_rst['data']['failure']) {                $tpl = 'app.common.ajax.batch_delivery_fail';            }            //TODO 获取微信公众号名称            $tpl_data = array(                'jid'=>$jobs_id,                'show_points' => $apply_rst['show_points'],                'apply' => $apply_rst['data'],                'user_points' => $apply_rst['points_info'],            );            $tpl_html =  view($tpl, $tpl_data)->render();            $return_data = array(                'status'    => array_get($apply_rst, 'status'),                'html'      => $tpl_html,                'fail_jids' => $apply_rst['fail_job_ids']            );            return response()->json($return_data);        } else {            //未选择投递简历前            $rst = $this->personalJobsApplyService->ifJobApply($jobs_id, $this->getUser());            //判断是否需要选择简历            if (array_get($rst, 'status') == 2) {                $page_data = array('status'=>array_get($rst, 'status'),'resumes'=>array_get($rst, 'resumes'),'def_resume'=>array_get($rst, 'def_resume'));                $html = view('app.common.ajax.apply_resume', $page_data)->render();                $return_data = array( 'status'=>2, 'html' => $html);                return response()->json($return_data);            } else {                //判断                $return_data = array();                if (array_get($rst, 'status') == 0 && array_get($rst, 'complete')) {                    $resume_complete = array_get($rst, 'complete');                    $page_data = array('info'=>$resume_complete);                    $html = view('app.common.ajax.apply_job_percent_tip', $page_data)->render();                    $return_data = array(                        'status' => array_get($rst, 'status'),                        'html'   => $html,                        'resume_id' => array_get($rst, 'resume_id')                    );                    return response()->json($return_data);                }                $tpl = 'app.common.ajax.batch_delivery_success';                if ($rst['data']['failure']) {                    $tpl = 'app.common.ajax.batch_delivery_fail';                }                //获取微信公众号名称                $tpl_data = array(                    'jid'=>$jobs_id,                    'show_points' => $rst['show_points'],                    'apply' => $rst['data'],                    'user_points' => $rst['points_info'],                );                $tpl_html =  view($tpl, $tpl_data)->render();                $return_data = array(                    'status' => array_get($rst, 'status'),                    'html'   => $tpl_html,                    'fail_jids'   => $rst['fail_job_ids']                );                return response()->json($return_data);            }        }    }    public function jobMap(Request $request)    {        //设置职位默认显示方式        if (!session('jobs_show_type')) {            $type = config('aix.companyset.comset.show_set.jobs_list_show_type');            session(['jobs_show_type' => $type]);        }        $params = $request->all();        $param_array = array('key','wage','trade','scale','nature','education','experience','settr','lng','lat','range','wa','m_zoom','search_type','sort','license',"apply",'search_cont');        $params= array();        if ($request->all()) {            foreach ($request->all() as $k => $v) {                if (in_array($k, $param_array) && $v) {                    $params[$k] = $v;                }            }        }        $position_search = false;        if ($request->input('search_type')=='position') {            $position_search = true;        }        $filter_array = array('sort', 'search_cont','license','apply','search_type','key','wa','lng','lat','m_zoom');        $show_filter = $this->showFilter($params, $filter_array);        $filter_where = array(            'AIX_wage'         => 100,            'AIX_jobtag'       => 100,            'AIX_trade'        => 100,            'AIX_scale'        => 100,            'AIX_jobs_nature' => 100,            'AIX_education'   => 100,            'AIX_experience'  => 100        );        $categories = $this->categoryService->getCategories($filter_where);        $where = $this->setWhere($params, array(), array());   //组合where条件        $order_by = ['stime'=>'desc','refresh_time'=>'desc'];        $search_key = '';        if ($params) {            if (array_has($params, 'sort')) {                if ($params['sort'] == 'rtime') {                    $order_by = ['refresh_time'=>'desc'];                } else {                    $order_by = [$params['sort']=>'desc'];                }            }            if (array_has($params, 'key')) {                $search_key = $params['key']?$params['key']:'';            }        }        $map_data = array();        if (array_has($params, 'lng') && array_has($params, 'lat') && array_has($params, 'wa')) {            $map_data = array('lng'=>$params['lng'],'lat'=>$params['lat'],'map'=>1);        }        $list = $this->searchService->search('Job', $where, $order_by, $search_key);        $list_items = array();        $job_companys = array();        if ($list->total()>0) {            $list_items = $this->jobsService->dealjobFilelds($list->items(), $map_data);            $job_companys = $this->jobsService->dealJobCompanies($list_items);        }        $emergency_jobs = $this->searchService->searchEmergencyJobs(4);     //紧急招聘        $recommend_jobs = $this->searchService->searchRecommendJobs(5, $this->getUser());      //推荐职位        $map_info = $this->getMapInfo();        $return_data = array(            'params'         => $params,            'categories'     => $categories,            'show_filter'    => $show_filter,            'list'            => $list,            'list_items'     => $list_items,            'job_companys'   => $job_companys,            'emergency_jobs' => $emergency_jobs,            'position_search'=> $position_search,            'recommend_jobs' => $recommend_jobs,            'map_info'        => $map_info        );        return view('app.content.jobs.map', $return_data);    }    public function getMapInfo()    {        $m_zoom       = subsite_config('aix.system.map.map.max_level');        $map_center_x = subsite_config('aix.system.map.map.map_x');        $map_center_y = subsite_config('aix.system.map.map.map_y');        return ['m_zoom'=>$m_zoom,'map_center_x'=>$map_center_x,'map_center_y'=>$map_center_y];    }    public function showFilter($params, $filter_array)    {        $show_filter = false;        if ($params && (count($params) <= count($filter_array))) {            foreach ($params as $k => $v) {                if (!in_array($k, $filter_array)) {                    $show_filter = true;                    break;                }            }        } elseif (count($params) > count($filter_array)) {            $show_filter = true;        }        return $show_filter;    }}
 |