From 5c05d39ee575a4d76403a9fff561e960fa6da30a Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Sun, 25 Dec 2022 21:51:25 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/common/enums/QueryTEnum.java | 3 +- .../nl/modules/system/domain/vo/DeptVo.java | 1 - .../modules/system/rest/MenuController.java | 4 +- .../modules/system/service/MenuService.java | 4 +- .../modules/system/service/dto/RoleDto.java | 1 + .../system/service/impl/MenuServiceImpl.java | 6 +- .../controller/menu/SysMenuController.java | 112 ++++--- .../system/service/menu/ISysMenuService.java | 17 +- .../menu/dao/mapper/SysMenuMapper.java | 11 + .../service/menu/dao/mapper/SysMenuMapper.xml | 34 ++ .../service/menu}/dto/MenuDto.java | 14 +- .../nl/system/service/menu/dto/MenuQuery.java | 22 ++ .../service/menu/impl/SysMenuServiceImpl.java | 100 +++++- .../service/role/impl/SysRoleServiceImpl.java | 1 - .../secutiry/impl/OnlineUserService.java | 3 +- nladmin-ui/src/api/system/menu.js | 2 +- nladmin-ui/src/router/index.js | 2 +- nladmin-ui/src/views/system/dept/index.vue | 2 + .../src/views/system/dict/dictDetail.js | 4 +- nladmin-ui/src/views/system/menu/dd/index.vue | 304 ++++++++++++++++++ nladmin-ui/src/views/system/menu/index.vue | 147 ++++++--- nladmin-ui/src/views/system/menu/menu.js | 76 +++++ 22 files changed, 747 insertions(+), 123 deletions(-) rename nladmin-system/nlsso-server/src/main/java/org/nl/{modules/system/service => system/service/menu}/dto/MenuDto.java (91%) create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuQuery.java create mode 100644 nladmin-ui/src/views/system/menu/dd/index.vue create mode 100644 nladmin-ui/src/views/system/menu/menu.js diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/QueryTEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/QueryTEnum.java index 14ce068..5783ab0 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/QueryTEnum.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/QueryTEnum.java @@ -19,7 +19,8 @@ public enum QueryTEnum { LE((q, k, v) -> { q.le(k[0],v); }), BY((q, k, v) -> { q.orderByDesc(k[0],v); }), NO((q, k, v) -> { q.isNull(k[0]); }), - LT((q, k, v) -> { q.lt(k[0],v); }); + LT((q, k, v) -> { q.lt(k[0],v); }), + OREQ((q, k, v) -> { if (v == null){ q.isNull(k[0]); }else { q.eq(k[0],v); } }); private LConsumer doP; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/domain/vo/DeptVo.java b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/domain/vo/DeptVo.java index 121b616..ec76c59 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/domain/vo/DeptVo.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/domain/vo/DeptVo.java @@ -20,7 +20,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import org.nl.modules.common.base.BaseDTO; -import org.nl.modules.system.service.dto.MenuDto; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/rest/MenuController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/rest/MenuController.java index d453e75..160b72d 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/rest/MenuController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/rest/MenuController.java @@ -26,7 +26,7 @@ import lombok.RequiredArgsConstructor; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.logging.annotation.Log; import org.nl.modules.system.service.MenuService; -import org.nl.modules.system.service.dto.MenuDto; +import org.nl.system.service.menu.dto.MenuDto; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -43,7 +43,7 @@ import java.util.*; @RestController @RequiredArgsConstructor @Api(tags = "系统:菜单管理") -@RequestMapping("/api/menus") +@RequestMapping("/api/menus2") public class MenuController { private final MenuService menuService; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/MenuService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/MenuService.java index d8b016c..611abad 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/MenuService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/MenuService.java @@ -17,9 +17,7 @@ package org.nl.modules.system.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.nl.modules.system.domain.Menu; -import org.nl.modules.system.service.dto.MenuDto; -import org.nl.modules.system.service.dto.MenuQueryCriteria; +import org.nl.system.service.menu.dto.MenuDto; import org.springframework.data.domain.Pageable; import java.util.List; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/dto/RoleDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/dto/RoleDto.java index bec7b21..2547288 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/dto/RoleDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/dto/RoleDto.java @@ -18,6 +18,7 @@ package org.nl.modules.system.service.dto; import lombok.Getter; import lombok.Setter; import org.nl.modules.common.base.BaseDTO; +import org.nl.system.service.menu.dto.MenuDto; import java.io.Serializable; import java.util.Objects; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/impl/MenuServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/impl/MenuServiceImpl.java index b3008bf..02efb60 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/impl/MenuServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/impl/MenuServiceImpl.java @@ -11,11 +11,11 @@ import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.domain.vo.MenuMetaVo; import org.nl.modules.system.domain.vo.MenuVo; import org.nl.modules.system.service.MenuService; -import org.nl.modules.system.service.dto.MenuDto; import org.nl.modules.tools.IdUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; +import org.nl.system.service.menu.dto.MenuDto; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -69,7 +69,7 @@ public class MenuServiceImpl implements MenuService { public MenuDto menuJsonToMenuDto(JSONObject json) { MenuDto menuDto = new MenuDto(); menuDto.setMenuId(json.getString("menu_id")); - menuDto.setType(json.getInteger("type")); + menuDto.setType(json.getString("type")); menuDto.setPermission(json.getString("permission")); menuDto.setTitle(json.getString("title")); menuDto.setMenuSort(json.getInteger("menu_sort")); @@ -329,7 +329,7 @@ public class MenuServiceImpl implements MenuService { if (!menuDTO.getIFrame()) { if (ObjectUtil.isEmpty(menuDTO.getPid())) { menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent()) ? "Layout" : menuDTO.getComponent()); - } else if (!ObjectUtil.isEmpty(menuDTO.getPid()) && menuDTO.getType() == 0) { + } else if (!ObjectUtil.isEmpty(menuDTO.getPid()) && "0".equals(menuDTO.getType())) { menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent()) ? "ParentView" : menuDTO.getComponent()); } else if (!StrUtil.isEmpty(menuDTO.getComponent())) { diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/menu/SysMenuController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/menu/SysMenuController.java index b7fff1d..0d127d6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/menu/SysMenuController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/menu/SysMenuController.java @@ -3,16 +3,18 @@ package org.nl.system.controller.menu; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaMode; -import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; + import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.nl.common.TableDataInfo; -import org.nl.modules.common.utils.SecurityUtils; +import org.nl.common.domain.query.PageQuery; import org.nl.modules.logging.annotation.Log; -import org.nl.modules.system.service.dto.MenuDto; import org.nl.system.service.menu.ISysMenuService; import org.nl.system.service.menu.dao.SysMenu; -import org.springframework.data.domain.Pageable; +import org.nl.system.service.menu.dto.MenuDto; +import org.nl.system.service.menu.dto.MenuQuery; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; @@ -30,48 +32,32 @@ import java.util.stream.Collectors; * @since 2022-12-15 */ @RestController -@RequestMapping("api/sysMenu") +@RequestMapping("api/menus") @RequiredArgsConstructor public class SysMenuController { - private final ISysMenuService baseService; - - @GetMapping - @ApiOperation("查询菜单") - @SaCheckPermission("menu:list") - public ResponseEntity pageQuery(@RequestParam Map param, Pageable page) throws Exception { - TableDataInfo data = TableDataInfo.build(baseService.queryAll(param)); - return new ResponseEntity<>(data, HttpStatus.OK); - - } - - @ApiOperation("返回全部的菜单") - @GetMapping(value = "/lazy")//新增时候点击 - @SaCheckPermission(value = {"menu:list", "roles:list"}, mode = SaMode.AND) - public ResponseEntity query(@RequestParam String pid) { - return new ResponseEntity<>(baseService.getMenus(pid), HttpStatus.OK); - } - - @ApiOperation("查询菜单:根据ID获取同级与上级数据") - @PostMapping("/superior") - @SaCheckPermission("menu:list") - public ResponseEntity getSuperior(@RequestBody List ids) { - Set menuDtos = new LinkedHashSet<>(); - if (CollectionUtil.isNotEmpty(ids)) { - for (String id : ids) { - MenuDto menuDto = baseService.doToDto(baseService.findById(id)); - menuDtos.addAll(baseService.getSuperior(menuDto, new ArrayList<>())); - } - return new ResponseEntity<>(baseService.buildTree(new ArrayList<>(menuDtos)), HttpStatus.OK); - } - return new ResponseEntity<>(baseService.getMenus(null), HttpStatus.OK); - } + private final ISysMenuService iSysMenuService; @GetMapping(value = "/build") @ApiOperation("根据用户获取菜单") - public ResponseEntity buildMenus() { - List menuDtoList = baseService.findByUser(SecurityUtils.getCurrentUserId()); - List menuDtos = baseService.buildTree(menuDtoList); - return new ResponseEntity<>(baseService.buildMenus(menuDtos), HttpStatus.OK); + public ResponseEntity buildMenus(@Validated String systemType) { + //校验系统表是否存在该系统类型 + return new ResponseEntity(iSysMenuService.buildMenus(systemType),HttpStatus.OK); + } + + @ApiOperation("返回全部的菜单") + @GetMapping(value = "/lazy") + @SaCheckPermission(value = {"menu:list", "roles:list"}, mode = SaMode.AND) + public ResponseEntity query(@RequestParam String pid) { + return new ResponseEntity<>(iSysMenuService.getMenus(pid), HttpStatus.OK); + } + @ApiOperation("获取菜单列表") + @PostMapping(value = "/getMenusByRole") + @SaCheckPermission(value = {"menu:list", "roles:list"}, mode = SaMode.AND) + public ResponseEntity getMenusByRole(@RequestBody JSONObject json) { + String role_id = json.getString("role_id"); + String system_type = json.getString("system_type"); + String category = json.getString("category"); + return new ResponseEntity<>(iSysMenuService.getMenusByRole(role_id, system_type, category), HttpStatus.OK); } @ApiOperation("根据菜单ID返回所有子节点ID,包含自身ID") @@ -79,19 +65,40 @@ public class SysMenuController { @SaCheckPermission(value = {"menu:list", "roles:list"}, mode = SaMode.AND) public ResponseEntity child(@RequestParam String id) { Set menuSet = new HashSet<>(); - List menuList = baseService.getMenus(id); - menuSet.add(baseService.findById(id)); - menuSet = baseService.getChildMenus(menuList, menuSet); + List menuList = iSysMenuService.getMenus(id); + menuSet.add(iSysMenuService.findById(id)); + menuSet = iSysMenuService.getChildMenus(menuList, menuSet); Set ids = menuSet.stream().map(SysMenu::getMenuId).collect(Collectors.toSet()); return new ResponseEntity<>(ids, HttpStatus.OK); } + @GetMapping + @ApiOperation("查询菜单") + @SaCheckPermission("menu:list") + public ResponseEntity pageQuery(@RequestBody MenuQuery query, PageQuery page) throws Exception { + List list = iSysMenuService.query(query, page); + return new ResponseEntity<>(TableDataInfo.build(list), HttpStatus.OK); + } + + @ApiOperation("查询菜单:根据ID获取同级与上级数据") + @PostMapping("/superior") + @SaCheckPermission("menu:list") + public ResponseEntity getSuperior(@RequestBody JSONObject param) { + Set menuDtos = new LinkedHashSet<>(); + String id=param.getString("ids"); + if (StrUtil.isNotEmpty(id)) { + menuDtos.addAll(iSysMenuService.getSuperior(iSysMenuService.doToDto(iSysMenuService.findById(id)), new ArrayList<>())); + return new ResponseEntity<>(iSysMenuService.buildTree(new ArrayList<>(menuDtos)), HttpStatus.OK); + } + return new ResponseEntity<>(iSysMenuService.getMenus(null), HttpStatus.OK); + } + @Log("新增菜单") @ApiOperation("新增菜单") @PostMapping @SaCheckPermission("menu:add") - public ResponseEntity create(@Validated @RequestBody SysMenu resources) { - baseService.create(resources); + public ResponseEntity create(@Validated @RequestBody SysMenu form) { + iSysMenuService.create(form); return new ResponseEntity<>(HttpStatus.CREATED); } @@ -99,8 +106,8 @@ public class SysMenuController { @ApiOperation("修改菜单") @PutMapping @SaCheckPermission("menu:edit") - public ResponseEntity update(@RequestBody SysMenu resources) { - baseService.update(resources); + public ResponseEntity update( @RequestBody SysMenu form) { + iSysMenuService.update(form); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @@ -111,12 +118,11 @@ public class SysMenuController { public ResponseEntity delete(@RequestBody Set ids) { Set menuSet = new HashSet<>(); for (String id : ids) { - //获取所有子节点 - List menuList = baseService.getMenus(id); - menuSet.add(baseService.findById(id)); - menuSet = baseService.getChildMenus(menuList, menuSet); + List menuList = iSysMenuService.getMenus(id); + menuSet.add(iSysMenuService.findById(id)); + menuSet = iSysMenuService.getChildMenus(menuList, menuSet); } - baseService.delete(menuSet); + iSysMenuService.delete(menuSet); return new ResponseEntity<>(HttpStatus.OK); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java index 2cf7b86..cb3e286 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java @@ -1,9 +1,11 @@ package org.nl.system.service.menu; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; import org.nl.modules.system.domain.vo.MenuVo; -import org.nl.modules.system.service.dto.MenuDto; import org.nl.system.service.menu.dao.SysMenu; +import org.nl.system.service.menu.dto.MenuDto; +import org.nl.system.service.menu.dto.MenuQuery; import java.util.List; import java.util.Map; @@ -26,6 +28,14 @@ public interface ISysMenuService extends IService { */ List queryAll(Map param); + /** + * 条件查询 + * @param query + * @param page + * @return + */ + List query(MenuQuery query, PageQuery page); + /** * 根据ID获取同级与上级数据 * @@ -98,6 +108,9 @@ public interface ISysMenuService extends IService { * @return / */ List buildMenus(List menuDtos); + List buildMenus(List menuDtos,String pid); + + List buildMenus(String systemType); /** * 构建菜单树 @@ -121,4 +134,6 @@ public interface ISysMenuService extends IService { */ MenuDto doToDto(SysMenu sysMenu); + List getMenusByRole(String roleId, String systemType, String category); + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.java index 3115aa5..c528447 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.java @@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Select; import org.nl.system.service.menu.dao.SysMenu; import java.util.List; +import java.util.Map; /** *

@@ -31,6 +32,14 @@ public interface SysMenuMapper extends BaseMapper { */ List findByUser(@Param("userId") String userId); + /** + * 获取系统菜单 + * @param userId + * @param systemType + * @return + */ + List findSystemMenu(@Param("user") String userId,@Param("systemType") String systemType); + /** * 根据用户标识获取权限列表 * @@ -46,4 +55,6 @@ public interface SysMenuMapper extends BaseMapper { */ @Delete(value = "delete from sys_roles_menus where menu_id = #{menuId}") void untiedMenu(String menuId); + + List getMenusByRole(@Param("systemType") String systemType, @Param("category")String category); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.xml index 35fc707..9e85a2e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.xml @@ -51,4 +51,38 @@ AND permission IS NOT NULL AND permission != '' + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/dto/MenuDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuDto.java similarity index 91% rename from nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/dto/MenuDto.java rename to nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuDto.java index fe79b0a..b3b0807 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/dto/MenuDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuDto.java @@ -13,29 +13,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.nl.modules.system.service.dto; +package org.nl.system.service.menu.dto; -import lombok.Getter; -import lombok.Setter; +import lombok.Data; import org.nl.modules.common.base.BaseDTO; import java.io.Serializable; import java.util.List; import java.util.Objects; -/** - * @author Zheng Jie - * @date 2018-12-17 - */ -@Getter -@Setter +@Data public class MenuDto extends BaseDTO implements Serializable { private String menuId; private List children; - private Integer type; + private String type; private String permission; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuQuery.java new file mode 100644 index 0000000..9400e63 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuQuery.java @@ -0,0 +1,22 @@ +package org.nl.system.service.menu.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.common.domain.query.QParam; +import org.nl.common.enums.QueryTEnum; +import org.nl.system.service.dict.dao.Dict; +import org.nl.system.service.menu.dao.SysMenu; + +/** + * @Author: lyd + * @Description: + * @Date: 2022/12/15 + */ +@Data +public class MenuQuery extends BaseQuery { + private String pid = " "; + @Override + public void paramMapping() { + this.doP.put("pid", QParam.builder().k(new String[]{"pid"}).type(QueryTEnum.OREQ).build()); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java index 93422cf..a029afd 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java @@ -4,16 +4,24 @@ import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.domain.query.PageQuery; import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.domain.vo.MenuMetaVo; import org.nl.modules.system.domain.vo.MenuVo; -import org.nl.modules.system.service.dto.MenuDto; +import org.nl.modules.system.util.CopyUtil; import org.nl.modules.tools.IdUtil; +import org.nl.system.service.dict.dao.Dict; +import org.nl.system.service.dict.dao.mapper.SysDictMapper; +import org.nl.system.service.menu.dto.MenuDto; import org.nl.system.service.menu.ISysMenuService; import org.nl.system.service.menu.dao.SysMenu; +import org.nl.system.service.menu.dto.MenuQuery; import org.nl.system.service.menu.dao.mapper.SysMenuMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,6 +42,7 @@ import java.util.stream.Collectors; @Slf4j public class SysMenuServiceImpl extends ServiceImpl implements ISysMenuService { private final SysMenuMapper baseMapper; + private final SysDictMapper sysDictMapper; @Override public List queryAll(Map param) { @@ -42,6 +51,14 @@ public class SysMenuServiceImpl extends ServiceImpl impl return getMenus(pid).stream().map(menu -> this.doToDto(menu)).collect(Collectors.toList()); } + + @Override + public List query(MenuQuery query, PageQuery page) { + Page menuPage = this.page(page.build(), query.build()); + List collect = menuPage.getRecords().stream().map(menu -> this.doToDto(menu)).collect(Collectors.toList()); + return collect; + } + @Override public List getSuperior(MenuDto menuDto, List menus) { if (menuDto.getPid() == null) { @@ -83,7 +100,6 @@ public class SysMenuServiceImpl extends ServiceImpl impl @Transactional(rollbackFor = Exception.class) @Override public void create(SysMenu resources) { - if (resources.getPid().equals("0")) { resources.setPid(null); } @@ -185,7 +201,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl if (!menuDTO.getIFrame()) { if (ObjectUtil.isEmpty(menuDTO.getPid())) { menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent()) ? "Layout" : menuDTO.getComponent()); - } else if (!ObjectUtil.isEmpty(menuDTO.getPid()) && menuDTO.getType() == 0) { + } else if (!ObjectUtil.isEmpty(menuDTO.getPid()) && "0".equals(menuDTO.getType())) { menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent()) ? "ParentView" : menuDTO.getComponent()); } else if (!StrUtil.isEmpty(menuDTO.getComponent())) { @@ -262,8 +278,11 @@ public class SysMenuServiceImpl extends ServiceImpl impl public MenuDto doToDto(SysMenu entity) { MenuDto menuDto = new MenuDto(); + if (ObjectUtil.isEmpty(entity)){ + return menuDto; + } menuDto.setMenuId(entity.getMenuId()); - menuDto.setType(Integer.parseInt(entity.getType())); + menuDto.setType(entity.getType()); menuDto.setPermission(entity.getPermission()); menuDto.setTitle(entity.getTitle()); menuDto.setMenuSort(entity.getMenuSort()); @@ -289,4 +308,77 @@ public class SysMenuServiceImpl extends ServiceImpl impl return menuDto; } + @Override + public List buildMenus(String systemType) { + Dict dict = sysDictMapper.selectOne(new QueryWrapper().eq("code", "system_type").eq("value", systemType)); + if (dict == null || StringUtils.isEmpty(dict.getPara1())){ + throw new BadRequestException("获取对应的系统菜单不存在"); + } + String pid = dict.getPara1(); + List menuDtoList = baseMapper.findSystemMenu(SecurityUtils.getCurrentUserId(),systemType); + //移除系统级菜单 + menuDtoList.removeIf(a->a.getMenuId().equals(pid)); + List menuDtos = this.buildTree(CopyUtil.copyList(menuDtoList, MenuDto.class)); + return this.buildMenus(menuDtos,pid); + } + + @Override + public List buildMenus(List menuDtos, String pid) { + List list = new LinkedList<>(); + //剔除系统级菜单 + menuDtos.forEach(menuDTO -> { + if (menuDTO != null) { + List menuDtoList = menuDTO.getChildren(); + MenuVo menuVo = new MenuVo(); + menuVo.setName(ObjectUtil.isNotEmpty(menuDTO.getComponentName()) ? menuDTO.getComponentName() : menuDTO.getTitle()); + // 一级目录需要加斜杠,不然会报警告 + menuVo.setPath(pid.equals(menuDTO.getPid())? "/" + menuDTO.getPath() : menuDTO.getPath()); + menuVo.setHidden(menuDTO.getHidden()); + // 如果不是外链 + if (!menuDTO.getIFrame()) { + if (pid.equals(menuDTO.getPid())) { + menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent()) ? "Layout" : menuDTO.getComponent()); + } else if (!pid.equals(menuDTO.getPid()) && "0".equals(menuDTO.getType())) { + menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent()) ? "ParentView" : menuDTO.getComponent()); + + } else if (!StrUtil.isEmpty(menuDTO.getComponent())) { + menuVo.setComponent(menuDTO.getComponent()); + } + } + menuVo.setMeta(new MenuMetaVo(menuDTO.getTitle(), menuDTO.getIcon(), !menuDTO.getCache())); + if (menuDtoList != null && menuDtoList.size() != 0) { + menuVo.setAlwaysShow(true); + menuVo.setRedirect("noredirect"); + menuVo.setChildren(buildMenus(menuDtoList,pid)); + // 处理是一级菜单并且没有子菜单的情况 + } else if (StrUtil.isEmpty(menuDTO.getPid())) { + MenuVo menuVo1 = new MenuVo(); + menuVo1.setMeta(menuVo.getMeta()); + // 非外链 + if (!menuDTO.getIFrame()) { + menuVo1.setPath("index"); + menuVo1.setName(menuVo.getName()); + menuVo1.setComponent(menuVo.getComponent()); + } else { + menuVo1.setPath(menuDTO.getPath()); + } + menuVo.setName(null); + menuVo.setMeta(null); + menuVo.setComponent("Layout"); + List list1 = new ArrayList<>(); + list1.add(menuVo1); + menuVo.setChildren(list1); + } + list.add(menuVo); + } + } + ); + return list; + } + + @Override + public List getMenusByRole(String roleId, String systemType, String category) { + baseMapper.getMenusByRole(systemType,category); + return null; + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/impl/SysRoleServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/impl/SysRoleServiceImpl.java index 3bbb60b..f220440 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/impl/SysRoleServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/role/impl/SysRoleServiceImpl.java @@ -7,7 +7,6 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/secutiry/impl/OnlineUserService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/secutiry/impl/OnlineUserService.java index 8034d82..06d4d48 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/secutiry/impl/OnlineUserService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/secutiry/impl/OnlineUserService.java @@ -227,8 +227,7 @@ public class OnlineUserService { // 校验数据库 // 根据用户名查询,在比对密码 SysUser userInfo = sysUserService.getOne(new QueryWrapper().eq("username",authUser.getUsername())); - String dbPassword = userInfo.getPassword(); - if (!dbPassword.equals(SaSecureUtil.md5BySalt(password, "salt"))) { // 这里需要密码加密 + if (userInfo == null||!userInfo.getPassword().equals(SaSecureUtil.md5BySalt(password, "salt"))) { // 这里需要密码加密 throw new BadRequestException("账号或密码错误"); } diff --git a/nladmin-ui/src/api/system/menu.js b/nladmin-ui/src/api/system/menu.js index 4e41436..7050f81 100644 --- a/nladmin-ui/src/api/system/menu.js +++ b/nladmin-ui/src/api/system/menu.js @@ -41,7 +41,7 @@ export function getChild(id) { export function buildMenus(data) { return request({ - url: 'api/sysMenu/build?system_type=' + data, + url: 'api/sysMenu/build?systemType=' + data, method: 'get' }) } diff --git a/nladmin-ui/src/router/index.js b/nladmin-ui/src/router/index.js index 69a4be5..b3968c2 100644 --- a/nladmin-ui/src/router/index.js +++ b/nladmin-ui/src/router/index.js @@ -52,7 +52,7 @@ router.beforeEach((to, from, next) => { }) export const loadMenus = (next, to) => { - buildMenus().then(res => { + buildMenus(1).then(res => { const sdata = JSON.parse(JSON.stringify(res)) const rdata = JSON.parse(JSON.stringify(res)) const sidebarRoutes = filterAsyncRouter(sdata) diff --git a/nladmin-ui/src/views/system/dept/index.vue b/nladmin-ui/src/views/system/dept/index.vue index ff46232..04bd219 100644 --- a/nladmin-ui/src/views/system/dept/index.vue +++ b/nladmin-ui/src/views/system/dept/index.vue @@ -66,6 +66,8 @@ v-model="form.isUsed" active-color="#409EFF" inactive-color="#F56C6C" + active-value = 'true' + inactive-valu='false' /> diff --git a/nladmin-ui/src/views/system/dict/dictDetail.js b/nladmin-ui/src/views/system/dict/dictDetail.js index 9dd8869..b9f5ea3 100644 --- a/nladmin-ui/src/views/system/dict/dictDetail.js +++ b/nladmin-ui/src/views/system/dict/dictDetail.js @@ -1,8 +1,8 @@ import request from '@/utils/request' -export function get(dictName) { +export function get(code) { const params = { - dictName, + code, page: 0, size: 9999 } diff --git a/nladmin-ui/src/views/system/menu/dd/index.vue b/nladmin-ui/src/views/system/menu/dd/index.vue new file mode 100644 index 0000000..3150b9e --- /dev/null +++ b/nladmin-ui/src/views/system/menu/dd/index.vue @@ -0,0 +1,304 @@ + + + + + diff --git a/nladmin-ui/src/views/system/menu/index.vue b/nladmin-ui/src/views/system/menu/index.vue index 3150b9e..579e711 100644 --- a/nladmin-ui/src/views/system/menu/index.vue +++ b/nladmin-ui/src/views/system/menu/index.vue @@ -9,13 +9,25 @@ clearable size="mini" placeholder="模糊搜索" - style="width: 200px;" + style="width: 200px;margin-bottom: 10px" class="filter-item" - @keyup.enter.native="crud.toQuery" + @keyup.enter.native="queryBlurry" /> + + + - + - - + + @@ -69,8 +81,8 @@ - - + + @@ -84,7 +96,7 @@ - + @@ -98,10 +110,10 @@ style="width: 190px;" /> - + - + @@ -130,15 +142,19 @@ :auto-load-root-options="false" :data="crud.data" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" - row-key="menuId" + row-key="menu_id" @select="crud.selectChange" @select-all="crud.selectAllChange" @selection-change="crud.selectionChangeHandler" > - - + + + +