Просмотр исходного кода

:zap: 菜单提交增加重名重号校验

smallchill 5 лет назад
Родитель
Сommit
e059dde16a

+ 18 - 0
src/main/java/org/springblade/modules/system/service/impl/MenuServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.modules.system.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
@@ -62,6 +63,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
 	private final IRoleScopeService roleScopeService;
 	private final ITopMenuSettingService topMenuSettingService;
 	private final static String PARENT_ID = "parentId";
+	private final static Integer MENU_CATEGORY = 1;
 
 	@Override
 	public List<MenuVO> lazyList(Long parentId, Map<String, Object> param) {
@@ -192,6 +194,22 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
 
 	@Override
 	public boolean submit(Menu menu) {
+		LambdaQueryWrapper<Menu> menuQueryWrapper = Wrappers.lambdaQuery();
+		if (menu.getId() == null) {
+			menuQueryWrapper.eq(Menu::getCode, menu.getCode()).or(
+				wrapper -> wrapper.eq(Menu::getName, menu.getName()).eq(Menu::getCategory, MENU_CATEGORY)
+			);
+		} else {
+			menuQueryWrapper.ne(Menu::getId, menu.getId()).and(
+				wrapper -> wrapper.eq(Menu::getCode, menu.getCode()).or(
+					o -> o.eq(Menu::getName, menu.getName()).eq(Menu::getCategory, MENU_CATEGORY)
+				)
+			);
+		}
+		Integer cnt = baseMapper.selectCount(menuQueryWrapper);
+		if (cnt > 0) {
+			throw new ServiceException("菜单名或编号已存在!");
+		}
 		if (menu.getParentId() == null && menu.getId() == null) {
 			menu.setParentId(BladeConstant.TOP_PARENT_ID);
 		}