diff --git a/README.md b/README.md index 34e0e3e..784defa 100644 --- a/README.md +++ b/README.md @@ -1,52 +1,77 @@ -ThinkPHP 6.0 -=============== -> 运行环境要求PHP7.1+。 +# ulthon_admin -## 主要新特性 +## 奥宏后台管理小模板 -* 采用`PHP7`强类型(严格模式) -* 支持更多的`PSR`规范 -* 原生多应用支持 -* 更强大和易用的查询 -* 全新的事件系统 -* 模型事件和数据库事件统一纳入事件系统 -* 模板引擎分离出核心 -* 内部功能中间件化 -* SESSION/Cookie机制改进 -* 对Swoole以及协程支持改进 -* 对IDE更加友好 -* 统一和精简大量用法 -## 安装 +### 使用ThinkPHP6快速开始一个有管理后台的项目 -~~~ -composer create-project topthink/think tp 6.0.*-dev -~~~ +#### 介绍 -如果需要更新框架使用 -~~~ -composer update topthink/framework -~~~ +这不是一个完整的后台解决方案或产品,没有过多的功能和开发规则. -## 文档 +基于thinkphp6的系统后台管理模板,仅实现通用的基本的功能,基于ThinkPHP6,Layui,Jquery,支持各类数据库. -[完全开发手册](https://www.kancloud.cn/manual/thinkphp6_0/content) -## 参与开发 +本项目的定位是实现几个基本的功能,节约您的一些开发时间,没有过多的开发限制. -请参阅 [ThinkPHP 核心框架包](https://github.com/top-think/framework)。 +比如每个后台都要有账号的登录/编辑,这种小的功能,几乎每次做项目时都要做,花时间又没有什么成就感,您可以使用本模板,节省这部分时间. -## 版权信息 +类似的功能还有服务器信息/系统配置等. -ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 +实现功能的同时没有制定更多的开发规则,您完全可以把本项目的代码修按照您的意愿改掉. -本项目包含的第三方源码和二进制文件之版权信息另行标注。 +#### 最新演示 -版权所有Copyright © 2006-2019 by ThinkPHP (http://thinkphp.cn) +[在线演示](http://ulthon-admin.ulthon.com/admin) -All rights reserved。 +账号: admin 密码: 123456 -ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 -更多细节参阅 [LICENSE.txt](LICENSE.txt) +#### 功能 + +- 服务器信息(0.2h,已完成) +- 系统配置(0.5h,已完成) +- 管理员管理(0.5h已完成) +- 账户管理(0.5h,已完成) +- 用户管理(0.5h已完成) +- 权限管理(1h已完成) +- 文件管理(2h已完成) +- 后台日志(1h已完成) + + +### 开发注意 + +#### 后台页面仅仅使用了`TP`的模板包含特性 + + +#### 支持所有(`TP6`支持的)类型数据库 + +填写正确的数据库连接配置, + +执行`php think migrate:run`安装数据库 + +执行`php think seed:run`初始化数据 + +#### 使用了配置全局中间件 + + +在这个中间件里把数据库的配置信息设置到项目中. + +中间件: `\app\\middleware\ConfigInit` + +#### 文件上传 + +经过这个类上传的文件会保存到`public`下, + +`TP`原本配置会保存到`public/storage`下,本项目修改了配置,直接保存到`public`下. + +类:`\app\api\controller\Files::save()` + +## 版权协议 + +`木兰协议` + +## 开发维护 + +[临沂奥宏网络科技有限公司](http://ulthon.com) \ No newline at end of file diff --git a/app/admin/controller/Admin.php b/app/admin/controller/Admin.php index 2b99927..91ff79e 100644 --- a/app/admin/controller/Admin.php +++ b/app/admin/controller/Admin.php @@ -104,6 +104,10 @@ class Admin extends Common $post_data['password'] = '123456'; } + if($admin_model->getData('avatar') != $post_data['avatar']){ + AppUploadFiles::delete($admin_model->getData('avatar')); + AppUploadFiles::use($post_data['avatar']); + } $post_data['salt'] = Str::random(6); @@ -128,6 +132,8 @@ class Admin extends Common { $post_data = $this->request->post(); + $admin_model = AppAdmin::find($post_data['id']); + if(!empty($post_data['password'])){ $post_data['salt'] = Str::random(6); @@ -136,6 +142,10 @@ class Admin extends Common unset($post_data['password']); } + if($admin_model->getData('avatar') != $post_data['avatar']){ + AppUploadFiles::delete($admin_model->getData('avatar')); + AppUploadFiles::use($post_data['avatar']); + } AppAdmin::update($post_data); $this->success('修改成功','index'); diff --git a/app/admin/controller/Member.php b/app/admin/controller/Member.php deleted file mode 100644 index 03fcca8..0000000 --- a/app/admin/controller/Member.php +++ /dev/null @@ -1,84 +0,0 @@ -request->post(); + + $admin_model = AppUser::where('account',$post_data['account'])->find(); + + if(!empty($admin_model)){ + $this->error('用户已存在'); + } + + if(empty($post_data['password'])){ + $post_data['password'] = '123456'; + } + + if(!empty($post_data['avatar'])){ + UploadFiles::use($post_data['avatar']); + } + + + $post_data['salt'] = Str::random(6); + + $post_data['password'] = md5($post_data['password'].$post_data['salt']); + + AppUser::create($post_data); + + $this->success('添加成功','index'); + } /** @@ -57,6 +93,13 @@ class User public function edit($id) { // + + + $model_user = AppUser::find($id); + + View::assign('user',$model_user); + + return View::fetch(); } /** @@ -69,6 +112,26 @@ class User public function update(Request $request, $id) { // + $post_data = $this->request->post(); + + $model_user = AppUser::find($id); + + if(!empty($post_data['password'])){ + $post_data['salt'] = Str::random(6); + + $post_data['password'] = md5($post_data['password'].$post_data['salt']); + }else{ + unset($post_data['password']); + } + + if($post_data['avatar'] != $model_user->getData('avatar')){ + UploadFiles::delete($model_user->getData('avatar')); + UploadFiles::use($post_data['avatar']); + } + + AppUser::update($post_data); + + $this->success('修改成功','index'); } /** @@ -80,5 +143,10 @@ class User public function delete($id) { // + + AppUser::destroy($id); + + return json_message(); + } } diff --git a/app/model/User.php b/app/model/User.php index 85c8b87..c38eb50 100644 --- a/app/model/User.php +++ b/app/model/User.php @@ -10,4 +10,13 @@ use think\Model; class User extends Model { // + + public function getAvatarAttr($value) + { + if(empty($value)){ + return '/static/images/avatar.jpeg'; + } + + return \get_source_link($value); + } } diff --git a/config/filesystem.php b/config/filesystem.php index c851aed..1750670 100644 --- a/config/filesystem.php +++ b/config/filesystem.php @@ -15,9 +15,9 @@ return [ // 磁盘类型 'type' => 'local', // 磁盘路径 - 'root' => app()->getRootPath() . 'public/storage', + 'root' => app()->getRootPath() . 'public/', // 磁盘路径对应的外部URL路径 - 'url' => '/storage', + 'url' => '/', // 可见性 'visibility' => 'public', ], diff --git a/config/upload_type.php b/config/upload_type.php index 65d745f..a2ba5bc 100644 --- a/config/upload_type.php +++ b/config/upload_type.php @@ -2,5 +2,6 @@ return [ 1 => '系统LOGO', - 2 => '管理员头像' + 2 => '管理员头像', + 3 => '用户头像', ]; \ No newline at end of file diff --git a/view/admin/common/_header.html b/view/admin/common/_header.html index 758fe4a..ca3a0d0 100644 --- a/view/admin/common/_header.html +++ b/view/admin/common/_header.html @@ -3,7 +3,7 @@