['except' => []] ]; //公告信息 public function note_list() { $param = get_params(); $where = array(); if (!empty($param['keywords'])) { $where[] = ['a.title', 'like', '%' . $param['keywords'] . '%']; } $where[] = ['a.status', '=', 1]; $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit']; $note = NoteList::where($where) ->field('a.id,a.cate_id,a.title,a.content,a.status,a.create_time,a.start_time,a.end_time,c.title as cate_title') ->alias('a') ->join('NoteCate c', 'a.cate_id = c.id', 'LEFT') ->order('a.end_time desc,a.sort desc,a.create_time desc') ->paginate($rows, false, ['query' => $param]) ->each(function ($item, $key) { $item->start_time = empty($item->start_time) ? '-' : date('Y-m-d', $item->start_time); $item->end_time = empty($item->end_time) ? '-' : date('Y-m-d', $item->end_time); }); $this->apiSuccess('获取成功', $note); } //用户信息 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(); $this->apiSuccess('获取成功', $userInfo); } //用户数据汇总 public function data_total() { $total = []; $approveCount = Db::name('Approve')->count(); $noteCount = Db::name('Note')->where('status', '1')->count(); $expenseCount = Db::name('Expense')->where('delete_time', '0')->count(); $invoiceCount = Db::name('Invoice')->where('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, ); $this->uid = JWT_UID; $module = Db::name('AdminModule')->column('name'); if (in_array('customer', $module)) { $whereCustomer = array(); $whereCustomerOr = array(); $uid = $this->uid; $dids = get_department_role($uid); $whereCustomer[] = ['delete_time', '=', 0]; $whereCustomerOr[] =['belong_uid', '=', $uid]; if(!empty($dids)){ $whereCustomerOr[] =['belong_did', 'in', $dids]; } $whereCustomerOr[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',share_ids)")]; $customerCount = Db::name('Customer')->where($whereCustomer) ->where(function ($query) use($whereCustomerOr) { $query->whereOr($whereCustomerOr); }) ->count(); $total[] = array( 'name' => '客户', 'type' => 'customer', 'num' => $customerCount, ); } if (in_array('contract', $module)) { $whereContract = array(); $whereContractOr = array(); $uid = $this->uid; $whereContract[] = ['delete_time', '=', 0]; $whereContractOr[] =['admin_id|prepared_uid|sign_uid|keeper_uid', '=', $uid]; $whereContractOr[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',share_ids)")]; $whereContractOr[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',check_admin_ids)")]; $whereContractOr[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',flow_admin_ids)")]; $dids = get_department_role($uid); if(!empty($dids)){ $whereContractOr[] =['sign_did', 'in', $dids]; } $contractCount = Db::name('Contract')->where($whereContract) ->where(function ($query) use($whereContractOr) { $query->whereOr($whereContractOr); }) ->count(); $total[] = array( 'name' => '合同', 'type' => 'contract', 'num' => $contractCount, ); } 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)->count(); $whereOr = array(); $map1 = []; $map2 = []; $map3 = []; $map4 = []; $uid = $this->uid; $map1[] = ['admin_id', '=', $uid]; $map2[] = ['director_uid', '=', $uid]; $map3[] = ['', 'exp', Db::raw("FIND_IN_SET({$uid},assist_admin_ids)")]; $map4[] = ['project_id', 'in', $project_ids]; $whereOr =[$map1,$map2,$map3,$map4]; $taskCount = Db::name('ProjectTask') ->where(function ($query) use ($whereOr) { if (!empty($whereOr)) $query->whereOr($whereOr); }) ->where([['delete_time', '=', 0]])->count(); $total[] = array( 'name' => '项目', 'type' => 'project', 'num' => $projectCount, ); $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('上传失败,请重试'); } } }