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 = 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); } }