personalJobsApplyRepository = $personalJobsApplyRepository; $this->jobsService = $jobsService; $this->companyService = $companyService; $this->resumeService = $resumeService; } //首页知名企业 public function searchSeatmealCompanies($params, $type = '') { $list = array(); $where = array( array('utype', '=', 1), array('user_status', '=', 1) ); if ($type == '') { $where[] = array('job_audit_num','>',0); if (config('aix.companyset.comset.show_set.jobs_display')==1) { $where[] = array('audit','=',1); //$where[] = array('job_audit_num','>',0); } else { $where[] = array('audit','<>',3); //$where[] = array('job_sum_num','>',0); } } if (array_has($params, 'seatmeal')) { $where[] = array('setmeal_id','>',$params['seatmeal']); $where[] = array('members_setmeal.expire','=',0); } $where[] = array('subsite_ids','=',get_subsite_id()); if (array_has($params, 'id')) { $where[] = array('id','in',$params['id']); } $order_by = array('job_new_refresh'=>'desc'); $limit = ''; if (array_has($params, 'size')) { $limit = $params['size']; } $callback = function ($query) { $query->with(['job'=>function ($query) { $job_count_map = array(array('valid','=',1),array('display','=',1)); if (config('aix.companyset.comset.show_set.jobs_display')==1) { $job_count_map[] = array('audit','=','1'); } else { $job_count_map[] = array('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 = array(); $emergency_where = array( array('valid','=','1'), array('emergency','=','1'), array('display','=',1), array('subsite_ids', '=', get_subsite_id()) ); if (config('aix.companyset.comset.show_set.jobs_display')==1) { $emergency_where[] = array('audit','=',1); } else { $emergency_where[] = array('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 = array(), $type = '') { $recommend_job_items = array(); $recommend_where = $this->jobsService->getRecommendWhere($user); $recommend_order = $this->jobsService->getRecommendOrder($user); if (!$user || ($user && $user->utype == 1)) { $recommend_order = array('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(), array(), $limit); } else { $jids = array(); 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 = array(); } 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():array(); $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(), array(), $limit); } } return $recommend_job_items; } //获取点击量高的职位 public function getClickJobs($limit = 50) { $where[] = array('valid','=',1); $where[] = array('display','=',1); if (config('aix.companyset.comset.show_set.jobs_display')==1) { $where[] = array('audit','=',1); } else { $where[] = array('audit','<>',3); } $where[] = array('subsite_ids','=',get_subsite_id()); $order = array('click'=>'desc','stime'=>'desc','refresh_time'=> 'desc'); return $this->search('Job', $where, $order, '', $limit); } //获取点击量高的简历 public function getClickResumes($order_by, $job = array(), $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 = array()) { $list = array(); $order_by = array('stime'=>'desc','click'=>'desc', 'updated_at'=>'desc'); //获取点击量高的简历 $click_where = $this->companyService->getRecommendResumeWhere(array()); //添加照片过滤 $click_where[] = array('photo', '=',1); $click_where[] = array('member_infos.display_images', '=',1); if (config('aix.personal_set.per_set.show_set.resume_img_display')==1) { $click_where[] = array('photo_audit', '=',2); } else { $click_where[] = array('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'][] = array('photo', '=',1); if (config('aix.personal_set.per_set.show_set.resume_img_display')==1) { $where['and'][] = array('photo_audit', '=',2); } else { $where['and'][] = array('photo_audit', '<>',0); } $where['and'][] = array('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 = array(); } return $photo_resumes; } //最新简历 public function searchNewResumes($limit = 10, $user = array()) { $new_resumes = array(); $where = array(); $where[] = array('display','=',1); if (config('aix.personal_set.per_set.show_set.resume_display')=='1') { $where[] = array('audit','=','2'); } else { $where[] = array('audit','<>','0'); } $where[] = array('subsite_ids','=',get_subsite_id()); $order_by = array('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 = array()) { $cate_jobs = array(); $cate_job_where[] = array('intention_jobs_id','=',$job->jobcategory_id); $cate_job_where[] = array('id','<>',$job->id); if (config('aix.companyset.comset.show_set.jobs_display')==1) { $cate_job_where[] = array('audit','=',1); } else { $cate_job_where[] = array('audit','<>',3); } $cate_job_where[] = array('display','=',1); $cate_job_where[] = array('valid','=',1); $cate_job_where[] = array('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[] = array('valid','=',1); $where[] = array('display','=',1); if (config('aix.companyset.comset.show_set.jobs_display')==1) { $where[] = array('audit','=',1); } else { $where[] = array('audit','<>',3); } $where[] = array('subsite_ids','=',get_subsite_id()); $order = array('refresh_time'=>'desc'); $new_job_lists = $this->search('Job', $where, $order, '', $limit, $page); $list = array(); if ($new_job_lists->total()>0) { $list = $this->jobsService->dealjobFilelds($new_job_lists->items(), array(), $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 = array(); $or_where = array(); 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', array($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 = array(); $or_where = array(); 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', array(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 = array(array('personal_uid','=',auth('web-member')->user()->id),array('created_at','>=',$stime)); } else { $apply_where = array(array('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 = array(); $map_order = array(); $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); } } } 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); } } } }