|  | @@ -0,0 +1,341 @@
 | 
	
		
			
				|  |  | +<?php
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +namespace app\admin\controller;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +use app\admin\AdminBaseController;
 | 
	
		
			
				|  |  | +use app\common\model\TalentUserModel;
 | 
	
		
			
				|  |  | +use app\common\model\TalentWorkModel;
 | 
	
		
			
				|  |  | +use app\common\validate\TalentUserValidate;
 | 
	
		
			
				|  |  | +use think\App;
 | 
	
		
			
				|  |  | +use think\exception\ValidateException;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class Talent extends AdminBaseController
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 用户列表
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public function user()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        return view('', [
 | 
	
		
			
				|  |  | +            'status_list' => TalentUserModel::STATUS,
 | 
	
		
			
				|  |  | +        ]);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public function listUser()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $map   = $this->dealEqualInput(['status'], $this->dealLikeInput(['name', 'mobile', 'department']));
 | 
	
		
			
				|  |  | +        $list  = TalentUserModel::where($map)
 | 
	
		
			
				|  |  | +            ->limit(input('limit'))
 | 
	
		
			
				|  |  | +            ->page(input('page'))
 | 
	
		
			
				|  |  | +            ->append(['status_text'])->select();
 | 
	
		
			
				|  |  | +        $count = TalentUserModel::where($map)->count();
 | 
	
		
			
				|  |  | +        if ($count == 0) {
 | 
	
		
			
				|  |  | +            ajax_return(1, '未查询到数据');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        list_return($list, $count);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public function delUser()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $id = input('id/d', 0);
 | 
	
		
			
				|  |  | +        if (empty($id)) {
 | 
	
		
			
				|  |  | +            ajax_return(1, '未查询到数据');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $check = TalentWorkModel::where('user_id', $id)->find();
 | 
	
		
			
				|  |  | +        if (!empty($check)) {
 | 
	
		
			
				|  |  | +            ajax_return(1, '该用户已有人才挂钩工作登记表记录,无法删除');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        TalentUserModel::destroy($id);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ajax_return();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 编辑用户
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public function userForm()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $id   = input('id/d', 0);
 | 
	
		
			
				|  |  | +        $info = TalentUserModel::find($id);
 | 
	
		
			
				|  |  | +        return view('', [
 | 
	
		
			
				|  |  | +            'info'        => $info,
 | 
	
		
			
				|  |  | +            'status_list' => TalentUserModel::STATUS,
 | 
	
		
			
				|  |  | +        ]);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public function editUser()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $data = input('post.');
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            validate(TalentUserValidate::class)->check($data);
 | 
	
		
			
				|  |  | +        } catch (ValidateException $e) {
 | 
	
		
			
				|  |  | +            ajax_return(1, $e->getError());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //手机号
 | 
	
		
			
				|  |  | +        $check_mobile_where = [['mobile', '=', $data['mobile']]];
 | 
	
		
			
				|  |  | +        if (!empty($data['id'])) {
 | 
	
		
			
				|  |  | +            $check_mobile_where[] = ['id', '<>', $data['id']];
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        $check_mobile = TalentUserModel::where($check_mobile_where)->find();
 | 
	
		
			
				|  |  | +        if (!empty($check_mobile)) {
 | 
	
		
			
				|  |  | +            ajax_return(1, '手机号已存在');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //密码
 | 
	
		
			
				|  |  | +        if (empty($data['id']) && empty($data['password'])) {
 | 
	
		
			
				|  |  | +            ajax_return(1, '请输入一个初始密码');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (empty($data['password'])) {
 | 
	
		
			
				|  |  | +            unset($data['password']);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            $data['salt']     = rand_str();
 | 
	
		
			
				|  |  | +            $data['password'] = md5(md5($data['salt']) . $data['password']);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (empty($data['id'])) {
 | 
	
		
			
				|  |  | +            TalentUserModel::create($data);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            TalentUserModel::update($data, ['id' => $data['id']]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ajax_return();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 用户导入
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public function importUser()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        return view('public/import', [
 | 
	
		
			
				|  |  | +            'url'           => url('talent/importUserPost'),
 | 
	
		
			
				|  |  | +            'last_table'    => 'lay-talent-user-table',
 | 
	
		
			
				|  |  | +            'template_file' => '/static/common/exl/talent_user.xls',
 | 
	
		
			
				|  |  | +        ]);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 用户导入提交
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public function importUserPost()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $file_url = input('file_url/s', "");
 | 
	
		
			
				|  |  | +        if (!file_exists($file_url)) {
 | 
	
		
			
				|  |  | +            ajax_return(1, '文件不存在');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //初始化数据
 | 
	
		
			
				|  |  | +        $data = ['name', 'department', 'mobile'];
 | 
	
		
			
				|  |  | +        $list = import_exl($file_url, $data, 1);
 | 
	
		
			
				|  |  | +        if (empty($list)) {
 | 
	
		
			
				|  |  | +            ajax_return(1, '请上传有数据的文件');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        $empty_check = [
 | 
	
		
			
				|  |  | +            'name'       => '姓名',
 | 
	
		
			
				|  |  | +            'department' => '部门',
 | 
	
		
			
				|  |  | +            'mobile'     => '手机号',
 | 
	
		
			
				|  |  | +        ];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //获取手机号
 | 
	
		
			
				|  |  | +        $mobile_list       = array_column($list, 'mobile');
 | 
	
		
			
				|  |  | +        $mobile_check_list = TalentUserModel::where('mobile', 'in', $mobile_list)->column('mobile');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //错误判断
 | 
	
		
			
				|  |  | +        $validate = \think\facade\Validate::rule('mobile', 'mobile');
 | 
	
		
			
				|  |  | +        $time     = time();
 | 
	
		
			
				|  |  | +        foreach ($list as $k => $v) {
 | 
	
		
			
				|  |  | +            foreach ($empty_check as $key => $value) {
 | 
	
		
			
				|  |  | +                if (empty($v[$key])) {
 | 
	
		
			
				|  |  | +                    return ajax_return(1, '第' . ($k + 2) . '行的' . $value . '不能为空');
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (!$validate->check($v)) {
 | 
	
		
			
				|  |  | +                return ajax_return(1, '第' . ($k + 2) . '行的手机号格式不对');
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (!empty(in_array($v['mobile'], $mobile_check_list))) {
 | 
	
		
			
				|  |  | +                return ajax_return(1, '第' . ($k + 2) . '行的手机号已存在');
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            $list[$k]['salt']        = rand_str();
 | 
	
		
			
				|  |  | +            $list[$k]['password']    = md5(md5($list[$k]['salt']) . '123456');
 | 
	
		
			
				|  |  | +            $list[$k]['create_time'] = $list[$k]['update_time'] = $time;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        TalentUserModel::insertAll($list);
 | 
	
		
			
				|  |  | +        ajax_return(0);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 挂钩工作登记表
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public function work()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        return view();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public function listWork()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $model = new TalentWorkModel();
 | 
	
		
			
				|  |  | +        $param = input('param.');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //姓名
 | 
	
		
			
				|  |  | +        if (!empty($param['name'])) {
 | 
	
		
			
				|  |  | +            $model = $model->where([
 | 
	
		
			
				|  |  | +                ['user_id', 'in', function ($query) use ($param) {
 | 
	
		
			
				|  |  | +                    $query->name('talent_user')->field('id')->where('name', 'like', "%{$param['name']}%")->buildSql();
 | 
	
		
			
				|  |  | +                }],
 | 
	
		
			
				|  |  | +            ]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //部门
 | 
	
		
			
				|  |  | +        if (!empty($param['department'])) {
 | 
	
		
			
				|  |  | +            $model = $model->where([
 | 
	
		
			
				|  |  | +                ['user_id', 'in', function ($query) use ($param) {
 | 
	
		
			
				|  |  | +                    $query->name('talent_user')->field('id')->where('department', 'like', "%{$param['department']}%")->buildSql();
 | 
	
		
			
				|  |  | +                }],
 | 
	
		
			
				|  |  | +            ]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //手机号
 | 
	
		
			
				|  |  | +        if (!empty($param['mobile'])) {
 | 
	
		
			
				|  |  | +            $model = $model->where([
 | 
	
		
			
				|  |  | +                ['user_id', 'in', function ($query) use ($param) {
 | 
	
		
			
				|  |  | +                    $query->name('talent_user')->field('id')->where('mobile', 'like', "%{$param['mobile']}%")->buildSql();
 | 
	
		
			
				|  |  | +                }],
 | 
	
		
			
				|  |  | +            ]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //月份
 | 
	
		
			
				|  |  | +        if (!empty($param['month'])) {
 | 
	
		
			
				|  |  | +            $model = $model->where('month', $param['month']);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $list  = $model->with('user')->limit(input('limit'))->page(input('page'))->order('update_time desc')->select();
 | 
	
		
			
				|  |  | +        $count = $model->count();
 | 
	
		
			
				|  |  | +        if ($count == 0) {
 | 
	
		
			
				|  |  | +            ajax_return(1, '未查询到数据');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        list_return($list, $count);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public function workDetail()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $id = input('id', 0);
 | 
	
		
			
				|  |  | +        if (empty($id)) {
 | 
	
		
			
				|  |  | +            return '数据错误,请关闭';
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $info = TalentWorkModel::with('user')->where('id', $id)->find();
 | 
	
		
			
				|  |  | +        if (empty($info)) {
 | 
	
		
			
				|  |  | +            return '数据错误,请关闭';
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return view('', [
 | 
	
		
			
				|  |  | +            'info' => $info,
 | 
	
		
			
				|  |  | +        ]);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 未登记用户
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public function unRegister()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $month = date('Y-m');
 | 
	
		
			
				|  |  | +        return view('', [
 | 
	
		
			
				|  |  | +            'month' => $month,
 | 
	
		
			
				|  |  | +        ]);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public function unRegisterPost()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $month = input('month', '');
 | 
	
		
			
				|  |  | +        if (empty($month)) {
 | 
	
		
			
				|  |  | +            ajax_return();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $user_ids     = TalentUserModel::where('status', TalentUserModel::STATUS_NORMAL)->column('id');
 | 
	
		
			
				|  |  | +        $register_ids = TalentWorkModel::where('month', $month)->column('user_id');
 | 
	
		
			
				|  |  | +        $diff_id      = array_diff($user_ids, $register_ids);
 | 
	
		
			
				|  |  | +        $user         = TalentUserModel::where('id', 'in', $diff_id)->select();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $res = [];
 | 
	
		
			
				|  |  | +        foreach ($user as $item) {
 | 
	
		
			
				|  |  | +            $res[] = $item['name'] . "(" . $item['department'] . ")";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ajax_return(0, '', implode(',', $res));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 导出挂钩工作登记表
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public function exportWork()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        $model = new TalentWorkModel();
 | 
	
		
			
				|  |  | +        $param = input('param.');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (!empty($param['id'])) {
 | 
	
		
			
				|  |  | +            $model = $model->where('id', 'in', $param['id']);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //姓名
 | 
	
		
			
				|  |  | +        if (!empty($param['name'])) {
 | 
	
		
			
				|  |  | +            $model = $model->where([
 | 
	
		
			
				|  |  | +                ['user_id', 'in', function ($query) use ($param) {
 | 
	
		
			
				|  |  | +                    $query->name('talent_user')->field('id')->where('name', 'like', "%{$param['name']}%")->buildSql();
 | 
	
		
			
				|  |  | +                }],
 | 
	
		
			
				|  |  | +            ]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //部门
 | 
	
		
			
				|  |  | +        if (!empty($param['department'])) {
 | 
	
		
			
				|  |  | +            $model = $model->where([
 | 
	
		
			
				|  |  | +                ['user_id', 'in', function ($query) use ($param) {
 | 
	
		
			
				|  |  | +                    $query->name('talent_user')->field('id')->where('department', 'like', "%{$param['department']}%")->buildSql();
 | 
	
		
			
				|  |  | +                }],
 | 
	
		
			
				|  |  | +            ]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //手机号
 | 
	
		
			
				|  |  | +        if (!empty($param['mobile'])) {
 | 
	
		
			
				|  |  | +            $model = $model->where([
 | 
	
		
			
				|  |  | +                ['user_id', 'in', function ($query) use ($param) {
 | 
	
		
			
				|  |  | +                    $query->name('talent_user')->field('id')->where('mobile', 'like', "%{$param['mobile']}%")->buildSql();
 | 
	
		
			
				|  |  | +                }],
 | 
	
		
			
				|  |  | +            ]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //月份
 | 
	
		
			
				|  |  | +        if (!empty($param['month'])) {
 | 
	
		
			
				|  |  | +            $model = $model->where('month', $param['month']);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $list = $model->with('user')->order('update_time desc')->select();
 | 
	
		
			
				|  |  | +        foreach ($list as $v) {
 | 
	
		
			
				|  |  | +            $v['user_name']       = $v['user']['name'];
 | 
	
		
			
				|  |  | +            $v['user_department'] = $v['user']['department'];
 | 
	
		
			
				|  |  | +            $v['user_mobile']     = $v['user']['mobile'];
 | 
	
		
			
				|  |  | +            $v['contact_text']    = implode(',', $v['contact']);
 | 
	
		
			
				|  |  | +            $v['cate_text']       = implode(',', $v['cate']);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $xlsCell = [
 | 
	
		
			
				|  |  | +            ['user_name', '姓名'],
 | 
	
		
			
				|  |  | +            ['user_department', '部门'],
 | 
	
		
			
				|  |  | +            ['user_mobile', '手机号'],
 | 
	
		
			
				|  |  | +            ['month', '月份'],
 | 
	
		
			
				|  |  | +            ['should_num', '应挂钩人数'],
 | 
	
		
			
				|  |  | +            ['new_num', '本月新增人数'],
 | 
	
		
			
				|  |  | +            ['unfinished_num', '未完成挂钩人数'],
 | 
	
		
			
				|  |  | +            ['reason', '未挂钩联系原因'],
 | 
	
		
			
				|  |  | +            ['consult_num', '本月回答咨询次数'],
 | 
	
		
			
				|  |  | +            ['contact_text', '联系方式'],
 | 
	
		
			
				|  |  | +            ['cate_text', '咨询问题类别'],
 | 
	
		
			
				|  |  | +            ['description', '具体问题描述及解决措施描述'],
 | 
	
		
			
				|  |  | +            ['assist', '需协调事项说明'],
 | 
	
		
			
				|  |  | +            ['update_time', '填表时间'],
 | 
	
		
			
				|  |  | +        ];
 | 
	
		
			
				|  |  | +        export_exl("挂钩工作登记表", $xlsCell, $list);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |