Parcourir la source

vue3版,配置聚合路由的地址时,报系统已存在该值的错误

zhangdaiscott il y a 2 ans
Parent
commit
12991c83cb

+ 33 - 5
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java

@@ -1,18 +1,16 @@
 package org.jeecg.modules.system.controller;
 
-import cn.hutool.core.util.ObjectUtil;
 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 lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authz.annotation.RequiresRoles;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.constant.SymbolConstant;
-import org.jeecg.common.constant.enums.RoleIndexConfigEnum;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.Md5Util;
 import org.jeecg.common.util.oConvertUtils;
@@ -393,6 +391,28 @@ public class SysPermissionController {
 		return result;
 	}
 
+	/**
+	 * 检测菜单路径是否存在
+	 * @param id
+	 * @param url
+	 * @return
+	 */
+	@RequestMapping(value = "/checkPermDuplication", method = RequestMethod.GET)
+	public Result<String> checkPermDuplication(@RequestParam(name = "id", required = false) String id, @RequestParam(name = "url") String url, @RequestParam(name = "alwaysShow") Boolean alwaysShow) {
+		Result<String> result = new Result<>();
+		try {
+			boolean check=sysPermissionService.checkPermDuplication(id,url,alwaysShow);
+			if(check){
+				return Result.ok("该值可用!");
+			}
+			return Result.error("该值不可用,系统中已存在!");
+		} catch (Exception e) {
+			log.error(e.getMessage(), e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+
 	/**
 	  * 删除菜单
 	 * @param id
@@ -425,13 +445,21 @@ public class SysPermissionController {
             String[] arr = ids.split(",");
 			for (String id : arr) {
 				if (oConvertUtils.isNotEmpty(id)) {
-					sysPermissionService.deletePermission(id);
+					try {
+						sysPermissionService.deletePermission(id);
+					} catch (JeecgBootException e) {
+						if(e.getMessage()!=null && e.getMessage().contains("未找到菜单信息")){
+							log.warn(e.getMessage());
+						}else{
+							throw e;
+						}
+					}
 				}
 			}
 			result.success("删除成功!");
 		} catch (Exception e) {
 			log.error(e.getMessage(), e);
-			result.error500("删除成功!");
+			result.error500("删除失败!");
 		}
 		return result;
 	}

+ 11 - 4
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java

@@ -1,13 +1,11 @@
 package org.jeecg.modules.system.service;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.modules.system.entity.SysPermission;
 import org.jeecg.modules.system.model.TreeModel;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
 
 /**
  * <p>
@@ -100,4 +98,13 @@ public interface ISysPermissionService extends IService<SysPermission> {
 	 * @return
 	 */
 	List<SysPermission> queryDepartPermissionList(String departId);
+
+	/**
+	 * 检测地址是否存在(聚合路由的情况下允许使用子菜单路径作为父菜单的路由地址)
+	 * @param id
+	 * @param url
+	 * @param alwaysShow 是否是聚合路由
+	 * @return
+	 */
+	 boolean checkPermDuplication(String id, String url,Boolean alwaysShow);
 }

+ 15 - 10
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java

@@ -1,12 +1,8 @@
 package org.jeecg.modules.system.service.impl;
 
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Resource;
-
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.common.constant.CacheConstant;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
@@ -25,9 +21,11 @@ import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -277,4 +275,11 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S
 		return sysPermissionMapper.queryDepartPermissionList(departId);
 	}
 
+	@Override
+	public boolean checkPermDuplication(String id, String url,Boolean alwaysShow) {
+		QueryWrapper<SysPermission> qw=new QueryWrapper();
+		qw.lambda().eq(true, SysPermission::getUrl,url).ne(oConvertUtils.isNotEmpty(id), SysPermission::getId,id).eq(true, SysPermission::isAlwaysShow,alwaysShow);
+		return count(qw)==0;
+	}
+
 }