mxd 4 vuotta sitten
vanhempi
sitoutus
0dfa8f921e

+ 9 - 5
src/main/java/org/ssssssss/magicapi/config/MappingHandlerMapping.java

@@ -230,11 +230,15 @@ public class MappingHandlerMapping {
 	 */
 	public boolean checkGroup(Group group) {
 		TreeNode<Group> oldTree = groups.findTreeNode((item) -> item.getId().equals(group.getId()));
-		// 如果移动目录或改了名字,判断是否冲突
-		if (Objects.equals(oldTree.getNode().getParentId(), group.getParentId()) || Objects.equals(oldTree.getNode().getName(), group.getName())) {
-			if(groupServiceProvider.exists(group)){
-				return false;
-			}
+		// 如果没移动目录且没改路径,则只需要判断名字是否冲突
+		boolean parentIdEquals = Objects.equals(oldTree.getNode().getParentId(), group.getParentId());
+		boolean nameEquals = Objects.equals(oldTree.getNode().getName(), group.getName());
+		if (parentIdEquals && Objects.equals(oldTree.getNode().getPath(), group.getPath())) {
+			return nameEquals || !groupServiceProvider.exists(group);
+		}
+		// 检测名字是否冲突
+		if((!parentIdEquals || !nameEquals) && groupServiceProvider.exists(group)){
+			return false;
 		}
 		// 新的接口分组路径
 		String newPath = groupServiceProvider.getFullPath(group.getParentId());

+ 1 - 1
src/main/java/org/ssssssss/magicapi/controller/MagicAPIController.java

@@ -186,7 +186,7 @@ public class MagicAPIController extends MagicController {
 			} else {
 				// 先判断接口是否存在
 				if (magicApiService.existsWithoutId(info.getName(), info.getGroupId(), info.getMethod(), info.getPath(), info.getId())) {
-					return new JsonBean<>(0, String.format("接口%s:%s已存在", info.getMethod(), info.getPath()));
+					return new JsonBean<>(0, String.format("接口%s:%s已存在或接口名称重复", info.getMethod(), info.getPath()));
 				}
 				Optional<ApiInfo> optional = configuration.getMappingHandlerMapping().getApiInfos().stream()
 						.filter(it -> it.getId().equals(info.getId()))

+ 4 - 4
src/main/java/org/ssssssss/magicapi/controller/MagicFunctionController.java

@@ -114,15 +114,15 @@ public class MagicFunctionController extends MagicController {
 		}
 		try {
 			if (StringUtils.isBlank(functionInfo.getId())) {
-				if (functionService.exists(functionInfo.getPath(), functionInfo.getGroupId())) {
-					return new JsonBean<>(0, String.format("函数%s已存在", functionInfo.getPath()));
+				if (functionService.exists(functionInfo.getName(), functionInfo.getPath(), functionInfo.getGroupId())) {
+					return new JsonBean<>(0, String.format("函数%s已存在或名称重复", functionInfo.getPath()));
 				}
 				if(!functionService.insert(functionInfo)){
 					return new JsonBean<>(0, "保存失败,请检查函数名称是否重复且不能包含特殊字符。");
 				}
 			} else {
-				if (functionService.existsWithoutId(functionInfo.getPath(), functionInfo.getGroupId(), functionInfo.getId())) {
-					return new JsonBean<>(0, String.format("函数%s已存在", functionInfo.getPath()));
+				if (functionService.existsWithoutId(functionInfo.getName(), functionInfo.getPath(), functionInfo.getGroupId(), functionInfo.getId())) {
+					return new JsonBean<>(0, String.format("函数%s已存在或名称重复", functionInfo.getPath()));
 				}
 				if(!functionService.update(functionInfo)){
 					return new JsonBean<>(0, "保存失败,请检查函数名称是否重复且不能包含特殊字符。");

+ 1 - 4
src/main/java/org/ssssssss/magicapi/controller/MagicGroupController.java

@@ -103,9 +103,6 @@ public class MagicGroupController extends MagicController {
 		if (StringUtils.isBlank(group.getType())) {
 			return new JsonBean<>(0, "分组类型不能为空");
 		}
-		if (groupServiceProvider.exists(group)) {
-			return new JsonBean<>(-20, "修改分组后,名称会有冲突,请检查!");
-		}
 		try {
 			boolean isApiGroup = "1".equals(group.getType());
 			boolean isFunctionGroup = "2".equals(group.getType());
@@ -124,7 +121,7 @@ public class MagicGroupController extends MagicController {
 				}
 				return new JsonBean<>(true);
 			}
-			return new JsonBean<>(-20, "修改分组后,路径会有冲突,请检查!");
+			return new JsonBean<>(-20, "修改分组后,名称或路径会有冲突,请检查!");
 		} catch (Exception e) {
 			logger.error("修改分组出错", e);
 			return new JsonBean<>(-1, e.getMessage());

+ 4 - 4
src/main/java/org/ssssssss/magicapi/provider/FunctionServiceProvider.java

@@ -9,14 +9,14 @@ public abstract class FunctionServiceProvider extends StoreServiceProvider<Funct
 		super(FunctionInfo.class, workspace, groupServiceProvider);
 	}
 
-	public boolean exists(String path, String groupId){
+	public boolean exists(String name, String path, String groupId){
 		return infos.values().stream()
-				.anyMatch(it -> groupId.equals(it.getGroupId()) && path.equals(it.getPath()));
+				.anyMatch(it -> groupId.equals(it.getGroupId()) && (name.equals(it.getName()) || path.equals(it.getPath())));
 	}
 
-	public boolean existsWithoutId(String path, String groupId, String id){
+	public boolean existsWithoutId(String name, String path, String groupId, String id){
 		return infos.values().stream()
-				.anyMatch(it -> !id.equals(it.getId()) && groupId.equals(it.getGroupId()) && path.equals(it.getPath()));
+				.anyMatch(it -> !id.equals(it.getId()) && groupId.equals(it.getGroupId()) && (name.equals(it.getName()) || path.equals(it.getPath())));
 	}
 
 	@Override