pushCriteria(app(RequestCriteria::class)); } /** * 获取已申请职位数。 * @param $resume_id * @param $personal_uid * @return mixed */ public function getApplyJobs($personal_uid, $where) { return $this->model->with(['resumes','jobs'=>function($query) use ($where) { $query->whereIn('audit', $where)->where('display', 1)->where('valid', 1); }])->where(['personal_uid'=>$personal_uid])->whereHas('resumes')->whereHas('jobs')->count(); } public function getApplyJobsDef($resume_id, $where) { return $this->model->with(['resumes','jobs'=>function($query) use ($where) { $query->whereIn('audit', $where)->where('display', 1)->where('valid', 1); }])->where(['resume_id'=>$resume_id])->whereHas('resumes')->whereHas('jobs')->count(); } public function getApplyResume($jobs_id) { return $this->model->where(['jobs_id'=>$jobs_id,'is_reply'=>0])->count(); } /** * @param $map * @param $valid 停招职位 * @param $apply_time 投递时间 * @param $page * @return mixed */ public function getResume($where, $page) { return $this->model->with('jobs')->with('resumes')->where($where)->orderByRaw("FIELD(is_reply,0,1,3,2,4)")->orderBy('id', 'desc')->orderBy('created_at', 'desc')->paginate($page); } public function companyLabelResume($id, $data) { return $this->update($data, $id); } /** * 近两周收到的简历 * @return mixed */ public function twoWeeksTotal($id) { return $this->model->where('created_at', '>=', date('Y-m-d', time()-86400*14))->where('company_id', '=', $id)->count(); } /** * 近两周处理的简历 * @return mixed */ public function twoWeeksReplyTotal($id) { $where = [ ['created_at','>=',date('Y-m-d', time() - 86400*14)], ['is_reply', '>', 0], ['personal_look','=',2], ]; return $this->model->where($where)->where('company_id', '=', $id)->count(); } /** * 删除简历申请 * @param $id * @return mixed * @param $company_id */ public function delJobsApply($id,$company_id) { return $this->model->whereIn('id', $id)->where("company_id",$company_id)->delete(); } /** * 查询单个简历申请 * @param $where * @return mixed */ public function getOne($where) { return $this->model->where($where)->orderBy('id', 'desc')->first(); } public function getJobsApply($where) { return $this->model->where($where)->orderBy('id', 'desc')->get(); } /** * 获取简历ID * @param $id * @return mixed */ public function getResumeId($id) { return $this->model->whereIn('id', $id)->select(['resume_id'])->get()->toArray(); } /** * 检测是否申请过职位 */ public function checkJobsApply($resume_id, $company_id, $jobs_id = false) { $where['resume_id'] = $resume_id; $where['company_id'] = $company_id; $jobs_id && $where['jobs_id'] = $jobs_id; if (!$this->model->where($where)->first()) { return false; } return true; } /** * 获取一条职位申请记录 */ public function findJobsApply($resume_id, $company_id, $jobs_id = false,$id=0) { $where['resume_id'] = $resume_id; $where['company_id'] = $company_id; if (!empty($id)){ $where['id']=$id; } $jobs_id && $where['jobs_id'] = $jobs_id; return $this->model->where($where)->first(); } /** * 修改投递状态和查看状态 * @param $where * @return mixed */ public function updateApply($where) { return $this->model->where($where)->update(['is_reply'=>3,'personal_look'=>2]); } /**简历回收站 * @param $uid * @param $page * @return mixed */ public function recycle($uid, $page) { $where = [ 'company_id'=>$uid, ]; return $this->model->onlyTrashed()->where($where)->paginate($page); } /**删除收到的简历 * @param $id * @return mixed */ public function destroyJobsApply($id) { return $this->model->whereIn('id', $id)->forceDelete(); } /**清空回收站 * @param $company_id * @return mixed */ public function clearRecycle($company_id) { return $this->model->where('company_id', $company_id)->forceDelete(); } public function applyJobs($where, $jobs_id = array()) { if ($jobs_id) { return $this->model->where($where)->whereIn('jobs_id', $jobs_id)->orderBy('created_at', 'desc')->get(); } else { return $this->model->where($where)->orderBy('created_at', 'desc')->get(); } } public function checkApplyJobs($where, $jobs_id = array()) { if ($jobs_id) { return $this->model->where($where)->whereIn('jobs_id', $jobs_id)->get(); } else { return $this->model->where($where)->get(); } } //获取其它字段包含whereIn条件的字段的申请记录 public function getApplies($where, $whereIn = array()) { $list = array(); if ($whereIn) { $rst = $this->model->where($where)->whereIn(key($whereIn), $whereIn[key($whereIn)])->get(); } else { $rst = $this->model->where($where)->get(); } if ($rst->toArray()) { foreach ($rst as $k => $v) { $list[$v->resume_id] = $v; } } return $list; } public function addData($data) { return $this->model->create($data); } public function setApply($where, $set) { return $this->model->where($where)->update($set); } /**投递简历数 * @param $where * @return mixed */ public function resumesCount($where) { return $this->model->where($where)->count(); } public function getStateArr() { return $this->model->getStateArr(); } public function getResumeApplyGroup($where, $fileds = 'count(p.id) as num,j.category,c.demand', $group_by = 'j.category', $order_by = 'count(p.jobs_id) DESC', $limit = '') { $rst = DB::table(PersonalJobsApply::getTableName().' as p')->select(DB::raw($fileds)) ->leftjoin(Member::getTableName().' as m', 'm.id', '=', 'p.personal_uid') //->leftjoin(Jobs::getTableName().' as j', 'j.id', '=', 'p.jobs_id') ->leftjoin(Company::getTableName().' as cp', 'cp.id', '=', 'p.company_id') ->leftjoin(Category::getTableName().' as c', 'c.id', '=', 'cp.trade') ->where($where) ->groupBy($group_by) ->orderByRaw($order_by); if ($limit) { $rst->offset(0)->limit($limit); } return $rst->get(); } public function getApplyNumGroup($where, $group_by, $subsite_id) { $rst = $this->model->where($where)->select(DB::raw('count(id),DATE(created_at)'))->when($subsite_id!=-1, function($query) use($subsite_id) { $query->whereHas('members', function ($query) use ($subsite_id) { $query->where(['subsite_id'=>$subsite_id]); }); }); if ($group_by) { $rst->groupBy($group_by); } return $rst->get(); } public function getApplyNum($where, $company_where) { return $this->model ->where($where) ->when($company_where, function ($query) use ($company_where) { $query->whereHas('companys', function ($query) use ($company_where) { $query->where($company_where); }); })->count(); } public function getApplyNumByGroup($where, $company_where, $fields, $group_by, $order_by = '') { $rst = $this->model->select(DB::raw($fields))->where($where) ->when($company_where, function ($query) use ($company_where) { $query->whereHas('companys', function ($query) use ($company_where) { $query->where($company_where); }); }); if ($group_by) { foreach ($group_by as $k => $v) { $rst->groupBy($v); } } if ($order_by) { $rst->orderByRaw($order_by); } return $rst->get(); } public function getApplyNumByCompanyGroup($where, $company_where, $fields, $group_by, $order_by = '', $limit = '') { $rst = $this->model->with('companys')->select(DB::raw($fields))->where($where) ->when($company_where, function ($query) use ($company_where) { $query->whereHas('companys', function ($query) use ($company_where) { $query->where($company_where); }); }); if ($group_by) { foreach ($group_by as $k => $v) { $rst->groupBy($v); } } if ($order_by) { $rst->orderByRaw($order_by); } if ($limit) { $rst->offset(0)->limit($limit); } return $rst->get(); } public function getResumeNumBySexGroup($resume_where, $member_where) { $rst = $this->model->with(['memberInfos'])->where($resume_where)->when($member_where, function($query) use($member_where) { $query->whereHas('members', function ($query) use ($member_where) { $query->where($member_where); }); })->get(); return $rst; } public function getPersonalJobByID($id){ return $this->model->where("id",$id)->first(); } public function getResumeApplyWithDeleted($where, $member_where) { $rst = $this->model //->withTrashed() ->where($where) ->when($member_where, function ($query) use ($member_where) { $query->whereHas('members', function ($query) use ($member_where) { //$query->withTrashed()->where($member_where); $query->where($member_where); }); })->get(); return $rst; } public function getPluck($where,$column) { return $this->model->where($where)->pluck($column); } }