Преглед на файлове

修复移动接口可能造成接口重复的问题

mxd преди 4 години
родител
ревизия
44c202ef93

+ 6 - 3
src/main/java/org/ssssssss/magicapi/adapter/resource/KeyValueResource.java

@@ -50,7 +50,10 @@ public abstract class KeyValueResource implements Resource {
 
 	@Override
 	public final boolean renameTo(Resource resource) {
-		if(resource.name().equalsIgnoreCase(this.name())){
+		if(readonly()){
+			return false;
+		}
+		if(resource.getAbsolutePath().equalsIgnoreCase(this.getAbsolutePath())){
 			return true;
 		}
 		if (!(resource instanceof KeyValueResource)) {
@@ -71,7 +74,7 @@ public abstract class KeyValueResource implements Resource {
 
 	@Override
 	public boolean delete() {
-		return this.keys().stream().allMatch(this::deleteByKey);
+		return !readonly() && this.keys().stream().allMatch(this::deleteByKey);
 	}
 
 	protected boolean deleteByKey(String key) {
@@ -119,7 +122,7 @@ public abstract class KeyValueResource implements Resource {
 
 	@Override
 	public boolean write(byte[] bytes) {
-		return write(new String(bytes, StandardCharsets.UTF_8));
+		return !readonly() && write(new String(bytes, StandardCharsets.UTF_8));
 	}
 
 	@Override

+ 2 - 0
src/main/java/org/ssssssss/magicapi/controller/MagicGroupController.java

@@ -84,11 +84,13 @@ public class MagicGroupController extends MagicController implements MagicExcept
 			isTrue(groupServiceProvider.update(group), GROUP_SAVE_FAILURE);
 			// 如果数据库修改成功,则修改接口路径
 			configuration.getMappingHandlerMapping().updateGroup(group);
+			configuration.getMagicApiService().reload(group.getId());
 			return new JsonBean<>(true);
 		} else if (isFunctionGroup && configuration.getMagicFunctionManager().checkGroup(group)) {
 			isTrue(groupServiceProvider.update(group), GROUP_SAVE_FAILURE);
 			// 如果数据库修改成功,则修改接口路径
 			configuration.getMagicFunctionManager().updateGroup(group);
+			configuration.getFunctionServiceProvider().reload(group.getId());
 			return new JsonBean<>(true);
 		}
 		return new JsonBean<>(GROUP_CONFLICT);

+ 12 - 0
src/main/java/org/ssssssss/magicapi/provider/StoreServiceProvider.java

@@ -151,6 +151,18 @@ public abstract class StoreServiceProvider<T extends MagicEntity> {
 		return infos;
 	}
 
+	/**
+	 * 重新加载分组
+	 */
+	public void reload(String groupId){
+		Resource dest = groupServiceProvider.getGroupResource(groupId);
+		dest.files(".ms").forEach(r -> {
+			T info = deserialize(r.read());
+			infos.put(info.getId(), info);
+			mappings.put(info.getId(), r);
+		});
+	}
+
 	/**
 	 * 查询所有(内部使用,需要带Script)
 	 */