['except' => []] ]; //用户信息 public function userinfo() { $uid = JWT_UID; $userInfo = Db::name('Admin')->where(['id' => $uid])->field(['id', 'username', 'name', 'email', 'mobile', 'sex', 'nickname', 'thumb', 'did', 'position_id', 'desc', 'entry_time'])->find(); $userInfo['entry_time'] = date('Y-m-d', $userInfo['entry_time']); $department = Db::name('Department')->where('id', $userInfo['did'])->column('title', 'id'); $position = Db::name('Position')->where('id', $userInfo['position_id'])->column('title', 'id'); $userInfo['department_name'] = $department[$userInfo['did']] ?? ''; $userInfo['position_name'] = $position[$userInfo['position_id']] ?? ''; $this->apiSuccess('获取成功', $userInfo); } //用户数据汇总 public function data_total() { $this->uid = JWT_UID; $total = []; $noteCount = Db::name('Note')->where('status', '1')->count(); $approveCount = Db::name('Approve')->where([['', 'exp', Db::raw("FIND_IN_SET('{$this->uid}',check_admin_ids)")]])->fetchSql(false)->count(); $expenseCount = Db::name('Expense')->where([['', 'exp', Db::raw("FIND_IN_SET('{$this->uid}',check_admin_ids)")],['delete_time', '=', 0]])->count(); $invoiceCount = Db::name('Invoice')->where([['', 'exp', Db::raw("FIND_IN_SET('{$this->uid}',check_admin_ids)")],['delete_time', '=', 0]])->count(); $total[] = array( 'name' => '公司公告', 'type' => 'note', 'num' => $noteCount, ); $total[] = array( 'name' => '待审审批', 'type' => 'approve', 'num' => $approveCount, ); $total[] = array( 'name' => '待审报销', 'type' => 'expense', 'num' => $expenseCount, ); $total[] = array( 'name' => '待审发票', 'type' => 'invoice', 'num' => $invoiceCount, ); $module = Db::name('AdminModule')->column('name'); if (in_array('project', $module)) { $project_ids = Db::name('ProjectUser')->where(['uid' => $this->uid, 'delete_time' => 0])->column('project_id'); $whereProject = []; $whereProject[] = ['delete_time', '=', 0]; $whereProject[] = ['id', 'in', $project_ids]; $projectCount = Db::name('Project')->where($whereProject)->fetchSql(false)->count(); $total[] = array( 'name' => '我的项目', 'type' => 'project', 'num' => $projectCount, ); $taskCount = Db::name('ProjectTask')->where([['director_uid', '=', $this->uid],['flow_status', '<', 3],['delete_time', '=', 0]])->count(); $total[] = array( 'name' => '我的任务', 'type' => 'task', 'num' => $taskCount, ); } if (in_array('article', $module)) { $articleCount = Db::name('Article')->where([['delete_time', '=', 0],['uid', '=', $this->uid]])->count(); $total[] = array( 'name' => '我的文章', 'type' => 'article', 'num' => $articleCount, ); } $this->apiSuccess('', $total); } //修改个人信息 public function edit_personal() { $param = get_params(); $uid = JWT_UID; Db::name('Admin')->where(['id' => $uid])->strict(false)->field(true)->update($param); $this->apiSuccess('修改成功'); } //修改密码 public function edit_password() { $param = get_params(); try { validate(AdminCheck::class)->scene('editPwd')->check($param); } catch (ValidateException $e) { // 验证失败 输出错误信息 $this->apiError($e->getError()); } $uid = JWT_UID; $admin = Db::name('Admin')->where(['id' => $uid])->find(); $old_psw = set_password($param['old_pwd'], $admin['salt']); if ($admin['pwd'] != $old_psw) { $this->apiError('旧密码错误'); } $salt = set_salt(20); $new_pwd = set_password($param['pwd'], $salt); $data = [ 'reg_pwd' => '', 'salt' => $salt, 'pwd' => $new_pwd, 'update_time' => time(), ]; Db::name('Admin')->where(['id' => $uid])->strict(false)->field(true)->update($data); $this->apiSuccess('修改成功'); } //上传文件 public function upload() { $uid = JWT_UID; $sourse = 'file'; if(isset($param['sourse'])){ $sourse = $param['sourse']; } if($sourse == 'file' || $sourse == 'tinymce'){ if(request()->file('file')){ $file = request()->file('file'); } else{ $this->apiError('没有选择上传文件'); } } else{ if (request()->file('editormd-image-file')) { $file = request()->file('editormd-image-file'); } else { $this->apiError('没有选择上传文件'); } } // 获取上传文件的hash散列值 $sha1 = $file->hash('sha1'); $md5 = $file->hash('md5'); $rule = [ 'image' => 'jpg,png,jpeg,gif', 'doc' => 'txt,doc,docx,ppt,pptx,xls,xlsx,pdf', 'file' => 'zip,gz,7z,rar,tar', 'video' => 'mpg,mp4,mpeg,avi,wmv,mov,flv,m4v', ]; $fileExt = $rule['image'] . ',' . $rule['doc'] . ',' . $rule['file'] . ',' . $rule['video']; //1M=1024*1024=1048576字节 $fileSize = 100 * 1024 * 1024; if (isset($param['type']) && $param['type']) { $fileExt = $rule[$param['type']]; } if (isset($param['size']) && $param['size']) { $fileSize = $param['size']; } $validate = \think\facade\Validate::rule([ 'image' => 'require|fileSize:' . $fileSize . '|fileExt:' . $fileExt, ]); $file_check['image'] = $file; if (!$validate->check($file_check)) { $this->apiError($validate->getError()); } // 日期前綴 $dataPath = date('Ym'); $use = 'thumb'; $filename = \think\facade\Filesystem::disk('public')->putFile($dataPath, $file, function () use ($md5) { return $md5; }); if ($filename) { //写入到附件表 $data = []; $path = get_config('filesystem.disks.public.url'); $data['filepath'] = $path . '/' . $filename; $data['name'] = $file->getOriginalName(); $data['mimetype'] = $file->getOriginalMime(); $data['fileext'] = $file->extension(); $data['filesize'] = $file->getSize(); $data['filename'] = $filename; $data['sha1'] = $sha1; $data['md5'] = $md5; $data['module'] = \think\facade\App::initialize()->http->getName(); $data['action'] = app('request')->action(); $data['uploadip'] = app('request')->ip(); $data['create_time'] = time(); $data['user_id'] = $uid; if ($data['module'] = 'admin') { //通过后台上传的文件直接审核通过 $data['status'] = 1; $data['admin_id'] = $data['user_id']; $data['audit_time'] = time(); } $data['use'] = request()->has('use') ? request()->param('use') : $use; //附件用处 $res['id'] = Db::name('file')->insertGetId($data); $res['filepath'] = $data['filepath']; $res['name'] = $data['name']; $res['filename'] = $data['filename']; $res['filesize'] = $data['filesize']; $res['fileext'] = $data['fileext']; add_log('upload', $data['user_id'], $data,'文件'); $this->apiSuccess('上传成功', $res); } else { $this->apiError('上传失败,请重试'); } } }