CompanyJob.php 8.1 KB
<?php
namespace app\mobile\controller;

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 = ['*'];
    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)){
            $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,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 (99)
     * @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('请选择岗位类型');
        empty($post['start_time']) && $this->error('请选择开始工作日期');
        empty($post['end_time']) && $this->error('请选择结束工作日期');
        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
        ],$post));
        $this->success('发布招聘成功');
    }
}