company = $company; $this->jobs = $jobs; }*/ /** * Specify Model class name * * @return string */ public function model() { return Jobs::class; } /** * Boot up the repository, pushing criteria */ public function boot() { $this->pushCriteria(app(RequestCriteria::class)); } public function getFires($job_id) { return $this->model->where(['id'=>$job_id])->first(); } public static function countAuditJobsNum() { $where['company_id'] = auth('web-company')->user()->id; $map = []; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $where['audit'] = 1; } else { $map[] = ['id','>',0]; } return Jobs::where($where)->where($map)->count(); } public function getJobsList($where,$limit = 10) { return $this->model->where($where)->paginate($limit); } /** * 根据企业ID获取职位 * @param $company_id * @return mixed */ public function getJobsByUid($company_id) { return $this->findWhere(['company_id'=>$company_id]); } /** * 根据职位ID获取职位信息 * @param $id * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Model[]|null */ public function getJobsById($id) { return $this->model->with('jobsContact')->with('subsites')->find($id); } public function jobsSelect($uid) { return $this->model->where('company_id', $uid)->orderBy('created_at', 'asc')->get(); } public function modifyData($ids, $data) { return $this->model->whereIn('id', $ids)->update($data); } public function modifyCom($comidArr, $data) { return $this->model->whereIn('id', $comidArr)->update($data); } /** * 更新map数据 * @param $id * @param $data * @return mixed */ public function updateMap($id, $data) { return $this->model->where('company_id', $id)->update($data); } public function updateSubsite($jidArr, $subsite_id) { return $this->model->whereIn('id', $jidArr)->update(['subsite_id'=>$subsite_id]); } /** * 职位管理列表 * @param $page * @param $where * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator */ public function list($page, $where, $orwhere) { return $this->model->with(['promotion'])->where($where)->where(function ($query) use ($orwhere) { if ($orwhere) { if (isset($orwhere[3])) { $query->orWhere('display', $orwhere[0])->orWhere('valid', $orwhere[1])->orWhere('audit', "=", 3); } else { $query->orWhere('display', $orwhere[0])->orWhere('valid', $orwhere[1])->orWhere('audit', "<>", $orwhere[2]); } } })->orderByRaw('display asc,audit asc,refresh_time desc')->paginate($page, ['*']); } /** * 某企业发布职位数 * @return mixed */ public function jobsTotal($where) { return $this->model->where($where)->count(); } /** * 我是否有这个职位 * @return mixed * @param $user * @param $ids */ public function jobsHas($user,$ids) { if (is_string($ids)){ $ids=explode(",",$ids); } return $this->model->whereIn("id",$ids)->where('company_id',$user->id)->count(); } public function jobAuditTotal($where, $audit) { return $this->model->where($where)->whereIn('audit',$audit)->count(); } public function getComJobs($where, $field = '*') { return $this->model->select($field)->where($where)->get()->toArray(); } /** * 添加职位 * @param $jobData * @return mixed */ public function store($jobData) { return $this->model->create($jobData); } /** * 关闭职位 * @param $ids * @return mixed */ public function closeJobs($ids) { return $this->model->whereIn('id', $ids)->update(['display'=>2,'valid'=>0]); } /**恢复职位 * @param $ids * @return mixed */ public function showJobs($ids, $data) { return $this->model->whereIn('id', $ids)->update($data); } /** * 删除职位 * @param $ids * @return mixed */ public function delJobs($ids) { return $this->model->whereIn('id', $ids)->delete(); } public function getJobs($id) { return $this->model->with('jobsContact')->whereIn('id', $id)->get(); } public function jobsRefresh($job_id) { return $this->update(['refresh_time'=>time()], $job_id); } public function findJobsName($jid) { return $this->model->whereIn('id', $jid)->select('id', 'jobs_name')->get()->toArray(); } public function applyJobs($where, $id) { return $this->model->where($where)->where('company_id', $id)->select(['id','jobs_name'])->get()->toArray(); } /** * 查找职位 * @param $map * @return mixed */ public function jobsList($map) { return $this->model->select(['id', 'jobs_name'])->where($map)->get(); } /** * 获取职位 * @param $where * @return mixed */ public function getInfo($where) { return $this->model->where($where)->first(); } //增加点击量 public function incrementData($where, $num, $filed) { $model = $this->model->where($where)->first(); $model->click = $model->$filed + $num; $model->timestamps = false; return $model->save(); } //根据条件获取职位列表 public function getOtherJobs($where, $limit = '') { // $rst = $this->model->whereHas('subsites', function ($query) { $query->where('subsite_id', get_subsite_id());})->where($where)->orderBy('stime', 'DESC')->orderBy('refresh_time', 'DESC'); $rst = $this->model->where($where)->orderBy('stime', 'DESC')->orderBy('refresh_time', 'DESC'); if ($limit) { return $rst->paginate($limit); }else{ return $rst->get(); } } public function getCompanyOtherJobs($where,$page=1,$pageSize=6,$category_id=[]) { $offset = ($page - 1) * $pageSize; return $this->model->whereHas('subsites', function ($query) { $query->where('subsite_id', get_subsite_id()); })->where(function ($query) use($where,$category_id){ if($category_id){ $query->whereIn('category',$category_id); } $query->where($where); })->orderBy('stime', 'DESC')->orderBy('refresh_time', 'DESC')->offset($offset)->limit($pageSize)->get(); } public function getOtherJobsCount($where, $limit = '') { $rst = $this->model->where($where)->orderBy('stime', 'DESC')->orderBy('refresh_time', 'DESC'); if ($limit) { return $rst->paginate($limit); } else { return $rst->get(); } } //获取符合条件的职位数量 public function getJobsCount($where) { return $this->model->whereHas('subsites', function ($query) { $query->where('subsite_id', get_subsite_id());})->where($where)->count(); } /** * 获取单条职位(在招的) * @param $data 条件 * @return bool返回值 如果有返回职位数组,否则返回 false */ public function getAuditJobsOne($data) { $val = $this->model->where($data)->first(); if (!$val) { return false; } $val->contact= JobsContact::where('job_id', $val->id)->first(); $val->deadline_days=($val->deadline-time())>0?"距到期时间还有".sub_day($val->deadline, time())."":"目前已过期"; return $val; } public function recommendJobs($intenionArrTwo, $intenionArrThree, $page=1, $where, $pageSize=12) { $offset = ($page - 1) * $pageSize; return $this->model->whereIn('audit', $where)->where('display', 1)->where('valid', 1)->where(function ($query) use ($intenionArrTwo, $intenionArrThree) { $query->whereIn('category', $intenionArrTwo)->orWhereIn('subclass', $intenionArrThree); })->offset($offset)->limit($pageSize)->get(); } public function nearbyJobs($lng, $lat, $page=1, $where, $pageSize=12) { $offset = ($page - 1) * $pageSize; return $this->model->whereBetween('map_x', $lng)->whereBetween('map_y', $lat)->whereIn('audit', $where)->where('display', 1)->where('valid', 1)->offset($offset)->limit($pageSize)->get(); } public function new_jobs($data, $page=1, $where, $pageSize=12) { $offset = ($page - 1) * $pageSize; return $this->model->where('refresh_time', '>', $data)->whereIn('audit', $where)->where('display', 1)->where('valid', 1)->offset($offset)->limit($pageSize)->get(); } /** * 获取已关闭/未关闭的职位. */ public function getDisplayJobs($id, $display) { return $this->model->whereIn('id', $id)->where('display', $display)->get()->toArray(); } public function getLastJobsCount($where) { return $this->model->where($where)->where('created_at', '>=', date('Y-m-01 00:00:00', strtotime('-1 month')))->where('created_at', '<=', date("Y-m-d 23:59:59", strtotime(-date('d').'day')))->count(); } public function getNextJobsCount($where) { return $this->model->where($where)->where('created_at', '>=', date('Y-m-01 00:00:00', strtotime(date("Y-m-d"))))->where('created_at', '<=', date('Y-m-d 23:59:59', strtotime(date('Y-m-01', strtotime(date("Y-m-d")))." +1 month -1 day")))->count(); } public function getJobCount($where) { return $this->model->where($where)->count(); } //获取用户中心用于匹配推荐简历的职位 public function getMatchJob($where, $whereNotIn = array(), $order_by = array()) { $rst = $this->model->where($where); if ($whereNotIn) { $rst->whereNotIn(key($whereNotIn), $whereNotIn[key($whereNotIn)]); } if (is_array($order_by)) { foreach ($order_by as $k => $v) { $rst->orderBy($k, $v); } } else { $rst->orderBy('stime', 'DESC')->orderBy('refresh_time', 'DESC'); } return $rst->first(); } //获取有招聘职位的知名企业 public function getJobCompanies($where, $order, $limit = '') { $rst = $this->model->whereHas('subsites', function ($query) { $query->where('subsite_id', get_subsite_id());})->select(DB::raw('distinct company_id,count(id) as jobs_num'))->where($where); if ($order && is_array($order)) { foreach ($order as $k => $v) { $rst->orderBy($k, $v); } } $rst->groupBy('company_id'); if ($limit) { $rst->limit($limit); } return $rst->get(); } public function getCompanyJobs($where = array(), $where_in = array(), $order = array(), $limit = '') { $rst = $this->model->with('company')->where($where); if ($where_in) { foreach ($where_in as $k => $v) { $rst->whereIn($k, $v); } } if ($order && is_array($order)) { foreach ($order as $k => $v) { $rst->orderBy($k, $v); } } if ($limit) { $rst->limit($limit); } return $rst->get(); } public function fliterJobs($where = array(), $where_in = array(), $order = array()) { $rst = $this->model->where($where); if ($where_in) { foreach ($where_in as $k => $v) { $rst->whereIn($k, $v); } } if ($order && is_array($order)) { foreach ($order as $k => $v) { $rst->orderBy($k, $v); } } return $rst->get(); } public function autoRefreshJobs($ids) { return $this->model->whereIn('id', $ids)->update(['refresh_time'=>time()]); } public function getName($id) { return $this->model->where('id', $id)->value('jobs_name'); } public function getJobNumGroup($where, $company_where, $group_by) { return $this->model->select(DB::raw('count(id),DATE(created_at)')) ->where($where) ->when($company_where, function ($query) use ($company_where) { $query->whereHas('company', function ($query) use ($company_where) { $query->where($company_where); }); }) ->groupBy($group_by) ->get(); } public function getNumsByGroup($where, $company_where, $fields, $group_by = '', $order_by = '', $whereIn = []) { $rst = $this->model->select(DB::raw($fields))->where($where)->when($company_where, function ($query) use ($company_where) { $query->whereHas('company', function ($query) use ($company_where) { $query->where($company_where); }); }); if ($whereIn) { foreach ($whereIn as $k => $v) { $rst->whereIn($k, $v); } } if ($group_by) { if (is_array($group_by)) { foreach ($group_by as $k => $v) { $rst->groupBy($v); } } else { $rst->groupBy($group_by); } } if ($order_by) { $rst->orderByRaw($order_by); } return $rst->get(); } public function getJobNumByTradeGroup($where, $fields, $group_by, $order_by = '', $limit = '') { $rst = DB::table(Jobs::getTableName().' as j')->select(DB::raw($fields)) ->leftjoin(Company::getTableName().' as c', 'c.id', '=', 'j.company_id') ->where($where) ->whereRaw('j.deleted_at is null and c.deleted_at is null') ->groupBy($group_by); if ($order_by) { $rst->orderByRaw($order_by); } if ($limit) { $rst->offset(0)->limit($limit); }; return $rst->get(); } public function getAvgWageByGroup($where, $company_where, $fields, $group_by, $order_by, $limit) { $rst = $this->model->select(DB::raw($fields))->where($where)->when($company_where, function ($query) use ($company_where) { $query->whereHas('company', function ($query) use ($company_where) { $query->where($company_where); }); }); if ($group_by) { $rst->groupBy($group_by); } if ($order_by) { $rst->orderByRaw($order_by); } if ($limit) { $rst->offset(0)->limit($limit); } return $rst->get(); } public function getJobIndustryAmount($where, $company_where, $industry_ids) { $rst = $this->model->where($where)->when($company_where, function ($query) use ($company_where, $industry_ids) { $query->whereHas('company', function ($query) use ($company_where, $industry_ids) { $query->where($company_where); if ($industry_ids) { $query->whereIn('industry', $industry_ids); } }); }); return $rst->sum('amount'); } public function getIndustryAmount($where, $company_where, $trades) { $rst = $this->model->where($where)->when($company_where, function ($query) use ($company_where, $trades) { $query->whereHas('company', function ($query) use ($company_where, $trades) { $query->where($company_where); if ($trades) { $query->whereIn('trade', $trades); } }); }); return $rst->sum('amount'); } public function getJobAmountByNature($where, $job_where, $company_where) { $rst = DB::table(Jobs::getTableName().' as j')->selectRaw('sum(j.amount) as num, p.nature') ->leftjoin(Company::getTableName().' as p', 'p.id', '=', 'j.company_id') ->leftjoin(Category::getTableName().' as c', 'c.id', '=', 'p.nature') ->where($job_where) ->where($company_where) ->whereRaw($where) ->groupBy('p.nature') ->orderByRaw('p.nature asc') ->get(); return $rst; } public function getJobAmountByEconomy($where, $job_where, $company_where, $nature_ids) { $rst = DB::table(Jobs::getTableName().' as j') ->selectRaw('IFNULL(sum(j.amount),0) as num, p.economy') ->leftjoin(Company::getTableName().' as p', 'p.id', '=', 'j.company_id') ->leftjoin(Category::getTableName().' as c', 'c.id', '=', 'p.economy') ->where($job_where) ->where($company_where) ->whereRaw($where) ->whereIn('p.nature', $nature_ids) ->groupBy('p.economy') ->orderByRaw('p.economy asc') ->get(); return $rst; } public function getJobAmountByEconomyGroup($where, $job_where, $company_where, $fields = 'IFNULL(sum(j.amount),0) as num, p.economy', $group = [], $order = '') { $rst = DB::table(Jobs::getTableName().' as j') ->selectRaw($fields) ->leftjoin(Company::getTableName().' as p', 'p.id', '=', 'j.company_id') ->where($job_where) ->where($company_where); if ($where) { $rst->whereRaw($where); } if ($group) { foreach ($group as $k => $v) { $rst->groupBy($v); } } if ($order) { $rst->orderByRaw('p.economy asc'); } $res = $rst->get(); return $res; } public function getJobTypeAmount($job_where, $company_where, $types) { return $this->model->where($job_where)->when($company_where, function ($query) use ($company_where) { $query->whereHas('company', function ($query) use ($company_where) { $query->where($company_where); }); })->when($types, function ($query) use ($types) { $query->whereIn('category', $types); })->sum('amount'); } public function getJobAmountByType($job_where, $company_where, $whereRaw) { return $this->model->where($job_where)->when($company_where, function ($query) use ($company_where) { $query->whereHas('company', function ($query) use ($company_where) { $query->where($company_where); }); })->when($whereRaw, function ($query) use ($whereRaw) { $query->whereRaw($whereRaw); })->get(); } public function getJobAmountByAge($where, $job_where, $company_where, $fields, $group_by = '', $order_by = '') { $rst = $this->model->select(DB::raw($fields))->where($job_where)->when($where, function ($query) use ($where) { $query->whereRaw($where); })->when($company_where, function ($query) use ($company_where) { $query->whereHas('company', function ($query) use ($company_where) { $query->where($company_where); }); }); if ($group_by) { $rst->groupBy($group_by); } if ($order_by) { $rst->orderByRaw($order_by); } return $rst->get(); } public function getJobAmountByAges($age_data, $age_text, $ages, $where, $job_where, $company_where, $fields, $group_by = '', $order_by = '') { $rst = $this->model->select(DB::raw($fields))->where($job_where)->when($where, function ($query) use ($where) { $query->whereRaw($where); })->when($company_where, function ($query) use ($company_where) { $query->whereHas('company', function ($query) use ($company_where) { $query->where($company_where); }); }); if ($group_by) { $rst->groupBy($group_by); } if ($order_by) { $rst->orderByRaw($order_by); } $res = $rst->chunk(500, function ($lave_rst) use (&$age_data, $age_text, $ages) { if ($lave_rst->isNotEmpty()) { //处理每条数据所属年龄段 foreach ($lave_rst as $key => $val) { if ($val->num > 0) { $j_min_age = $val['min_age']; $j_max_age = $val['max_age']; $relative_age_arr = []; foreach ($ages as $k => $v) { $min_age = $v['min_age']; $max_age = $v['max_age']; if ($j_min_age && $j_max_age) { if ($j_min_age <= $max_age && $j_max_age>=$min_age) { $relative_age_arr[] = $age_text[$k]; } } } if ($relative_age_arr) { //将职位招聘人数平均分配给符合的年龄段,剩余的给第一个符合的年龄段 $lave_quotient = intval(floor($val->num/count($relative_age_arr))); $lave_remainder = $val->num % count($relative_age_arr); foreach ($relative_age_arr as $n => $r) { $age_data[$r] = (int)$age_data[$r] + $lave_quotient; } $age_data[$relative_age_arr[0]] = (int)$age_data[$relative_age_arr[0]] + $lave_remainder; } } } } }); return $age_data; } public function getCrmJobs($where, $where_in = [], $order_by = [], $fileds = '', $offset = '', $limit = '') { if ($fileds) { $rst = $this->model->select(DB::raw($fileds))->where($where); } else { $rst = $this->model->where($where); } if ($where_in) { foreach ($where_in as $k => $v) { $rst->whereIn($k, $v); } } if ($order_by) { if (is_array($order_by)) { foreach ($order_by as $k => $v) { $rst->orderBy($k, $v); } } else { $rst->orderByRaw($order_by); } } if ($offset !='' && $limit!='') { $rst->offset($offset)->limit($limit); }; return $rst->get(); } public function getCrmJobCount($where, $where_in) { $rst = $this->model->where($where); if ($where_in) { foreach ($where_in as $k => $v) { $rst->whereIn($k, $v); } } return $rst->count(); } public function getCrmInfo($where) { return $this->model->with(['company','jobsContact'])->where($where)->first(); } public function getJobNum($where, $company_where) { $rst = $this->model->where($where)->when($company_where, function ($query) use ($company_where) { $query->whereHas('company', function ($query) use ($company_where) { $query->where($company_where); }); })->count(); return $rst; } public function AdminFind($where,$select){ return $this->model->where($where)->select($select)->first()->toArray(); } public function getPluck($where,$column) { return $this->model->where($where)->pluck($column); } }