<?php namespace app\mobile\controller; use app\mobile\model\UserJobAbility; use think\Db; use app\common\controller\Api; use app\mobile\model\UserJob; use app\mobile\model\UserResume; use app\mobile\model\Company; use app\mobile\model\UserJobDownload; /** * 招聘接口 * @ApiWeigh (90) */ class CompanyJob extends Api { protected $noNeedLogin = ['userJobAbility']; protected $noNeedRight = ['*']; protected $model = null; protected $company_id = 0; public function _initialize() { parent::_initialize(); $this->model = model('app\mobile\model\CompanyJob'); if(!$this->company_id){ $user = $this->auth->getUser(); if($user['group_id'] == 0){ $this->error('您还不是企业管理员'); } $this->company_id = Company::where('user_id',$user['id'])->value('id'); } } /** * @ApiWeigh (99) * @ApiTitle (招聘-首页) * @ApiSummary (招聘-首页) * @ApiMethod (POST) * * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * @ApiParams (name="keyword", type="string", required=false, description="输入岗位名称") * @ApiParams (name="type", type="inter", required=false, description="岗位类型:1=全职,2=兼职,3=其他") * @ApiParams (name="user_job_ability_id", type="inter", required=false, description="能力ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602411802", "data": { "total": 1, //数据总条数 "per_page": 15, "current_page": 1, "last_page": 1, "data": [{ "id": 2, //职位ID "name": "怎么说", //职位名称 "type": "1", //职位类型 "salary": "9753.20", //工资 "start_time": "2020.10.11", //开始工作日期 "end_time": "2020.10.11", //结束工作日期 "mobile": "15133120361", //电话 "address": "测试地址", //地址 "resume_name": "", "type_text": "全职", "qualification_arr": [] }] } }) */ public function index() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $keyword = $this->request->param('keyword'); $type = $this->request->param('type'); $user_job_ability_id = $this->request->param('user_job_ability_id'); $where[] = ['status' , '1']; // 搜索关键词 if(!empty($keyword)){ $where[] = ['name', 'like', "%{$keyword}%"]; } // 求职类型 if(!empty($type)){ $where[] = ['type', $type]; } // 资质能力 if(!empty($user_job_ability_id)){ $ability = UserJobAbility::get($user_job_ability_id); if($ability['pid'] == 0){ $ability_list = UserJobAbility::where('pid',$user_job_ability_id)->select(); $ability_arr = []; foreach ($ability_list as $v){ $ability_arr[] = "FIND_IN_SET({$v['id']},user_job_ability_ids)"; } $where[] = implode(' OR ',$ability_arr); }else{ $where[] = "FIND_IN_SET('{$user_job_ability_id}',user_job_ability_ids)"; } } // 整合where $where = function ($query) use ($where) { foreach ($where as $k => $v) { if (is_array($v)) { call_user_func_array([$query, 'where'], $v); } else { $query->where($v); } } }; $data = UserJob::where($where) ->field('id,name,type,salary,start_time,end_time,phone mobile,address,resume_name,qualification') ->order('createtime desc') ->paginate($page_num,false,['page'=>$page]) ->each(function($v){ $has = UserJobDownload::where('company_id',$this->company_id)->where('user_job_id',$v['id'])->field('id')->find(); $v->is_download = !empty($has) ? 1 : 0; })->toArray(); $this->success('成功', $data); } /** * @ApiWeigh (98) * @ApiTitle (能力筛选) * @ApiSummary (能力筛选) * @ApiMethod (POST) * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599018234", "data": [{ "id": 1, //一级ID "pid": 0, "name": "建筑工程", //一级名称 "children": [{ //二级 "id": 3, //二级ID "pid": 1, //父ID "name": "一级建造师", //二级名称 }] }] }) */ public function userJobAbility() { $list = UserJobAbility::where('pid',0)->field('id,pid,name')->select(); $new_list = [0 => ['id' => 0, 'name' => '全部', 'pid' => 0]]; foreach($list as $v){ $children = UserJobAbility::where('pid',$v['id'])->field('id,pid,name')->select();; $new_children = [0 => ['id' => 0, 'name' => '全部', 'pid' => $v['id']]]; foreach($children as $val){ $new_children[$val['id']] = $val; } $v['children'] = $new_children; $new_list[$v['id']] = $v; } $this->success('成功', $new_list); } /** * @ApiWeigh (97) * @ApiTitle (求职-详情) * @ApiSummary (求职-详情) * @ApiMethod (POST) * * @ApiParams (name="user_job_id", type="inter", required=false, description="求职ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599017563", "data": "用户协议内容" //协议内容 }) */ public function info() { $user_job_id = $this->request->param('user_job_id'); empty($user_job_id) && $this->error('缺少必需参数'); $info = UserJob::get($user_job_id); empty($info) && $this->error('求职信息不存在'); $this->success('成功', $info); } /** * @ApiWeigh (93) * @ApiTitle (下载简历) * @ApiSummary (投递简历) * @ApiMethod (POST) * * @ApiParams (name="user_job_id", type="inter", required=true, description="求职ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599017563", "data": 简历链接 }) */ public function downloadResume() { $user_job_id = $this->request->param('user_job_id'); empty($user_job_id) && $this->error('缺少必需参数'); $info = UserJob::get($user_job_id); empty($info) && $this->error('求职信息不存在'); $where = [ 'company_id' => $this->company_id, 'user_job_id' => $user_job_id ]; $has = UserJobDownload::get($where); if(!$has){ UserJobDownload::create($where); } $this->success('成功',$info['resume']); } /** * @ApiWeigh (91) * @ApiTitle (发布招聘) * @ApiSummary (发布招聘) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="name", type="string", required=true, description="岗位名称") * @ApiParams (name="type", type="string", required=true, description="岗位类型:1=全职,2=兼职,3=其他") * @ApiParams (name="start_time", type="string", required=true, description="开始工作日期") * @ApiParams (name="end_time", type="string", required=true, description="结束工作日期") * @ApiParams (name="salary", type="string", required=true, description="薪资待遇") * @ApiParams (name="address", type="string", required=true, description="工作地点") * @ApiParams (name="lng", type="string", required=true, description="工作地点经度") * @ApiParams (name="lat", type="string", required=true, description="工作地点纬度") * @ApiParams (name="house_number", type="string", required=true, description="详细地址") * @ApiParams (name="mobile", type="string", required=true, description="手机号") * @ApiParams (name="description", type="string", required=true, description="岗位职责及要求") * @ApiParams (name="other_desc", type="string", required=true, description="其他说明") * * @ApiReturn({ "code": 1, "msg": "登录成功", "time": "1600498819", "data": null }) */ public function addJob() { $post = $this->request->param(); empty($post['name']) && $this->error('请输入岗位名称'); empty($post['type']) && $this->error('请选择岗位类型'); if($post['type'] != '1'){ empty($post['start_time']) && $this->error('请选择开始工作日期'); empty($post['end_time']) && $this->error('请选择结束工作日期'); } if(!empty($post['start_time'])){ $post['start_time'] = strtotime($post['start_time']); } if(!empty($post['end_time'])){ $post['end_time'] = strtotime($post['end_time']); } empty($post['salary']) && $this->error('请输入薪资待遇'); empty($post['address']) && $this->error('请输入工作地点'); empty($post['lng']) && $this->error('请输入工作地点经度'); empty($post['lat']) && $this->error('请输入工作地点纬度'); empty($post['house_number']) && $this->error('请输入详细地址'); empty($post['mobile']) && $this->error('请输入手机号'); empty($post['description']) && $this->error('请填写岗位职责及要求'); $this->model->allowField(true)->save(array_merge([ 'user_id' => $this->auth->id, 'company_id' => $this->company_id, 'phone' => $post['mobile'], ],$post)); $this->success('发布招聘成功'); } }