personalJobsApplyRepository = $personalJobsApplyRepository; $this->jobsService = $jobsService; $this->companyService = $companyService; $this->resumeService = $resumeService; } //首页知名企业 public function searchSeatmealCompanies($params, $type = '') { $list = []; $where = [ ['utype', '=', 1], ['user_status', '=', 1], ]; if ($type == '') { $where[] = ['job_audit_num', '>', 0]; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $where[] = ['audit', '=', 1]; //$where[] = array('job_audit_num','>',0); } else { $where[] = ['audit', '<>', 3]; //$where[] = array('job_sum_num','>',0); } } if (array_has($params, 'seatmeal')) { $where[] = ['setmeal_id', '>', $params['seatmeal']]; $where[] = ['members_setmeal.expire', '=', 0]; } $where[] = ['subsite_ids', '=', get_subsite_id()]; if (array_has($params, 'id')) { $where[] = ['id', 'in', $params['id']]; } $order_by = ['job_new_refresh' => 'desc']; $limit = ''; if (array_has($params, 'size')) { $limit = $params['size']; } $callback = function ($query) { $query->with(['job' => function ($query) { $job_count_map = [['valid', '=', 1], ['display', '=', 1]]; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $job_count_map[] = ['audit', '=', '1']; } else { $job_count_map[] = ['audit', '<>', '3']; } $query->where($job_count_map)->whereHas('subsites', function ($query) { $query->where('subsite_id', get_subsite_id()); })->orderBy('refresh_time', 'DESC'); }]); }; $recommend_job_lists = $this->search('Company', $where, $order_by, '', $limit, '', $callback, true); if ($recommend_job_lists->total() > 0) { $list = $this->companyService->dealSetmealCompany($recommend_job_lists->items(), $params); } return $list; } //紧急招聘 public function searchEmergencyJobs($limit = 10) { $emergency_jobs = []; $emergency_where = [ ['valid', '=', '1'], ['emergency', '=', '1'], ['display', '=', 1], ['subsite_ids', '=', get_subsite_id()], ]; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $emergency_where[] = ['audit', '=', 1]; } else { $emergency_where[] = ['audit', '<>', 3]; } $emergency_job_list = $this->search('Job', $emergency_where, 'stime', '', $limit, 1); if ($emergency_job_list->total() > 0) { $emergency_jobs = $this->jobsService->dealjobList($emergency_job_list->items(), $limit); } return $emergency_jobs; } //推荐职位 public function searchRecommendJobs($limit = 10, $user = [], $type = '') { $recommend_job_items = []; $recommend_where = $this->jobsService->getRecommendWhere($user); $recommend_order = $this->jobsService->getRecommendOrder($user); if (!$user || ($user && $user->utype == 1)) { $recommend_order = ['stime' => 'desc', 'refresh_time' => 'desc']; } if ($recommend_where) { if ($type == '') { $recommend_job_lists = $this->getRecommends($user, 'Job', $recommend_where, $recommend_order, '', $limit, 1); } else { $recommend_job_lists = $this->getRecommends($user, 'Job', $recommend_where, $recommend_order, '', $limit); } } else { $recommend_job_lists = null; } if ($type == 'show_other') { //判断职位数量是否足够页面需求,不满足时已击量很高、置顶、刷新靠前的职位补足(职位不能重复) if ($recommend_job_lists && $recommend_job_lists->total() >= $limit) { $recommend_job_items = $this->jobsService->dealjobFilelds($recommend_job_lists->items(), [], $limit); } else { $jids = []; if ($recommend_job_lists) { $jids = $recommend_job_lists->pluck('id')->toArray(); } $click_jobs_rst = $this->getClickJobs($limit); if ($click_jobs_rst->total() > 0) { $click_jobs = $click_jobs_rst->items(); } else { $click_jobs = []; } if ($click_jobs && $jids) { foreach ($click_jobs as $k => $v) { if (in_array($v->id, $jids)) { unset($click_jobs[$k]); } } } $recommend_jobs = $recommend_job_lists ? $recommend_job_lists->items() : []; $recommend_total = $recommend_job_lists ? $recommend_job_lists->total() : 0; $need_jobs = array_slice($click_jobs, 0, $limit - $recommend_total); $all_jobs = array_merge($recommend_jobs, $need_jobs); $recommend_job_items = array_slice($all_jobs, 0, $limit); $recommend_job_items = $this->jobsService->dealjobFilelds($recommend_job_items); } } elseif ($type == 'show_page') { return $recommend_job_lists; } else { if ($recommend_job_lists && $recommend_job_lists->total() > 0) { $recommend_job_items = $this->jobsService->dealjobFilelds($recommend_job_lists->items(), [], $limit); } } return $recommend_job_items; } //获取点击量高的职位 public function getClickJobs($limit = 50) { $where[] = ['valid', '=', 1]; $where[] = ['display', '=', 1]; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $where[] = ['audit', '=', 1]; } else { $where[] = ['audit', '<>', 3]; } $where[] = ['subsite_ids', '=', get_subsite_id()]; $order = ['click' => 'desc', 'stime' => 'desc', 'refresh_time' => 'desc']; return $this->search('Job', $where, $order, '', $limit); } //获取点击量高的简历 public function getClickResumes($order_by, $job = [], $need_limit = 50) { $click_where = $this->companyService->getRecommendResumeWhere($job); $click_resumes = $this->search('Resume', $click_where, $order_by, '', $need_limit); $click_resumes = $click_resumes->items(); return $click_resumes; } //照片简历 public function searchPhotoResumes($limit = 10, $user = []) { $list = []; $order_by = ['stime' => 'desc', 'click' => 'desc', 'updated_at' => 'desc']; //获取点击量高的简历 $click_where = $this->companyService->getRecommendResumeWhere([]); //添加照片过滤 $click_where[] = ['photo', '=', 1]; $click_where[] = ['member_infos.display_images', '=', 1]; if (config('aix.personal_set.per_set.show_set.resume_img_display') == 1) { $click_where[] = ['photo_audit', '=', 2]; } else { $click_where[] = ['photo_audit', '<>', 0]; } $click_rst = $this->search('Resume', $click_where, $order_by, '', $limit); $click_resumes = $click_rst->items(); //企业用户 - 匹配置顶、刷新靠前的职位 if ($user && $user->utype == 1) { //判断是否有可以匹配的职位 $where = $this->companyService->getRecommendWhere($user); if ($where) { $where['and'][] = ['photo', '=', 1]; if (config('aix.personal_set.per_set.show_set.resume_img_display') == 1) { $where['and'][] = ['photo_audit', '=', 2]; } else { $where['and'][] = ['photo_audit', '<>', 0]; } $where['and'][] = ['member_infos.display_images', '=', 1]; $recommend_resume_lists = $this->getRecommends($user, 'Resume', $where, $order_by, '', $limit); $rids = $recommend_resume_lists->pluck('id')->toArray(); if ($recommend_resume_lists->total() >= $limit) { $list = array_slice($recommend_resume_lists->items(), 0, $limit); } else { //去除已有简历 if ($click_resumes && $rids) { foreach ($click_resumes as $k => $v) { if (in_array($v->id, $rids)) { unset($click_resumes[$k]); } } } $recommend_resumes = $recommend_resume_lists->items(); $recommend_total = $recommend_resume_lists->total(); $need_resumes = array_slice($click_resumes, 0, $limit - $recommend_total); $all_resumes = array_merge($recommend_resumes, $need_resumes); $list = array_slice($all_resumes, 0, $limit); } } else { $list = array_slice($click_resumes, 0, $limit); } } else { $list = array_slice($click_resumes, 0, $limit); } //处理查询数据 if ($list) { $photo_resumes = $this->resumeService->dealResumeFields($list); } else { $photo_resumes = []; } return $photo_resumes; } //最新简历 public function searchNewResumes($limit = 10, $user = []) { $new_resumes = []; $where = []; $where[] = ['display', '=', 1]; if (config('aix.personal_set.per_set.show_set.resume_display') == '1') { $where[] = ['audit', '=', '2']; } else { $where[] = ['audit', '<>', '0']; } $where[] = ['subsite_ids', '=', get_subsite_id()]; $order_by = ['stick' => 'desc', 'updated_at' => 'desc']; $list = $this->search('Resume', $where, $order_by, '', $limit); if ($list->total() > 0) { $new_resumes = $this->resumeService->dealResumeFields($list->items()); } return $new_resumes; } //同行业职位 public function searchCateJobs($job, $limit = 10, $user = []) { $cate_jobs = []; $cate_job_where[] = ['intention_jobs_id', '=', $job->jobcategory_id]; $cate_job_where[] = ['id', '<>', $job->id]; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $cate_job_where[] = ['audit', '=', 1]; } else { $cate_job_where[] = ['audit', '<>', 3]; } $cate_job_where[] = ['display', '=', 1]; $cate_job_where[] = ['valid', '=', 1]; $cate_job_where[] = ['subsite_ids', '=', get_subsite_id()]; $cate_job_list = $this->search('Job', $cate_job_where, 'stime', ''); if ($cate_job_list->total() > 0) { $cate_jobs = $this->jobsService->dealjobList($cate_job_list->items(), 6); } return $cate_jobs; } //最新招聘职位 public function searchNewJobs($limit = 20, $page = '') { $where[] = ['valid', '=', 1]; $where[] = ['display', '=', 1]; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $where[] = ['audit', '=', 1]; } else { $where[] = ['audit', '<>', 3]; } $where[] = ['subsite_ids', '=', get_subsite_id()]; $order = ['refresh_time' => 'desc']; $new_job_lists = $this->search('Job', $where, $order, '', $limit, $page); $list = []; if ($new_job_lists->total() > 0) { $list = $this->jobsService->dealjobFilelds($new_job_lists->items(), [], $limit); } return $list; } public function getRecommends($user, $model, $where, $order_by, $search_key = '', $limit = 10, $page = '', $callback = null) { if ($model == 'Resume') { $list = Resume::search($search_key); if ($callback) { $list->query($callback); } if ($where) { $and_where = []; $or_where = []; if (array_has($where, 'or')) { $or_where = $where['or']; } if (array_has($where, 'and')) { $and_where = $where['and']; } if ($and_where) { $wage_max = 0; $wage_min = 0; foreach ($and_where as $k => $v) { if ($v[1] != '=') { if ($v[0] == 'birthdate') { if ($v[1] == '>=') { $list->whereRange('birthdate', $v[2], null); } elseif ($v[1] == '<=') { $list->whereRange('birthdate', null, $v[2]); } } elseif ($v[0] == 'updated_at') { if ($v[1] == '>=') { $list->whereRange('updated_at', $v[2], null); } elseif ($v[1] == '<=') { $list->whereRange('updated_at', null, $v[2]); } elseif ($v[1] == '>') { $list->whereRange('updated_at', $v[2], null, false); } elseif ($v[1] == '<') { $list->whereRange('updated_at', null, $v[2], false); } } elseif ($v[0] == 'audit') { $list->whereNot('audit', $v[2]); } elseif ($v[0] == 'wage_max') { $wage_max = $v[2] ? $v[2] : null; } elseif ($v[0] == 'wage_min') { $wage_min = $v[2] ? $v[2] : null; } else { if ($v[1] == '<>') { $list->whereNot($v[0], $v[2]); } } } else { $list->where($v[0], $v[2]); } } } if ($or_where) { $list->where(function (SubBuilder $subBuilder) use ($or_where) { foreach ($or_where as $key => $val) { $subBuilder->whereOr(function (SubBuilder $subBuilder) use ($val) { $wage_min = null; $wage_max = null; foreach ($val as $k => $v) { if ($v[1] != '=') { if ($v[0] == 'birthdate') { if ($v[1] == '>=') { $subBuilder->whereRange('birthdate', $v[2], null); } elseif ($v[1] == '<=') { $subBuilder->whereRange('birthdate', null, $v[2]); } } elseif ($v[0] == 'updated_at') { $subBuilder->whereRange('updated_at', $v[2], null, false); } elseif ($v[0] == 'audit') { $subBuilder->whereNot('audit', $v[2]); } elseif ($v[0] == 'wage_max') { $wage_max = $v[2] ? $v[2] : null; } elseif ($v[0] == 'wage_min') { $wage_min = $v[2] ? $v[2] : null; } else { if ($v[1] == '<>') { $subBuilder->whereNot($v[0], $v[2]); } } } else { $subBuilder->where($v[0], $v[2]); } } if ($wage_max && $wage_min) { $subBuilder->where(function (SubBuilder $subBuilder) use ($wage_max, $wage_min) { $subBuilder->whereOr(function (SubBuilder $subBuilder) use ($wage_max, $wage_min) { $subBuilder->whereRange('wage_min', $wage_min, null) ->whereRange('wage_max', null, $wage_max) ->whereRange('wage_max', 0, null, false); }); $subBuilder->whereOr('wage', -1); }); } elseif ($wage_min) { $subBuilder->where(function (SubBuilder $subBuilder) use ($wage_min) { $subBuilder->whereOrRange('wage_min', $wage_min, null); $subBuilder->whereOr('wage', -1); }); } elseif ($wage_max) { $subBuilder->where(function (SubBuilder $subBuilder) use ($wage_max) { $subBuilder->whereOrRange('wage_max', null, $wage_max); $subBuilder->whereOr('wage', -1); }); } }); } }); } } //添加过期时间过滤 $list->where(function (SubBuilder $subBuilder) { $subBuilder->whereOr('expires', 0)->whereOrRange('expires', time(), null); }); if ($user && $user->utype == 1) { $list->whereNotIn('person_shield_companys', [$user->id]); } if (is_array($order_by)) { foreach ($order_by as $k => $v) { $list->orderBy($k, $v); } } else { $list->orderBy($order_by, 'desc'); } if ($page) { return $list->paginate($limit, 'page', $page); } else { return $list->paginate($limit); } } elseif ($model == 'Job') { $list = Jobs::search($search_key); if ($callback) { $list->query($callback); } if ($where) { $and_where = []; $or_where = []; if (array_has($where, 'or')) { $or_where = $where['or']; } if (array_has($where, 'and')) { $and_where = $where['and']; } if ($and_where) { foreach ($and_where as $k => $v) { if ($v[1] != '=') { if ($v[0] == 'audit') { $list->whereNot('audit', $v[2]); } elseif ($v[0] == 'setmeal_id') { if ($v[1] == '>') { $list->whereRange('setmeal_id', $v[2], null, false); } elseif ($v[1] == '<') { $list->whereRange('setmeal_id', null, $v[2], false); } } elseif ($v[0] == 'updated_at') { $list->whereRange('updated_at', $v[2], null, false); } else { if ($v[1] == 'in') { $list->whereIn($v[0], $v[2]); } elseif ($v[1] == '>=') { $list->whereRange($v[0], $v[2], null); } elseif ($v[1] == '<=') { $list->whereRange($v[0], null, $v[2]); } elseif ($v[1] == '<>') { $list->whereNot($v[0], $v[2]); } elseif ($v[1] == '>') { $list->whereRange($v[0], $v[2], null, false); } elseif ($v[1] == '<') { $list->whereRange($v[0], null, $v[2], false); } } } else { $list->where($v[0], $v[2]); } } } if ($or_where) { $list->where(function (SubBuilder $subBuilder) use ($or_where) { foreach ($or_where as $key => $val) { $subBuilder->whereOr(function (SubBuilder $subBuilder) use ($val) { $wage_min = null; $wage_max = null; foreach ($val as $k => $v) { if ($v[1] != '=') { if ($v[0] == 'audit') { $subBuilder->whereNot('audit', $v[2]); } elseif ($v[0] == 'setmeal_id') { if ($v[1] == '>') { $subBuilder->whereRange('setmeal_id', $v[2], null, false); } elseif ($v[1] == '<') { $subBuilder->whereRange('setmeal_id', null, $v[2], false); } } elseif ($v[0] == 'updated_at') { $subBuilder->whereRange('updated_at', $v[2], null, false); } elseif ($v[0] == 'wage_max') { $wage_max = $v[2] ? $v[2] : null; } elseif ($v[0] == 'wage_min') { $wage_min = $v[2] ? $v[2] : null; } else { if ($v[1] == 'in') { $subBuilder->whereIn($v[0], $v[2]); } elseif ($v[1] == '>=') { $subBuilder->whereRange($v[0], $v[2], null); } elseif ($v[1] == '<=') { $subBuilder->whereRange($v[0], null, $v[2]); } elseif ($v[1] == '<>') { $subBuilder->whereNot($v[0], $v[2]); } elseif ($v[1] == '>') { $subBuilder->whereRange($v[0], $v[2], null, false); } elseif ($v[1] == '<') { $subBuilder->whereRange($v[0], null, $v[2], false); } } } else { $subBuilder->where($v[0], $v[2]); } } if ($wage_max && $wage_min) { $subBuilder->where(function (SubBuilder $subBuilder) use ($wage_max, $wage_min) { $subBuilder->whereOr(function (SubBuilder $subBuilder) use ($wage_max, $wage_min) { $subBuilder->whereRange('wage_min', $wage_min, null) ->whereRange('wage_max', null, $wage_max) ->whereRange('wage_max', 0, null, false); }); $subBuilder->whereOr('wage', -1); }); } elseif ($wage_min) { $subBuilder->where(function (SubBuilder $subBuilder) use ($wage_min) { $subBuilder->whereOrRange('wage_min', $wage_min, null); $subBuilder->whereOr('wage', -1); }); } elseif ($wage_max) { $subBuilder->where(function (SubBuilder $subBuilder) use ($wage_max) { $subBuilder->whereOrRange('wage_max', null, $wage_max); $subBuilder->whereOr('wage', -1); }); } }); } }); } } if ($order_by) { if (is_array($order_by)) { foreach ($order_by as $k => $v) { $list->orderBy($k, $v); } } else { $list->orderBy($order_by, 'desc'); } } else { $list->orderBy('refresh_time', 'desc'); } if ($page) { return $list->paginate($limit, 'page', $page); } else { return $list->paginate($limit); } } } public function search($model, $where, $order_by, $search_key = '', $limit = 10, $page = '', $callback = null, $compan_order = false) { if ($model == 'Resume') { $list = Resume::search($search_key); if ($callback) { $list->query($callback); } if ($where) { $wage_min = null; $wage_max = null; foreach ($where as $k => $v) { if ($v[1] != '=') { if ($v[0] == 'birthdate') { if ($v[1] == '>=') { $list->whereRange('birthdate', $v[2], null); } elseif ($v[1] == '<=') { $list->whereRange('birthdate', null, $v[2]); } } elseif ($v[0] == 'updated_at') { $list->whereRange('updated_at', $v[2], null, false); } elseif ($v[0] == 'audit') { $list->whereNot('audit', $v[2]); } elseif ($v[0] == 'wage_max') { $wage_max = $v[2] ? $v[2] : null; } elseif ($v[0] == 'wage_min') { $wage_min = $v[2] ? $v[2] : null; } else { if ($v[1] == 'in') { $list->whereIn($v[0], $v[2]); } elseif ($v[1] == '>=') { $list->whereRange($v[0], $v[2], null); } elseif ($v[1] == '<=') { $list->whereRange($v[0], null, $v[2]); } elseif ($v[1] == '<>') { $list->whereNot($v[0], $v[2]); } elseif ($v[1] == 'in') { $list->whereIn($v[0], $v[2]); } } } else { $list->where($v[0], $v[2]); } } //期望薪资过滤 if ($wage_max && $wage_min) { $list->where(function (SubBuilder $subBuilder) use ($wage_max, $wage_min) { $subBuilder->whereOr(function (SubBuilder $subBuilder) use ($wage_max, $wage_min) { $subBuilder->whereRange('wage_min', $wage_min, null) ->whereRange('wage_max', null, $wage_max) ->whereRange('wage_max', 0, null, false); }); $subBuilder->whereOr('wage', -1); }); } elseif ($wage_min) { $list->where(function (SubBuilder $subBuilder) use ($wage_min) { $subBuilder->whereOrRange('wage_min', $wage_min, null); $subBuilder->whereOr('wage', -1); }); } elseif ($wage_max) { $list->where(function (SubBuilder $subBuilder) use ($wage_max) { $subBuilder->whereOrRange('wage_max', null, $wage_max); $subBuilder->whereOr('wage', -1); }); } } //添加过期时间过滤 $list->where(function (SubBuilder $subBuilder) { $subBuilder->whereOr('expires', 0)->whereOrRange('expires', time(), null); }); if (auth('web-company')->check()) { $list->whereNotIn('person_shield_companys', [auth('web-company')->user()->id]); } if (is_array($order_by)) { foreach ($order_by as $k => $v) { $list->orderBy($k, $v); } } else { $list->orderBy($order_by, 'desc'); } if ($page) { return $list->paginate($limit, 'page', $page); } else { return $list->paginate($limit); } } elseif ($model == 'Job') { $list = Jobs::search($search_key); if ($callback) { $list->query($callback); } if ($where) { //申请过滤 if (array_has($where, 'apply')) { $apply = $where['apply']; unset($where['apply']); if ($apply && auth('web-member')->check()) { //获取当前用户一段时间间隔内所有申请记录 $space_time = (integer)config('aix.personal_set.per_set.per_set.apply_job_space'); if ($space_time > 0) { $stime = date('Y-m-d H:i:s', strtotime(date("Y-m-d", strtotime("-" . $space_time . " day")))); $apply_where = [['personal_uid', '=', auth('web-member')->user()->id], ['created_at', '>=', $stime]]; } else { $apply_where = [['personal_uid', '=', auth('web-member')->user()->id]]; } $rst = $this->personalJobsApplyRepository->getJobsApply($apply_where); $ids = $rst->pluck('jobs_id'); if ($ids->isNotEmpty()) { $list->whereNotIn('id', $ids->toArray()); } } } $map_filter = []; $map_order = []; $wage_min = null; $wage_max = null; foreach ($where as $k => $v) { if ($v[1] != '=') { if ($v[0] == 'audit') { $list->whereNot('audit', $v[2]); } elseif ($v[0] == 'setmeal_id') { if ($v[1] == '>') { $list->whereRange('setmeal_id', $v[2], null, false); } elseif ($v[1] == '<') { $list->whereRange('setmeal_id', null, $v[2], false); } } elseif ($v[0] == 'updated_at') { $list->whereRange('updated_at', $v[2], null, false); } elseif ($v[0] == 'wage_max') { $wage_max = $v[2] ? $v[2] : null; } elseif ($v[0] == 'wage_min') { $wage_min = $v[2] ? $v[2] : null; } else { if ($v[1] == 'in') { $list->whereIn($v[0], $v[2]); } elseif ($v[1] == '>=') { $list->whereRange($v[0], $v[2], null); } elseif ($v[1] == '<=') { $list->whereRange($v[0], null, $v[2]); } elseif ($v[1] == '<>') { $list->whereNot($v[0], $v[2]); } elseif ($v[1] == '>') { $list->whereRange($v[0], $v[2], null, false); } elseif ($v[1] == '<') { $list->whereRange($v[0], null, $v[2], false); } elseif ($v[1] == 'like') { $list->where($v[0], 'like', $v[2]); } } } else { if ($v[0] == 'lng') { $map_filter['location']['lon'] = $v[2]; $map_order['lon'] = $v[2]; } elseif ($v[0] == 'lat') { $map_filter['location']['lat'] = $v[2]; $map_order['lat'] = $v[2]; } elseif ($v[0] == 'range') { $map_filter['distance'] = $v[2] . 'km'; } else { $list->where($v[0], $v[2]); } } } if ($wage_max && $wage_min) { $list->where(function (SubBuilder $subBuilder) use ($wage_max, $wage_min) { $subBuilder->whereOr(function (SubBuilder $subBuilder) use ($wage_max, $wage_min) { $subBuilder->whereRange('wage_min', $wage_min, null) ->whereRange('wage_max', null, $wage_max) ->whereRange('wage_max', 0, null, false); }); $subBuilder->whereOr('wage', -1); }); } elseif ($wage_min) { $list->where(function (SubBuilder $subBuilder) use ($wage_min) { $subBuilder->whereOrRange('wage_min', $wage_min, null); $subBuilder->whereOr('wage', -1); }); } elseif ($wage_max) { $list->where(function (SubBuilder $subBuilder) use ($wage_max) { $subBuilder->whereOrRange('wage_max', null, $wage_max); $subBuilder->whereOr('wage', -1); }); } if ($map_filter) { if ($map_filter && !array_has($map_filter, 'distance')) { $map_filter['distance'] = 1; } $list->whereLocation('location', $map_filter['location']['lat'], $map_filter['location']['lon'], $map_filter['distance']); } if ($map_order) { $list->orderBy(['location' => $map_order, 'order' => 'asc', 'unit' => 'km']); } } $list->where(function (SubBuilder $subBuilder) { $subBuilder->where('company.user_status', 1); }); //过滤企业审核状态 $list->where(function (SubBuilder $subBuilder) { $subBuilder->where('company.audit', 1); }); if ($order_by) { if (is_array($order_by)) { foreach ($order_by as $k => $v) { $list->orderBy($k, $v); } } else { $list->orderBy($order_by, 'desc'); } } else { $list->orderBy('refresh_time', 'desc'); } if ($page) { return $list->paginate($limit, 'page', $page); } else { return $list->paginate($limit); } } elseif ($model == 'Company') { $list = Company::search($search_key); if ($callback) { $list->query($callback); } if ($where) { foreach ($where as $k => $v) { if ($v[1] != '=') { if ($v[1] == '>') { $list->whereRange($v[0], $v[2], null, false); } elseif ($v[1] == '>=') { $list->whereRange($v[0], $v[2], null); } elseif ($v[1] == '<') { $list->whereRange($v[0], null, $v[2], false); } elseif ($v[1] == '<=') { $list->whereRange($v[0], null, $v[2]); } elseif ($v[1] == 'in') { $list->whereIn($v[0], $v[2]); } } else { $list->where($v[0], $v[2]); } } } $list->where(function (SubBuilder $subBuilder) { $subBuilder->where('audit', 1); }); if ($compan_order) { if (is_array($order_by)) { foreach ($order_by as $k => $v) { $list->orderBy($k, $v); } } else { $list->orderBy($order_by, 'desc'); } } if ($page) { return $list->paginate($limit, 'page', $page); } else { return $list->paginate($limit); } } elseif ($model == 'Shuobo') { $list = MemberShuobo::search($search_key); if ($order_by) { if (is_array($order_by)) { foreach ($order_by as $k => $v) { $list->orderBy($k, $v); } } else { $list->orderBy($order_by, 'desc'); } } else { $list->orderBy('refresh_time', 'desc'); } if ($page) { return $list->paginate($limit, 'page', $page); } else { return $list->paginate($limit); } } } }