diff --git a/app/adminapi/controller/user/UserMenuController.php b/app/adminapi/controller/user/UserMenuController.php new file mode 100644 index 000000000..26f3a3488 --- /dev/null +++ b/app/adminapi/controller/user/UserMenuController.php @@ -0,0 +1,108 @@ +dataLists(new UserMenuLists()); + } + + + /** + * @notes 添加用户菜单 + * @return \think\response\Json + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function add() + { + $params = (new UserMenuValidate())->post()->goCheck('add'); + $result = UserMenuLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(UserMenuLogic::getError()); + } + + + /** + * @notes 编辑用户菜单 + * @return \think\response\Json + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function edit() + { + $params = (new UserMenuValidate())->post()->goCheck('edit'); + $result = UserMenuLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(UserMenuLogic::getError()); + } + + + /** + * @notes 删除用户菜单 + * @return \think\response\Json + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function delete() + { + $params = (new UserMenuValidate())->post()->goCheck('delete'); + UserMenuLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取用户菜单详情 + * @return \think\response\Json + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function detail() + { + $params = (new UserMenuValidate())->goCheck('detail'); + $result = UserMenuLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/adminapi/controller/user/UserRoleController.php b/app/adminapi/controller/user/UserRoleController.php new file mode 100644 index 000000000..26df1e01e --- /dev/null +++ b/app/adminapi/controller/user/UserRoleController.php @@ -0,0 +1,108 @@ +dataLists(new UserRoleLists()); + } + + + /** + * @notes 添加用户角色 + * @return \think\response\Json + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function add() + { + $params = (new UserRoleValidate())->post()->goCheck('add'); + $result = UserRoleLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(UserRoleLogic::getError()); + } + + + /** + * @notes 编辑用户角色 + * @return \think\response\Json + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function edit() + { + $params = (new UserRoleValidate())->post()->goCheck('edit'); + $result = UserRoleLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(UserRoleLogic::getError()); + } + + + /** + * @notes 删除用户角色 + * @return \think\response\Json + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function delete() + { + $params = (new UserRoleValidate())->post()->goCheck('delete'); + UserRoleLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取用户角色详情 + * @return \think\response\Json + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function detail() + { + $params = (new UserRoleValidate())->goCheck('detail'); + $result = UserRoleLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/adminapi/lists/user/UserMenuLists.php b/app/adminapi/lists/user/UserMenuLists.php new file mode 100644 index 000000000..40222dc26 --- /dev/null +++ b/app/adminapi/lists/user/UserMenuLists.php @@ -0,0 +1,77 @@ + ['pid', 'type', 'name', 'icon', 'sort', 'paths', 'params', 'is_show', 'is_disable'], + ]; + } + + + /** + * @notes 获取用户菜单列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function lists(): array + { + return UserMenu::where($this->searchWhere) + ->field(['id', 'pid', 'type', 'name', 'icon', 'sort', 'paths', 'params', 'is_show', 'is_disable']) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select() + ->toArray(); + } + + + /** + * @notes 获取用户菜单数量 + * @return int + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function count(): int + { + return UserMenu::where($this->searchWhere)->count(); + } + +} \ No newline at end of file diff --git a/app/adminapi/lists/user/UserRoleLists.php b/app/adminapi/lists/user/UserRoleLists.php new file mode 100644 index 000000000..90d97aa3e --- /dev/null +++ b/app/adminapi/lists/user/UserRoleLists.php @@ -0,0 +1,77 @@ + ['name', 'desc', 'menu_arr', 'sort'], + ]; + } + + + /** + * @notes 获取用户角色列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function lists(): array + { + return UserRole::where($this->searchWhere) + ->field(['id', 'name', 'desc', 'menu_arr', 'sort']) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select() + ->toArray(); + } + + + /** + * @notes 获取用户角色数量 + * @return int + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function count(): int + { + return UserRole::where($this->searchWhere)->count(); + } + +} \ No newline at end of file diff --git a/app/adminapi/validate/user/UserMenuValidate.php b/app/adminapi/validate/user/UserMenuValidate.php new file mode 100644 index 000000000..f63530412 --- /dev/null +++ b/app/adminapi/validate/user/UserMenuValidate.php @@ -0,0 +1,112 @@ + 'require', + 'pid' => 'require', + 'type' => 'require', + 'name' => 'require', + 'icon' => 'require', + 'sort' => 'require', + 'paths' => 'require', + 'params' => 'require', + 'is_show' => 'require', + 'is_disable' => 'require', + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + 'pid' => '上级菜单', + 'type' => '权限类型: M=目录,C=菜单,A=按钮', + 'name' => '菜单名称', + 'icon' => '菜单图标', + 'sort' => '菜单排序', + 'paths' => '路由地址', + 'params' => '路由参数', + 'is_show' => '是否显示: 0=否, 1=是', + 'is_disable' => '是否禁用: 0=否, 1=是', + ]; + + + /** + * @notes 添加场景 + * @return UserMenuValidate + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function sceneAdd() + { + return $this->only(['pid','type','name','icon','sort','paths','params','is_show','is_disable']); + } + + + /** + * @notes 编辑场景 + * @return UserMenuValidate + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function sceneEdit() + { + return $this->only(['id','pid','type','name','icon','sort','paths','params','is_show','is_disable']); + } + + + /** + * @notes 删除场景 + * @return UserMenuValidate + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function sceneDelete() + { + return $this->only(['id']); + } + + + /** + * @notes 详情场景 + * @return UserMenuValidate + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + +} \ No newline at end of file diff --git a/app/adminapi/validate/user/UserRoleValidate.php b/app/adminapi/validate/user/UserRoleValidate.php new file mode 100644 index 000000000..55e812492 --- /dev/null +++ b/app/adminapi/validate/user/UserRoleValidate.php @@ -0,0 +1,98 @@ + 'require', + 'name' => 'require', + 'desc' => 'require', + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + 'name' => '名称', + 'desc' => '描述', + ]; + + + /** + * @notes 添加场景 + * @return UserRoleValidate + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function sceneAdd() + { + return $this->only(['name','desc']); + } + + + /** + * @notes 编辑场景 + * @return UserRoleValidate + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function sceneEdit() + { + return $this->only(['id','name','desc']); + } + + + /** + * @notes 删除场景 + * @return UserRoleValidate + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function sceneDelete() + { + return $this->only(['id']); + } + + + /** + * @notes 详情场景 + * @return UserRoleValidate + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + +} \ No newline at end of file diff --git a/app/common/logic/user/UserMenuLogic.php b/app/common/logic/user/UserMenuLogic.php new file mode 100644 index 000000000..e4da1ba70 --- /dev/null +++ b/app/common/logic/user/UserMenuLogic.php @@ -0,0 +1,122 @@ + $params['pid'], + 'type' => $params['type'], + 'name' => $params['name'], + 'icon' => $params['icon'], + 'sort' => $params['sort'], + 'paths' => $params['paths'], + 'params' => $params['params'], + 'is_show' => $params['is_show'], + 'is_disable' => $params['is_disable'] + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 编辑用户菜单 + * @param array $params + * @return bool + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + UserMenu::where('id', $params['id'])->update([ + 'pid' => $params['pid'], + 'type' => $params['type'], + 'name' => $params['name'], + 'icon' => $params['icon'], + 'sort' => $params['sort'], + 'paths' => $params['paths'], + 'params' => $params['params'], + 'is_show' => $params['is_show'], + 'is_disable' => $params['is_disable'] + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 删除用户菜单 + * @param array $params + * @return bool + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public static function delete(array $params): bool + { + return UserMenu::destroy($params['id']); + } + + + /** + * @notes 获取用户菜单详情 + * @param $params + * @return array + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public static function detail($params): array + { + return UserMenu::findOrEmpty($params['id'])->toArray(); + } +} \ No newline at end of file diff --git a/app/common/logic/user/UserRoleLogic.php b/app/common/logic/user/UserRoleLogic.php new file mode 100644 index 000000000..68fa16f83 --- /dev/null +++ b/app/common/logic/user/UserRoleLogic.php @@ -0,0 +1,112 @@ + $params['name'], + 'desc' => $params['desc'], + 'menu_arr' => $params['menu_arr'], + 'sort' => $params['sort'] + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 编辑用户角色 + * @param array $params + * @return bool + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + UserRole::where('id', $params['id'])->update([ + 'name' => $params['name'], + 'desc' => $params['desc'], + 'menu_arr' => $params['menu_arr'], + 'sort' => $params['sort'] + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 删除用户角色 + * @param array $params + * @return bool + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public static function delete(array $params): bool + { + return UserRole::destroy($params['id']); + } + + + /** + * @notes 获取用户角色详情 + * @param $params + * @return array + * @author likeadmin + * @date 2023/08/23 09:38 + */ + public static function detail($params): array + { + return UserRole::findOrEmpty($params['id'])->toArray(); + } +} \ No newline at end of file diff --git a/app/common/model/user/UserMenu.php b/app/common/model/user/UserMenu.php new file mode 100644 index 000000000..a593a1358 --- /dev/null +++ b/app/common/model/user/UserMenu.php @@ -0,0 +1,34 @@ +