diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java index 9f6083ace..813133888 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java +++ b/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 checkPermDuplication(@RequestParam(name = "id", required = false) String id, @RequestParam(name = "url") String url, @RequestParam(name = "alwaysShow") Boolean alwaysShow) { + Result 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; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java index 8e2a32aef..742207720 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java +++ b/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; /** *

@@ -100,4 +98,13 @@ public interface ISysPermissionService extends IService { * @return */ List queryDepartPermissionList(String departId); + + /** + * 检测地址是否存在(聚合路由的情况下允许使用子菜单路径作为父菜单的路由地址) + * @param id + * @param url + * @param alwaysShow 是否是聚合路由 + * @return + */ + boolean checkPermDuplication(String id, String url,Boolean alwaysShow); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java index b4220f823..d7b91d419 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java +++ b/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; /** *

@@ -277,4 +275,11 @@ public class SysPermissionServiceImpl extends ServiceImpl 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; + } + }