mxd 3 years ago
parent
commit
9d3b83392b

+ 1 - 1
magic-api/src/main/java/org/ssssssss/magicapi/controller/MagicResourceController.java

@@ -77,7 +77,7 @@ public class MagicResourceController extends MagicController implements MagicExc
 		// 自动保存的代码,和旧版代码对比,如果一致,则不保存,直接返回。
 		if(entity.getId() != null && "1".equals(auto)){
 			MagicEntity oldInfo = service.file(entity.getId());
-			if(Objects.equals(oldInfo.getScript(), entity.getScript())){
+			if(oldInfo != null && Objects.equals(oldInfo.getScript(), entity.getScript())){
 				return new JsonBean<>(entity.getId());
 			}
 		}

+ 12 - 0
magic-api/src/main/java/org/ssssssss/magicapi/service/impl/DataSourceInfoMagicResourceStorage.java

@@ -2,8 +2,10 @@ package org.ssssssss.magicapi.service.impl;
 
 import org.ssssssss.magicapi.model.DataSourceInfo;
 import org.ssssssss.magicapi.model.JsonCodeConstants;
+import org.ssssssss.magicapi.model.MagicEntity;
 import org.ssssssss.magicapi.provider.MagicResourceStorage;
 import org.ssssssss.magicapi.service.MagicResourceService;
+import org.ssssssss.magicapi.utils.JsonUtils;
 
 public class DataSourceInfoMagicResourceStorage implements MagicResourceStorage<DataSourceInfo>, JsonCodeConstants {
 
@@ -54,4 +56,14 @@ public class DataSourceInfoMagicResourceStorage implements MagicResourceStorage<
 	public void setMagicResourceService(MagicResourceService magicResourceService) {
 		this.magicResourceService = magicResourceService;
 	}
+
+	@Override
+	public DataSourceInfo read(byte[] bytes) {
+		return JsonUtils.readValue(bytes, DataSourceInfo.class);
+	}
+
+	@Override
+	public byte[] write(MagicEntity entity) {
+		return JsonUtils.toJsonBytes(entity);
+	}
 }

+ 5 - 3
magic-api/src/main/java/org/ssssssss/magicapi/service/impl/DefaultMagicResourceService.java

@@ -418,7 +418,7 @@ public class DefaultMagicResourceService implements MagicResourceService, JsonCo
 		notBlank(entity.getName(), NAME_REQUIRED);
 		isTrue(IoUtils.validateFileName(entity.getName()), NAME_INVALID);
 		return writeLock(() -> {
-			EventAction action = entity.getId() == null ? EventAction.CREATE : EventAction.SAVE;
+			EventAction action = entity.getId() == null || !fileCache.containsKey(entity.getId()) ? EventAction.CREATE : EventAction.SAVE;
 			// 获取所在分组
 			Resource groupResource = getGroupResource(entity.getGroupId());
 			// 分组需要存在
@@ -447,7 +447,7 @@ public class DefaultMagicResourceService implements MagicResourceService, JsonCo
 			String filename = entity.getName() + storage.suffix();
 			// 获取修改前的信息
 			Resource fileResource = groupResource.getResource(filename);
-			if (entity.getId() == null || !fileCache.containsKey(entity.getId())) {
+			if (action == EventAction.CREATE) {
 				if(entity.getId() == null){
 					isTrue(!fileResource.exists(), FILE_SAVE_FAILURE);
 					// 新增操作赋值
@@ -592,7 +592,9 @@ public class DefaultMagicResourceService implements MagicResourceService, JsonCo
 					MagicEntity entity = fileCache.get(item.getId());
 					notNull(entity, FILE_NOT_FOUND);
 					Resource groupResource = groupMappings.get(entity.getGroupId());
-					zos.putNextEntry(new ZipEntry(groupResource.getFilePath() + entity.getName() + ".ms"));
+					Group group = groupCache.get(entity.getGroupId());
+					MagicResourceStorage<? extends MagicEntity> storage = storages.get(group.getType());
+					zos.putNextEntry(new ZipEntry(groupResource.getFilePath() + entity.getName() + storage.suffix()));
 					zos.write(resource.read());
 					zos.closeEntry();
 				}