|
@@ -2,6 +2,7 @@ package cn.newfeifan.mall.module.system.service.permission;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
|
|
|
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
import cn.newfeifan.mall.module.system.controller.admin.permission.vo.menu.MenuSaveVO;
|
|
|
import cn.newfeifan.mall.module.system.controller.admin.permission.vo.menu.MenuListReqVO;
|
|
|
import cn.newfeifan.mall.module.system.dal.dataobject.permission.MenuDO;
|
|
@@ -9,6 +10,7 @@ import cn.newfeifan.mall.module.system.dal.mysql.permission.MenuMapper;
|
|
|
import cn.newfeifan.mall.module.system.dal.redis.RedisKeyConstants;
|
|
|
import cn.newfeifan.mall.module.system.enums.permission.MenuTypeEnum;
|
|
|
import cn.newfeifan.mall.module.system.service.tenant.TenantService;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.google.common.annotations.VisibleForTesting;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.cache.annotation.CacheEvict;
|
|
@@ -48,9 +50,9 @@ public class MenuServiceImpl implements MenuService {
|
|
|
condition = "#createReqVO.permission != null")
|
|
|
public Long createMenu(MenuSaveVO createReqVO) {
|
|
|
// 校验父菜单存在
|
|
|
- validateParentMenu(createReqVO.getParentId(), null);
|
|
|
+ validateParentMenu(createReqVO.getParentId(), null, createReqVO.getCategoryId());
|
|
|
// 校验菜单(自己)
|
|
|
- validateMenu(createReqVO.getParentId(), createReqVO.getName(), null);
|
|
|
+ validateMenu(createReqVO.getCategoryId(),createReqVO.getParentId(), createReqVO.getName(), null);
|
|
|
|
|
|
// 插入数据库
|
|
|
MenuDO menu = BeanUtils.toBean(createReqVO, MenuDO.class);
|
|
@@ -69,9 +71,9 @@ public class MenuServiceImpl implements MenuService {
|
|
|
throw exception(MENU_NOT_EXISTS);
|
|
|
}
|
|
|
// 校验父菜单存在
|
|
|
- validateParentMenu(updateReqVO.getParentId(), updateReqVO.getId());
|
|
|
+ validateParentMenu(updateReqVO.getParentId(), updateReqVO.getId(),updateReqVO.getCategoryId());
|
|
|
// 校验菜单(自己)
|
|
|
- validateMenu(updateReqVO.getParentId(), updateReqVO.getName(), updateReqVO.getId());
|
|
|
+ validateMenu(updateReqVO.getCategoryId(),updateReqVO.getParentId(), updateReqVO.getName(), updateReqVO.getId());
|
|
|
|
|
|
// 更新到数据库
|
|
|
MenuDO updateObj = BeanUtils.toBean(updateReqVO, MenuDO.class);
|
|
@@ -140,11 +142,12 @@ public class MenuServiceImpl implements MenuService {
|
|
|
* 2. 父菜单不存在
|
|
|
* 3. 父菜单必须是 {@link MenuTypeEnum#MENU} 菜单类型
|
|
|
*
|
|
|
- * @param parentId 父菜单编号
|
|
|
- * @param childId 当前菜单编号
|
|
|
+ * @param parentId 父菜单编号
|
|
|
+ * @param childId 当前菜单编号
|
|
|
+ * @param categoryId
|
|
|
*/
|
|
|
@VisibleForTesting
|
|
|
- void validateParentMenu(Long parentId, Long childId) {
|
|
|
+ void validateParentMenu(Long parentId, Long childId, Long categoryId) {
|
|
|
if (parentId == null || ID_ROOT.equals(parentId)) {
|
|
|
return;
|
|
|
}
|
|
@@ -152,7 +155,9 @@ public class MenuServiceImpl implements MenuService {
|
|
|
if (parentId.equals(childId)) {
|
|
|
throw exception(MENU_PARENT_ERROR);
|
|
|
}
|
|
|
- MenuDO menu = menuMapper.selectById(parentId);
|
|
|
+// MenuDO menu = menuMapper.selectById(parentId);
|
|
|
+ MenuDO menu = menuMapper.selectOne(new LambdaQueryWrapperX<MenuDO>().eqIfPresent(MenuDO::getParentId,parentId)
|
|
|
+ .eqIfPresent(MenuDO::getCategoryId,categoryId));
|
|
|
// 父菜单不存在
|
|
|
if (menu == null) {
|
|
|
throw exception(MENU_PARENT_NOT_EXISTS);
|
|
@@ -174,8 +179,8 @@ public class MenuServiceImpl implements MenuService {
|
|
|
* @param id 菜单编号
|
|
|
*/
|
|
|
@VisibleForTesting
|
|
|
- void validateMenu(Long parentId, String name, Long id) {
|
|
|
- MenuDO menu = menuMapper.selectByParentIdAndName(parentId, name);
|
|
|
+ void validateMenu(Long category,Long parentId, String name, Long id) {
|
|
|
+ MenuDO menu = menuMapper.selectByParentIdAndName(category,parentId, name);
|
|
|
if (menu == null) {
|
|
|
return;
|
|
|
}
|