diff --git a/backend/app/Http/Controllers/Auth/Department.php b/backend/app/Http/Controllers/Auth/Department.php index e96ad84..a4edb0d 100644 --- a/backend/app/Http/Controllers/Auth/Department.php +++ b/backend/app/Http/Controllers/Auth/Department.php @@ -8,17 +8,73 @@ // +---------------------------------------------------------------------- namespace App\Http\Controllers\Auth; -use Illuminate\Support\Facades\Auth; -use App\Services\Auth\UsersService; +use App\Services\Auth\DepartmentService; use App\Http\Controllers\Base; +use App\Support\Tree; +use Illuminate\Support\Arr; class Department extends Base{ - /** - * @title 部门数据 - */ - public function index(){ + /** + * @title 部门数据 + */ + public function index(DepartmentService $service){ + $data = $service->getDepartmentList(request()); - return $this->data; - } + $sortData = Arr::keyBy($data, 'partent_id'); + + $this->data['data'] = (new Tree())->listToTree($data->toArray(), 'id', 'parent_id', 'children'); + return $this->data; + } + + /** + * @title 添加部门 + * + * @param DepartmentService $service + * @return void + */ + public function add(DepartmentService $service){ + try { + $service->createDepartment(request()); + $this->data['message'] = '添加成功!'; + } catch (\Exception $e) { + $this->data['code'] = 0; + $this->data['message'] = $e->getMessage(); + } + return $this->data; + } + + /** + * @title 修改部门 + * + * @param DepartmentService $service + * @return void + */ + public function edit(DepartmentService $service){ + try { + $service->updateDepartment(request()); + $this->data['message'] = '修改成功!'; + } catch (\Exception $e) { + $this->data['code'] = 0; + $this->data['message'] = $e->getMessage(); + } + return $this->data; + } + + /** + * @title 删除部门 + * + * @param DepartmentService $service + * @return void + */ + public function delete(DepartmentService $service){ + try { + $service->deleteDepartment(request()); + $this->data['message'] = '删除成功!'; + } catch (\Exception $e) { + $this->data['code'] = 0; + $this->data['message'] = $e->getMessage(); + } + return $this->data; + } } diff --git a/backend/app/Http/Controllers/Auth/Log.php b/backend/app/Http/Controllers/Auth/Log.php new file mode 100644 index 0000000..5df5719 --- /dev/null +++ b/backend/app/Http/Controllers/Auth/Log.php @@ -0,0 +1,27 @@ + +// +---------------------------------------------------------------------- +namespace App\Http\Controllers\Auth; + +use App\Http\Controllers\Base; +use App\Services\Auth\UsersLogService; + +class Log extends Base{ + + /** + * @title 日志列表 + * + * @param UsersLogService $service + * @return void + */ + public function index(UsersLogService $service){ + $this->data['data'] = $service->getUserLogList(request()); + $this->data['code'] = 1; + return $this->data; + } +} diff --git a/backend/app/Http/Controllers/Auth/Role.php b/backend/app/Http/Controllers/Auth/Role.php new file mode 100644 index 0000000..16f9e98 --- /dev/null +++ b/backend/app/Http/Controllers/Auth/Role.php @@ -0,0 +1,83 @@ + +// +---------------------------------------------------------------------- +namespace App\Http\Controllers\Auth; + +use App\Services\Auth\RoleService; +use App\Http\Controllers\Base; + +class Role extends Base{ + + /** + * @title 角色数据 + */ + public function index(RoleService $service){ + $tree = $service->getRolesList(request(), true); + + $this->data['code'] = 1; + $this->data['data'] = $tree; + return $this->data; + } + + /** + * @title 角色修改 + * @time 2019年12月11日 + * @param $id + * @param Request $request + * @return Array + */ + public function edit(RoleService $service) { + try { + $service->updateRole(request()); + $this->data['code'] = 1; + } catch (\Exception $e) { + $this->data['code'] = 0; + $this->data['message'] = $e->getMessage(); + } + return $this->data; + } + + /** + * @title 角色授权 + * @time 2019年12月11日 + * @param $id + * @param Request $request + * @return Array + */ + public function auth(RoleService $service) { + $role_id = request()->input('role_id', ''); + $auth = request()->input('auth', ''); + try { + $service->updateRolePermission($role_id, $auth); + $service->updateRoleAuth(request()); + $this->data['code'] = 1; + } catch (\Exception $e) { + $this->data['code'] = 0; + $this->data['message'] = $e->getMessage(); + } + return $this->data; + } + + /** + * @title 删除角色 + * + * @time 2019年12月11日 + * @param $id + * @return Json + */ + public function delete(RoleService $service){ + try { + $service->deleteRole(request()); + $this->data['code'] = 1; + } catch (\Exception $e) { + $this->data['code'] = 0; + $this->data['message'] = $e->getMessage(); + } + return $this->data; + } +} diff --git a/backend/app/Http/Controllers/Base.php b/backend/app/Http/Controllers/Base.php index 6371fac..cbfd4d0 100644 --- a/backend/app/Http/Controllers/Base.php +++ b/backend/app/Http/Controllers/Base.php @@ -5,5 +5,5 @@ use Illuminate\Routing\Controller; class Base extends Controller{ - public $data = ['code' => 0, 'data' => '', 'message' => '']; + public $data = ['code' => 1, 'data' => '', 'message' => '']; } diff --git a/backend/app/Http/Controllers/System/Index.php b/backend/app/Http/Controllers/System/Index.php index fcae7aa..09f93d2 100644 --- a/backend/app/Http/Controllers/System/Index.php +++ b/backend/app/Http/Controllers/System/Index.php @@ -34,7 +34,7 @@ class Index extends Base{ } public function log(UsersLogService $service){ - $this->data['data'] = $service->getUserLogList(request()); + $this->data['data'] = $service->getUserLogList(request()); $this->data['code'] = 1; return $this->data; } diff --git a/backend/app/Http/Controllers/System/Setting.php b/backend/app/Http/Controllers/System/Setting.php index e69de29..5e30115 100644 --- a/backend/app/Http/Controllers/System/Setting.php +++ b/backend/app/Http/Controllers/System/Setting.php @@ -0,0 +1,24 @@ + +// +---------------------------------------------------------------------- +namespace App\Http\Controllers\System; + +use App\Http\Controllers\Base; + +class Setting extends Base{ + + /** + * @title 设置配置表单 + * + * @return void + */ + public function index(){ + + return $this->data; + } +} diff --git a/backend/app/Services/Auth/DepartmentService.php b/backend/app/Services/Auth/DepartmentService.php new file mode 100644 index 0000000..6f6e148 --- /dev/null +++ b/backend/app/Services/Auth/DepartmentService.php @@ -0,0 +1,31 @@ + +// +---------------------------------------------------------------------- +namespace App\Services\Auth; + +use App\Models\Auth\Departments; +use think\facade\Config; +use App\Support\Tree; + +class DepartmentService{ + + /** + * @title 获取部门数据 + * + * @param [type] $request + * @return void + */ + public function getDepartmentList($request){ + $param = $request->all(); + $map = []; + if(isset($param['keyword']) && $param['keyword']){ + $map[] = ['title', 'LIKE', '%' . $param['keyword'] . '%']; + } + return Departments::where($map)->orderBy('sort', 'asc')->get(); + } +} diff --git a/backend/app/Services/Auth/RoleService.php b/backend/app/Services/Auth/RoleService.php new file mode 100644 index 0000000..32a231c --- /dev/null +++ b/backend/app/Services/Auth/RoleService.php @@ -0,0 +1,103 @@ + +// +---------------------------------------------------------------------- +namespace App\Services\Auth; + +use App\Models\Auth\Roles; +use App\Models\Auth\UserHasRoles; +use App\Models\Auth\RoleHasPermissions; +use think\facade\Config; +use App\Support\Tree; + +class RoleService{ + + /** + * @title 获取角色列表 + * + * @param [type] $request + * @param [type] $is_tree + * @return void + */ + public function getRolesList($request, $is_tree){ + $param = $request->input(); + $map = []; + if(isset($param['keyword']) && $param['keyword']){ + $map[] = ['title', 'LIKE', '%' . $param['keyword'] . '%']; + } + $list = Roles::with(['permissions'])->where($map)->orderBy('sort', 'asc')->get()->each(function($item){ + $item->data_range = strval($item->data_range); + $permission_id = []; + foreach($item->permissions as $val){ + $permission_id[] = $val['id']; + } + $item->permission_id = $permission_id; + }); + if($is_tree){ + return (new Tree())->listToTree($list->toArray(), 'id', 'parent_id', 'children'); + }else{ + return $list; + } + } + + /** + * @title 删除角色 + * + * @param [type] $request + * @return void + */ + public function deleteRole($request){ + $id = $request->input('id', 0); + $parent = Roles::where('parent_id', $id)->findOrEmpty(); + if (!$parent->isEmpty()) { + throw new \think\Exception("存在子角色,无法删除", 0); + } + $role = Roles::find($id); + // 删除权限 + PermissionAccess::where('role_id', '=', $role_id)->delete(); + // 删除部门关联 + // $role->detachDepartments(); + // 删除用户关联 + RolesAccess::where('role_id', '=', $role_id)->delete(); + // 删除 + $role->delete(); + } + /** + * @title 更新角色权限 + * + * @param [type] $role_id + * @param [type] $data + * @return void + */ + public function updateRolePermission($role_id, $data){ + PermissionAccess::where('role_id', '=', $role_id)->delete(); + $save = []; + foreach ($data as $permiss) { + $save[] = ['role_id' => $role_id, 'permission_id' => $permiss]; + } + (new PermissionAccess())->saveAll($save); + return true; + } + public function updateRoleAuth($request){ + $role_id = $request->input('role_id', ''); + $data_range = $request->input('data_range', ''); + $dashboard = $request->input('dashboard', ''); + $mobile_module = $request->input('mobile_module', ''); + $role = Roles::find($role_id); + $save = [ + 'data_range' => $data_range, + 'dashboard' => $dashboard, + 'mobile_module' => $mobile_module + ]; + return $role->save($save); + } + + public function updateRole($request){ + $data = $request->input(); + return Roles::update($data); + } +} diff --git a/backend/app/Services/Auth/UsersLogService.php b/backend/app/Services/Auth/UsersLogService.php index cb49565..1838880 100644 --- a/backend/app/Services/Auth/UsersLogService.php +++ b/backend/app/Services/Auth/UsersLogService.php @@ -42,7 +42,7 @@ class UsersLogService{ $map[] = ['create_time', 'BETWEEN TIME', $param['date']]; } - $list = UsersLog::with(['user'])->where($map)->orderBy('create_time', 'desc')->paginate($param['pageSize']); + $list = UsersLog::with(['user'])->where($map)->orderBy('create_time', 'desc')->paginate(isset($param['pageSize']) ? $param['pageSize'] : 30); return $list; } @@ -74,7 +74,7 @@ class UsersLogService{ $map[] = ['create_time', 'BETWEEN TIME', $param['date']]; } - $list = UsersLog::with(['user'])->where($map)->order('create_time desc')->paginate($request->pageConfig); + $list = UsersLog::with(['user'])->where($map)->orderBy('create_time', 'desc')->paginate(isset($param['pageSize']) ? $param['pageSize'] : 30); return $list; } diff --git a/backend/app/Services/Auth/UsersService.php b/backend/app/Services/Auth/UsersService.php index ac355c8..26c2339 100644 --- a/backend/app/Services/Auth/UsersService.php +++ b/backend/app/Services/Auth/UsersService.php @@ -10,7 +10,6 @@ namespace App\Services\Auth; use App\Models\Auth\Users; use App\Models\Auth\RolesAccess; -use think\facade\Config; class UsersService{ @@ -36,7 +35,7 @@ class UsersService{ $q->name('user_has_roles')->where($subMap)->field('uid'); }]; } - $list = Users::with(['roles', 'department'])->where($map)->orderBy('uid')->paginate()->each(function($item){ + $list = Users::with(['roles', 'department'])->where($map)->orderBy('uid')->paginate(isset($param['pageSize']) ? $param['pageSize'] : 30)->each(function($item){ $roleId = []; $roleName = []; $identify = []; diff --git a/backend/app/Services/System/SettingService.php b/backend/app/Services/System/SettingService.php new file mode 100644 index 0000000..747fbbd --- /dev/null +++ b/backend/app/Services/System/SettingService.php @@ -0,0 +1,12 @@ + +// +---------------------------------------------------------------------- +namespace App\Services\Auth; + +class SettingService{ +} diff --git a/backend/resources/views/welcome.blade.php b/backend/resources/views/welcome.blade.php index 9faad4e..20cd4a1 100644 --- a/backend/resources/views/welcome.blade.php +++ b/backend/resources/views/welcome.blade.php @@ -1,132 +1,48 @@ - - - - - - - Laravel - - - - - - - - - - -
- @if (Route::has('login')) - - @endif - -
-
- - - - - -
- -
-
-
- - -
-
- Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end. -
-
-
- -
-
- - -
- -
-
- Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process. -
-
-
- -
-
- - -
- -
-
- Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials. -
-
-
- -
-
- -
Vibrant Ecosystem
-
- -
-
- Laravel's robust library of first-party tools and libraries, such as Forge, Vapor, Nova, and Envoyer help you take your projects to the next level. Pair them with powerful open source libraries like Cashier, Dusk, Echo, Horizon, Sanctum, Telescope, and more. -
-
-
-
-
- -
-
-
- - - - - - Shop - - - - - - - - Sponsor - -
-
- -
- Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) -
-
-
-
- + + + + + + +SentCMS网站管理系统 + + + + + + + @if (Route::has('login')) +
+ 登录 + @if (Route::has('register')) + 注册 + @endif +
+ @endif +
+
+
+ SentAdmin管理系统 +
+ +
+
+ diff --git a/backend/routes/api.php b/backend/routes/api.php index e7c3705..cd03a91 100644 --- a/backend/routes/api.php +++ b/backend/routes/api.php @@ -1,19 +1,7 @@ middleware(['auth:api'])->group(function ($router) { Route::post('logout', [App\Http\Controllers\Auth\Index::class, 'logout']); @@ -23,12 +11,26 @@ Route::prefix('auth')->middleware(['auth:api'])->group(function ($router) { Route::prefix('system')->middleware(['auth:api'])->group(function ($router) { - Route::get('index/version', [App\Http\Controllers\System\Index::class, 'version']); - Route::get('log', [App\Http\Controllers\System\Index::class, 'log']); + Route::get('version', [App\Http\Controllers\System\Index::class, 'version']); Route::get('setting', [App\Http\Controllers\System\Setting::class, 'index']); }); Route::prefix('user')->middleware(['auth:api'])->group(function ($router) { + /* 用户路由 */ + Route::controller(App\Http\Controllers\Auth\User::class)->group(function () { + Route::get('list', 'index'); + Route::post('add', 'add'); + Route::put('edit', 'edit'); + Route::post('passwd', 'passwd'); + Route::get('info', 'info'); + }); + + /* 日志路由 */ + Route::controller(App\Http\Controllers\Auth\Log::class)->group(function () { + Route::get('log', 'index'); + Route::get('log/my', 'my'); + }); + /* 前端菜单 */ Route::controller(App\Http\Controllers\Auth\Permission::class)->group(function () { Route::get('menu', 'index'); @@ -42,11 +44,14 @@ Route::prefix('user')->middleware(['auth:api'])->group(function ($router) { Route::get('department', 'index'); Route::post('department', 'add'); Route::put('department', 'edit'); + Route::delete('department', 'delete'); }); - /* 用户路由 */ - Route::controller(App\Http\Controllers\Auth\User::class)->group(function () { - Route::get('index', 'index'); - Route::get('info', 'info'); + /* 角色路由 */ + Route::controller(App\Http\Controllers\Auth\Role::class)->group(function () { + Route::get('role', 'index'); + Route::post('role', 'add'); + Route::put('role', 'edit'); + Route::delete('role', 'delete'); }); }); diff --git a/backend/routes/web.php b/backend/routes/web.php index b130397..8725948 100644 --- a/backend/routes/web.php +++ b/backend/routes/web.php @@ -1,18 +1,6 @@ name('home'); diff --git a/front/src/api/model/system.js b/front/src/api/model/system.js index 03408db..67b80fc 100644 --- a/front/src/api/model/system.js +++ b/front/src/api/model/system.js @@ -3,7 +3,7 @@ import http from "@/utils/request" export default { version:{ - url: `${config.API_URL}system/index/version`, + url: `${config.API_URL}system/version`, name: "获取最新版本号", get: async function(){ return await http.get(this.url); @@ -98,21 +98,5 @@ export default { return await http.get(this.url); } } - }, - log: { - list: { - url: `${config.API_URL}system/log`, - name: "日志列表", - get: async function(params){ - return await http.get(this.url, params); - } - }, - my: { - url: `${config.API_URL}system/log/my`, - name: "我的日志", - get: async function(params){ - return await http.get(this.url, params); - } - } } } diff --git a/front/src/api/model/user.js b/front/src/api/model/user.js index 8ea0323..533ef2b 100644 --- a/front/src/api/model/user.js +++ b/front/src/api/model/user.js @@ -3,7 +3,7 @@ import http from "@/utils/request" export default { list: { - url: `${config.API_URL}user/index`, + url: `${config.API_URL}user/list`, name: "获得用户列表", get: async function(params){ return await http.get(this.url, params); @@ -27,7 +27,7 @@ export default { url: `${config.API_URL}user/edit`, name: "编辑用户", post: async function(params){ - return await http.post(this.url, params); + return await http.put(this.url, params); } }, uppasswd:{ @@ -39,7 +39,7 @@ export default { }, uprole: { url: `${config.API_URL}user/auth`, - name: "编辑用户", + name: "用户授权", post: async function(params){ return await http.post(this.url, params); } @@ -119,5 +119,21 @@ export default { return await http.post(this.url, params); } } + }, + log: { + list: { + url: `${config.API_URL}system/log`, + name: "日志列表", + get: async function(params){ + return await http.get(this.url, params); + } + }, + my: { + url: `${config.API_URL}system/log/my`, + name: "我的日志", + get: async function(params){ + return await http.get(this.url, params); + } + } } } diff --git a/front/src/pages/system/log/index.vue b/front/src/pages/system/log/index.vue index d9d58fa..1732cfa 100644 --- a/front/src/pages/system/log/index.vue +++ b/front/src/pages/system/log/index.vue @@ -73,7 +73,7 @@ export default { // } ], date: [], - apiObj: this.$API.system.log.list, + apiObj: this.$API.user.log.list, search: { keyword: "" } diff --git a/front/src/pages/ucenter/user/logs.vue b/front/src/pages/ucenter/user/logs.vue index 907dc13..6656e97 100644 --- a/front/src/pages/ucenter/user/logs.vue +++ b/front/src/pages/ucenter/user/logs.vue @@ -24,7 +24,7 @@ export default { data() { return { data: [], - apiObj: this.$API.system.log.my, + apiObj: this.$API.user.log.my, search: {date_type: 'seven'} } } @@ -32,4 +32,4 @@ export default { \ No newline at end of file +