diff --git a/jero-boot/db/20230506处理垂直越权.sql b/jero-boot/db/20230506处理垂直越权.sql
new file mode 100644
index 00000000..c06ff518
--- /dev/null
+++ b/jero-boot/db/20230506处理垂直越权.sql
@@ -0,0 +1,31 @@
+-- ----------------------------
+-- 系统管理-菜单管理(增删查改权限)
+-- ----------------------------
+-- 权限数据 --
+INSERT INTO `sys_permission` VALUES ('1654673897041223683', '54dd5457a3190740005c1bfec55b1c34', '查询', NULL, NULL, NULL, NULL, 2, 'permission:list', '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2023-05-06 10:26:14', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('1654675497143033857', '54dd5457a3190740005c1bfec55b1c34', '添加', NULL, NULL, NULL, NULL, 2, 'permission:add', '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2023-05-06 10:32:36', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('1654675694854135809', '54dd5457a3190740005c1bfec55b1c34', '删除', NULL, NULL, NULL, NULL, 2, 'permission:delete', '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2023-05-06 10:33:23', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('1654675850508951554', '54dd5457a3190740005c1bfec55b1c34', '编辑', NULL, NULL, NULL, NULL, 2, 'permission:edit', '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2023-05-06 10:34:00', NULL, NULL, 0, 0, '1', 0);
+-- 权限与admin角色关联数据 --
+INSERT INTO `sys_role_permission` VALUES ('1654675964954730498', 'f6817f48af4fb3af11b9e8bf182f618b', '1654673897041223683', NULL, '2023-05-06 10:34:27', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('1654675964984090626', 'f6817f48af4fb3af11b9e8bf182f618b', '1654675497143033857', NULL, '2023-05-06 10:34:27', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('1654675964988284929', 'f6817f48af4fb3af11b9e8bf182f618b', '1654675694854135809', NULL, '2023-05-06 10:34:27', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('1654675964992479233', 'f6817f48af4fb3af11b9e8bf182f618b', '1654675850508951554', NULL, '2023-05-06 10:34:27', '127.0.0.1');
+
+-- ----------------------------
+-- 系统管理-数据字典(增删查改、导出导入权限)
+-- ----------------------------
+-- 权限数据 --
+INSERT INTO `sys_permission` VALUES ('1654744031105675265', 'f1cb187abf927c88b89470d08615f5ac', '查询', NULL, NULL, NULL, NULL, 2, 'dict:list', '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2023-05-06 15:04:55', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('1654744160357347330', 'f1cb187abf927c88b89470d08615f5ac', '添加', NULL, NULL, NULL, NULL, 2, 'dict:add', '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2023-05-06 15:05:26', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('1654744259787517954', 'f1cb187abf927c88b89470d08615f5ac', '删除', NULL, NULL, NULL, NULL, 2, 'dict:delete', '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2023-05-06 15:05:50', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('1654744350615171074', 'f1cb187abf927c88b89470d08615f5ac', '编辑', NULL, NULL, NULL, NULL, 2, 'dict:edit', '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2023-05-06 15:06:12', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('1654746352959123457', 'f1cb187abf927c88b89470d08615f5ac', '导出', NULL, NULL, NULL, NULL, 2, 'dict:export', '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2023-05-06 15:14:09', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('1654746470756151297', 'f1cb187abf927c88b89470d08615f5ac', '导入', NULL, NULL, NULL, NULL, 2, 'dict:import', '1', NULL, 0, NULL, 1, 1, 0, 0, NULL, 'admin', '2023-05-06 15:14:37', NULL, NULL, 0, 0, '1', 0);
+-- 权限与admin角色关联数据 --
+INSERT INTO `sys_role_permission` VALUES ('1654747707610263553', 'f6817f48af4fb3af11b9e8bf182f618b', '1654744031105675265', NULL, '2023-05-06 15:19:32', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('1654747707627040770', 'f6817f48af4fb3af11b9e8bf182f618b', '1654744160357347330', NULL, '2023-05-06 15:19:32', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('1654747707627040771', 'f6817f48af4fb3af11b9e8bf182f618b', '1654744259787517954', NULL, '2023-05-06 15:19:32', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('1654747707631235073', 'f6817f48af4fb3af11b9e8bf182f618b', '1654744350615171074', NULL, '2023-05-06 15:19:32', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('1654747707631235074', 'f6817f48af4fb3af11b9e8bf182f618b', '1654746352959123457', NULL, '2023-05-06 15:19:32', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('1654747707635429378', 'f6817f48af4fb3af11b9e8bf182f618b', '1654746470756151297', NULL, '2023-05-06 15:19:32', '127.0.0.1');
\ No newline at end of file
diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java
index c0c2bf4d..2bb8832b 100644
--- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java
+++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysDictController.java
@@ -1,575 +1,596 @@
-package com.jero.modules.system.controller;
-
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.jero.common.api.vo.Results;
-import com.jero.common.constant.CacheConstant;
-import com.jero.common.constant.CommonConstant;
-import com.jero.common.exception.JeroBootException;
-import com.jero.common.system.base.controller.JeroController;
-import com.jero.common.system.query.QueryGenerator;
-import com.jero.common.system.vo.DictModel;
-import com.jero.common.system.vo.LoginUser;
-import com.jero.common.util.ImportExcelUtil;
-import com.jero.common.util.SqlInjectionUtil;
-import com.jero.common.util.oConvertUtils;
-import com.jero.modules.system.entity.SuccessAndErrorLines;
-import com.jero.modules.system.entity.SysDict;
-import com.jero.modules.system.entity.SysDictItem;
-import com.jero.modules.system.model.SysDictTree;
-import com.jero.modules.system.model.TreeSelectModel;
-import com.jero.modules.system.service.ISysDictItemService;
-import com.jero.modules.system.service.ISysDictService;
-import com.jero.modules.system.vo.SysDictPage;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang.StringUtils;
-import org.apache.poi.ss.formula.functions.T;
-import org.apache.shiro.SecurityUtils;
-import org.jeecgframework.poi.excel.ExcelImportCheckUtil;
-import org.jeecgframework.poi.excel.ExcelImportUtil;
-import org.jeecgframework.poi.excel.def.NormalExcelConstants;
-import org.jeecgframework.poi.excel.entity.ExportParams;
-import org.jeecgframework.poi.excel.entity.ImportParams;
-import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cache.annotation.CacheEvict;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.*;
-
-/**
- *
- * 字典表 前端控制器
- *
- *
- * @Author zhangweijian
- * @since 2018-12-28
- */
-@RestController
-@Api(tags = "字典控制器")
-@RequestMapping("/sys/dict")
-@Slf4j
-public class SysDictController {
-
- @Autowired
- private ISysDictService sysDictService;
- @Autowired
- private ISysDictItemService sysDictItemService;
- @Autowired
- public RedisTemplate redisTemplate;
-
- private static final String DICT_CODE_ERROE = "字典Code格式不正确!";
- private static final String OPTION_SUCCESS = "操作成功!";
- private static final String DEL_SUCCESS = "删除成功!";
-
- @GetMapping("/page")
- @ApiOperation(value = "字典控制器-分页列表查询", notes = "字典控制器-分页列表查询")
- public Results> queryPageList(SysDict sysDict, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
- @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) {
- Results> result = new Results<>();
- QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysDict, req.getParameterMap());
- Page page = new Page<>(pageNo, pageSize);
- IPage pageList = sysDictService.page(page, queryWrapper);
- log.debug("查询当前页:"+pageList.getCurrent());
- log.debug("查询当前页数量:"+pageList.getSize());
- log.debug("查询结果数量:"+pageList.getRecords().size());
- log.debug("数据总数:"+pageList.getTotal());
- result.setSuccess(true);
- result.setResult(pageList);
- return result;
- }
-
- /**
- * @功能:获取树形字典数据
- * @param sysDict
- * @param pageNo
- * @param pageSize
- * @param req
- * @return
- */
- @ApiOperation(value = "字典控制器-树形字典数据", notes = "字典控制器-树形字典数据")
- @GetMapping("/treeList")
- public Results> treeList(SysDict sysDict, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
- @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) {
- Results> result = new Results<>();
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- // 构造查询条件
- String dictName = sysDict.getDictName();
- if(oConvertUtils.isNotEmpty(dictName)) {
- query.like(true, SysDict::getDictName, dictName);
- }
- query.orderByDesc(true, SysDict::getCreateTime);
- List list = sysDictService.list(query);
- List treeList = new ArrayList<>();
- for (SysDict node : list) {
- treeList.add(new SysDictTree(node));
- }
- result.setSuccess(true);
- result.setResult(treeList);
- return result;
- }
-
- /**
- * 获取全部字典数据
- *
- * @return
- */
- @ApiOperation(value = "字典控制器-获取全部字典数据", notes = "字典控制器-获取全部字典数据")
- @GetMapping("/queryAllDictItems")
- public Results