| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372 | <?phpnamespace App\Repositories;use App\Models\Company;use App\Models\PersonalJobsApply;use App\Models\Member;use App\Models\Category;use App\Models\Jobs;use Prettus\Repository\Eloquent\BaseRepository;use Prettus\Repository\Criteria\RequestCriteria;use Illuminate\Support\Facades\DB;/** * Class MemberRepositoryEloquent. * * @package namespace App\Repositories; */class PersonalJobsApplyRepository extends BaseRepository{    /**     * Specify Model class name     *     * @return string     */    public function model()    {        return PersonalJobsApply::class;    }    /**     * Boot up the repository, pushing criteria     */    public function boot()    {        $this->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);    }}
 |