瀏覽代碼

修复集群下接口可能不同步的`BUG`

mxd 3 年之前
父節點
當前提交
e8b7d44d47

+ 5 - 1
magic-api/src/main/java/org/ssssssss/magicapi/core/event/GroupEvent.java

@@ -11,7 +11,7 @@ public class GroupEvent extends MagicEvent {
 	/**
 	 * 分组信息
 	 */
-	private final Group group;
+	private Group group;
 
 	/**
 	 * 子分组
@@ -33,6 +33,10 @@ public class GroupEvent extends MagicEvent {
 		return group;
 	}
 
+	public void setGroup(Group group) {
+		this.group = group;
+	}
+
 	public List<MagicEntity> getEntities() {
 		return entities;
 	}

+ 18 - 4
magic-api/src/main/java/org/ssssssss/magicapi/core/service/impl/DefaultMagicResourceService.java

@@ -89,8 +89,16 @@ public class DefaultMagicResourceService implements MagicResourceService, JsonCo
 			if (event.getAction() == EventAction.DELETE) {
 				event.setEntities(deleteGroup(id));
 			} else if (action != EventAction.CREATE) {
-				// 刷新分组缓存
-				refreshGroup(groupMappings.get(id), storages.get(group.getType()));
+				Resource folder = groupMappings.get(id);
+				folder.readAll();
+				if (folder.exists()) {
+					// 刷新分组缓存
+					refreshGroup(folder, storages.get(group.getType()));
+				} else {
+					this.readAll();
+					treeNode = tree(group.getType()).findTreeNode(it -> it.getId().equals(id));
+				}
+				event.setGroup(groupCache.get(id));
 				event.setEntities(treeNode
 						.flat()
 						.stream()
@@ -122,8 +130,14 @@ public class DefaultMagicResourceService implements MagicResourceService, JsonCo
 					}
 				} else {
 					Resource resource = fileMappings.get(id);
-					entity = storage.read(resource.read());
-					putFile(storage, entity, resource);
+					resource.readAll();
+					if (resource.exists()) {
+						entity = storage.read(resource.read());
+						putFile(storage, entity, resource);
+					} else {
+						this.readAll();
+						entity = fileCache.get(id);
+					}
 				}
 				publisher.publishEvent(new FileEvent(group.getType(), action, entity, Constants.EVENT_SOURCE_NOTIFY));
 			}