From 63edd961b995bf98d1e1acc25120947429d44bc5 Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Mon, 26 Dec 2022 15:17:21 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=88=97=E8=A1=A8=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=88=86=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/common/enums/QueryTEnum.java | 3 +- .../controller/menu/SysMenuController.java | 2 +- .../system/service/menu/ISysMenuService.java | 2 +- .../nl/system/service/menu/dao/SysMenu.java | 10 ++-- .../menu/dao/mapper/SysMenuMapper.java | 2 + .../service/menu/dao/mapper/SysMenuMapper.xml | 13 +++++ .../nl/system/service/menu/dto/MenuDto.java | 1 + .../nl/system/service/menu/dto/MenuQuery.java | 4 +- .../service/menu/impl/SysMenuServiceImpl.java | 58 ++++++++++++------- .../service/user/dao/mapper/SysUserMapper.xml | 3 +- .../user/impl/ISysUserServiceImpl.java | 12 ++-- nladmin-ui/src/views/system/menu/index.vue | 8 +-- nladmin-ui/src/views/system/user/index.vue | 9 ++- 13 files changed, 87 insertions(+), 40 deletions(-) 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 5783ab0..5a56212 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 @@ -2,6 +2,7 @@ package org.nl.common.enums; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.Getter; +import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.query.LConsumer; import java.util.Collection; @@ -20,7 +21,7 @@ public enum QueryTEnum { 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); }), - OREQ((q, k, v) -> { if (v == null){ q.isNull(k[0]); }else { q.eq(k[0],v); } }); + OREQ((q, k, v) -> { if (StringUtils.isBlank((String)v)){ 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/system/controller/menu/SysMenuController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/menu/SysMenuController.java index 719e836..6736be7 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 @@ -75,7 +75,7 @@ public class SysMenuController { @GetMapping @ApiOperation("查询菜单") @SaCheckPermission("menu:list") - public ResponseEntity pageQuery(@RequestParam Map query, PageQuery page) throws Exception { + public ResponseEntity pageQuery(MenuQuery query, PageQuery page) throws Exception { List list = iSysMenuService.query(query, page); return new ResponseEntity<>(TableDataInfo.build(list), 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 7bcb8a0..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 @@ -34,7 +34,7 @@ public interface ISysMenuService extends IService { * @param page * @return */ - List query(Map query, PageQuery page); + List query(MenuQuery query, PageQuery page); /** * 根据ID获取同级与上级数据 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/SysMenu.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/SysMenu.java index 31b7717..b5eabc5 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/SysMenu.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/SysMenu.java @@ -1,12 +1,11 @@ package org.nl.system.service.menu.dao; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; +import java.util.Date; /** *

@@ -32,6 +31,7 @@ public class SysMenu implements Serializable { /** * 上级菜单ID */ + @TableField(updateStrategy = FieldStrategy.IGNORED) private String pid; /** @@ -117,7 +117,7 @@ public class SysMenu implements Serializable { /** * 创建时间 */ - private String createTime; + private Date createTime; /** * 修改人标识 @@ -132,7 +132,7 @@ public class SysMenu implements Serializable { /** * 修改时间 */ - private String updateTime; + private Date updateTime; } 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 c528447..7964cb9 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 @@ -57,4 +57,6 @@ public interface SysMenuMapper extends BaseMapper { void untiedMenu(String menuId); List getMenusByRole(@Param("systemType") String systemType, @Param("category")String category); + + String findAllChild(String pid); } 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 9e85a2e..7787999 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 @@ -85,4 +85,17 @@ and category = #{category} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuDto.java index f270f4d..3ae1c29 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dto/MenuDto.java @@ -48,6 +48,7 @@ public class MenuDto extends BaseDTO implements Serializable { private Boolean iframe; + private String systemType; private Boolean cache; 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 index 9400e63..d5310e3 100644 --- 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 @@ -14,9 +14,11 @@ import org.nl.system.service.menu.dao.SysMenu; */ @Data public class MenuQuery extends BaseQuery { - private String pid = " "; + private String pid = ""; + private String systemType; @Override public void paramMapping() { this.doP.put("pid", QParam.builder().k(new String[]{"pid"}).type(QueryTEnum.OREQ).build()); + this.doP.put("blurry", QParam.builder().k(new String[]{"title"}).type(QueryTEnum.LK).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 96e1f54..732ddd1 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,6 +4,7 @@ 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.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; @@ -24,8 +25,10 @@ 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.dao.mapper.SysMenuMapper; +import org.nl.system.service.menu.dto.MenuQuery; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.*; import java.util.stream.Collectors; @@ -55,15 +58,11 @@ public class SysMenuServiceImpl extends ServiceImpl impl @Override - public List query(Map query, PageQuery page) { - String pid = MapUtil.getStr(query, "pid"); - QueryWrapper wrapper = new QueryWrapper<>(); - if (StringUtils.isEmpty(pid)){ - wrapper.isNull("pid"); - }else { - wrapper.eq("pid",pid); + public List query(MenuQuery query, PageQuery page) { + if (StringUtils.isNotEmpty(query.getBlurry())){ + query.setPid(null); } - Page menuPage = this.page(page.build(), wrapper); + Page menuPage = this.page(page.build(), query.build()); List collect = menuPage.getRecords().stream().map(menu -> this.doToDto(menu)).collect(Collectors.toList()); return collect; } @@ -121,12 +120,13 @@ public class SysMenuServiceImpl extends ServiceImpl impl resources.setPid(null); addSystemTypeDict(resources); } - updateRootSystemType(resources); + baseMapper.insert(resources); // 计算子节点数目 resources.setSubCount(0); // 更新父节点菜单数目 updateSubCnt(resources.getPid()); + updateRootSystemType(resources); } private void addSystemTypeDict(SysMenu resources) { @@ -149,14 +149,14 @@ public class SysMenuServiceImpl extends ServiceImpl impl } SysMenu rootMenu = this.findById(rootMenuId); sysMenu.setSystemType(rootMenu.getSystemType()); + this.updateById(sysMenu); } private String findRootMenuId(String menuId) { SysMenu sysMenu = this.findById(menuId); - String pid = sysMenu.getPid(); - if (StrUtil.isEmpty(pid)) { + if (StrUtil.isEmpty(sysMenu.getPid())) { return menuId; } else { - return findRootMenuId(pid); + return findRootMenuId(sysMenu.getPid()); } } @@ -169,35 +169,46 @@ public class SysMenuServiceImpl extends ServiceImpl impl baseMapper.untiedMenu(menu.getMenuId()); baseMapper.deleteById(menu.getMenuId()); String pid = menu.getPid(); - if (StringUtils.isNotEmpty(pid)){ + if (StringUtils.isEmpty(pid)){ pids.add(pid); } updateSubCnt(pid); } - sysDictMapper.delete(new QueryWrapper().in("para1", pids).eq("code", DictConstantPool.DICT_SYS_CODE)); + if (!CollectionUtils.isEmpty(pids)){ + sysDictMapper.delete(new QueryWrapper().in("para1", pids).eq("code", DictConstantPool.DICT_SYS_CODE)); + } } @Transactional(rollbackFor = Exception.class) @Override public void update(SysMenu resources) { - if (resources.getMenuId().equals(resources.getPid())) { - throw new BadRequestException("上级不能为自己"); + String menuId = resources.getMenuId(); + SysMenu menu = baseMapper.selectById(menuId); + List allChildIds = Arrays.asList(baseMapper.findAllChild(menuId).split(",")); + if (allChildIds.contains(resources.getPid())){ + throw new BadRequestException("上级不能为自己或自己的下级"); } - SysMenu menu = baseMapper.selectById(resources.getMenuId()); if (resources.getIframe()) { String http = "http://", https = "https://"; if (!(resources.getPath().toLowerCase().startsWith(http) || resources.getPath().toLowerCase().startsWith(https))) { throw new BadRequestException("外链必须以http://或者https://开头"); } } + if (resources.getPid().equals("0")) { resources.setPid(null); - addSystemTypeDict(resources); + if (StringUtils.isNotEmpty(menu.getPid())){ + addSystemTypeDict(resources); + } + }else { + resources.setSystemType(this.findById(resources.getPid()).getSystemType()); } - - // 记录的父节点ID String oldPid = menu.getPid(); String newPid = resources.getPid(); + // 记录的父节点ID + if (oldPid == null && newPid != null){ + sysDictMapper.delete(new QueryWrapper().eq("para1",menu.getMenuId())); + } menu.setTitle(resources.getTitle()); menu.setComponent(resources.getComponent()); menu.setPath(resources.getPath()); @@ -214,6 +225,11 @@ public class SysMenuServiceImpl extends ServiceImpl impl // 计算父级菜单节点数目 updateSubCnt(oldPid); updateSubCnt(newPid); + //更新SystemType + if (!resources.getSystemType().equals(menu.getSystemType())){ + this.update(new UpdateWrapper().set(DictConstantPool.DICT_SYS_CODE,resources.getSystemType()).in("menu_id",allChildIds)); + } + } /** @@ -338,6 +354,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl menuDto.setMenuSort(entity.getMenuSort()); menuDto.setPath(entity.getPath()); menuDto.setComponent(entity.getComponent()); + menuDto.setSystemType(entity.getSystemType()); menuDto.setPid(entity.getPid()); menuDto.setSubCount(entity.getSubCount()); menuDto.setIframe(entity.getIframe()); @@ -345,6 +362,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl menuDto.setHidden(entity.getHidden()); menuDto.setComponentName(entity.getComponentName()); menuDto.setIcon(entity.getIcon()); + menuDto.setCreateTime(entity.getCreateTime()); //构建前端需要的数据结构树 Integer sub_count = entity.getSubCount(); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dao/mapper/SysUserMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dao/mapper/SysUserMapper.xml index b138d87..c21402a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dao/mapper/SysUserMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dao/mapper/SysUserMapper.xml @@ -67,7 +67,8 @@ left join sys_dept on sys_user_dept.dept_id = sys_dept.dept_id - and sys_dept.dept_id = #{query.deptId} + and + sys_user.user_id in (select user_id from sys_user_dept where dept_id = #{query.deptId}) and sys_user.is_used = #{query.isUsed} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/impl/ISysUserServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/impl/ISysUserServiceImpl.java index 8e3caf0..66a8bbf 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/impl/ISysUserServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/impl/ISysUserServiceImpl.java @@ -35,6 +35,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import java.io.File; +import java.lang.reflect.InvocationTargetException; import java.text.SimpleDateFormat; import java.util.*; import java.util.function.Function; @@ -106,7 +107,6 @@ public class ISysUserServiceImpl extends ServiceImpl imp } @Override - @SneakyThrows @Transactional public void update(Map userDetail) { if(CollectionUtils.isEmpty(userDetail)|| userDetail.get("userId")==null){ @@ -127,7 +127,11 @@ public class ISysUserServiceImpl extends ServiceImpl imp } } }, Date.class); - BeanUtils.populate(sysUser,userDetail); + try { + BeanUtils.populate(sysUser,userDetail); + }catch (Exception ex){ + throw new RuntimeException(); + } sysUser.setUpdateTime(new Date()); sysUser.setUpdateId(SecurityUtils.getCurrentUserId()); this.updateById(sysUser); @@ -135,9 +139,9 @@ public class ISysUserServiceImpl extends ServiceImpl imp deptService.delUserDeptRelation(sysUser.getUserId()); deptService.saveUserDeptRelation(sysUser.getUserId(), (List) userDetail.get("deptIds")); }; - if (userDetail.get("roleIds") !=null){ + if (userDetail.get("rolesIds") !=null){ roleService.delUserRoleRelation(sysUser.getUserId()); - roleService.saveUserRoleRelation(sysUser.getUserId(),(List) userDetail.get("roleIds")); + roleService.saveUserRoleRelation(sysUser.getUserId(),(List) userDetail.get("rolesIds")); } } } diff --git a/nladmin-ui/src/views/system/menu/index.vue b/nladmin-ui/src/views/system/menu/index.vue index 67bacb5..91f85cf 100644 --- a/nladmin-ui/src/views/system/menu/index.vue +++ b/nladmin-ui/src/views/system/menu/index.vue @@ -16,7 +16,7 @@ - + @@ -185,7 +185,7 @@ - + { - crudDept.getDeptTree({ name: node }).then(res => { + var q = {} + // eslint-disable-next-line eqeqeq + if (node != '') { + q = { name: node } + } + crudDept.getDeptTree(q).then(res => { console.log('res', res) if (resolve) { resolve(res.content) @@ -584,6 +589,7 @@ export default { this.query.deptId = data.deptId this.query.needAll = true this.crud.toQuery() + this.query.deptId = null }, // 改变状态 changeEnabled(row) { @@ -803,7 +809,6 @@ export default { } else { user.rolesIds = this.crud.selections.map(item => (item.roleId)) } - debugger crudUser.edit(user).then(res => { this.cancelForm() this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS)