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

use think\Db;
use app\common\controller\Api;
use app\mobile\model\UserJob;
use app\mobile\model\UserResume;

/**
 * 招聘接口
 * @ApiWeigh (90)
 */
class CompanyJob extends Api
{
	protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];
    protected $model = null;

    public function _initialize()
    {
        parent::_initialize();
        $this->model = model('app\mobile\model\CompanyJob');
    }

    /**
     * @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": "1599017563",
        "data": "用户协议内容" //协议内容
    })
     */
    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 = [];
        // 搜索关键词
        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::with(['user_job_resume'])
            ->where($where)
            ->field('id,name,salary,address,mobile')
            ->order('createtime desc')
            ->paginate($page_num,false,['page'=>$page])
            ->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="company_job_id", type="inter", required=false, description="招聘职位ID")
     * @ApiParams   (name="user_resume_id", type="inter", required=false, description="求职简历ID")
     *
     * @ApiReturn({
		"code": 1,
		"msg": "成功",
		"time": "1599017563",
		"data": 简历链接
	})
     */
    public function downloadResume()
    {
        $user_resume_id = $this->request->param('user_resume_id');
        empty($user_resume_id) && $this->error('缺少必需参数');
        $info = UserResume::get($user_resume_id);
        empty($info) && $this->error('简历信息不存在');
        $this->success('成功',$info['attachment']);
    }

    /**
     * @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' => Company::where('user_id',$this->auth->id)->value('id')
        ],$post));
        $this->success('发布招聘成功');
    }
}