Преглед на файлове

:bug: Fixing a bug. del menu s

冷冷 преди 6 години
родител
ревизия
4d81964bd0

+ 6 - 0
pigx-common/pigx-common-security/pom.xml

@@ -40,6 +40,12 @@
 			<artifactId>pigx-common-core</artifactId>
 			<version>2.0.0</version>
 		</dependency>
+		<!---依赖扩展缓存-->
+		<dependency>
+			<groupId>com.pig4cloud</groupId>
+			<artifactId>pigx-common-cache</artifactId>
+			<version>2.0.0</version>
+		</dependency>
 		<!--安全模块-->
 		<dependency>
 			<groupId>org.springframework.cloud</groupId>

+ 2 - 2
pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/MenuController.java

@@ -128,8 +128,8 @@ public class MenuController {
 	@SysLog("删除菜单")
 	@DeleteMapping("/{id}")
 	@PreAuthorize("@pms.hasPermission('sys_menu_del')")
-	public R removeById(@PathVariable Integer id) {
-		return new R<>(sysMenuService.removeMenuById(id));
+	public R removeById(@PathVariable SysMenu id) {
+		return sysMenuService.removeMenuById(id);
 	}
 
 	/**

+ 2 - 1
pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMenuService.java

@@ -23,6 +23,7 @@ package com.pig4cloud.pigx.admin.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.pig4cloud.pigx.admin.api.entity.SysMenu;
 import com.pig4cloud.pigx.admin.api.vo.MenuVO;
+import com.pig4cloud.pigx.common.core.util.R;
 
 import java.util.List;
 
@@ -49,7 +50,7 @@ public interface SysMenuService extends IService<SysMenu> {
 	 * @param id 菜单ID
 	 * @return 成功、失败
 	 */
-	Boolean removeMenuById(Integer id);
+	R removeMenuById(SysMenu id);
 
 	/**
 	 * 更新菜单信息

+ 16 - 12
pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java

@@ -19,6 +19,7 @@
 
 package com.pig4cloud.pigx.admin.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pig4cloud.pigx.admin.api.entity.SysMenu;
@@ -27,6 +28,8 @@ import com.pig4cloud.pigx.admin.api.vo.MenuVO;
 import com.pig4cloud.pigx.admin.mapper.SysMenuMapper;
 import com.pig4cloud.pigx.admin.mapper.SysRoleMenuMapper;
 import com.pig4cloud.pigx.admin.service.SysMenuService;
+import com.pig4cloud.pigx.common.core.constant.CommonConstants;
+import com.pig4cloud.pigx.common.core.util.R;
 import lombok.AllArgsConstructor;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
@@ -34,7 +37,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -58,20 +60,22 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	@CacheEvict(value = "menu_details", allEntries = true)
-	public Boolean removeMenuById(Integer id) {
+	public R removeMenuById(SysMenu id) {
 		// 查询父节点为当前节点的节点
-		List<Integer> menuIdList = this.list(Wrappers.<SysMenu>query()
-			.lambda().eq(SysMenu::getParentId, id))
-			.stream().map(SysMenu::getMenuId)
-			.collect(Collectors.toList());
+		List<SysMenu> menuList = this.list(Wrappers.<SysMenu>query()
+				.lambda().eq(SysMenu::getParentId, id));
+		if (CollUtil.isNotEmpty(menuList)) {
+			return R.builder()
+					.code(CommonConstants.FAIL)
+					.msg("菜单含有下级不能删除").build();
+		}
+
+		sysRoleMenuMapper
+				.delete(Wrappers.<SysRoleMenu>query()
+						.lambda().eq(SysRoleMenu::getMenuId, id));
 
-		//删除关联ROLE_MENU 数据
-		menuIdList.add(id);
-		menuIdList.forEach(menu -> sysRoleMenuMapper
-			.delete(Wrappers.<SysRoleMenu>query()
-				.lambda().eq(SysRoleMenu::getMenuId, menu)));
 		//删除当前菜单及其子菜单
-		return this.removeByIds(menuIdList);
+		return new R(this.removeById(id));
 	}
 
 	@Override