Browse Source

Merge remote-tracking branch 'origin/master'

master
lizw-2015 6 months ago
parent
commit
f42d5ffff9
  1. 20
      servo/src/main/java/com/yvan/workbench/controller/LccController.java
  2. 46
      servo/src/main/java/com/yvan/workbench/service/LccMapService.java

20
servo/src/main/java/com/yvan/workbench/controller/LccController.java

@ -11,6 +11,7 @@ import org.clever.data.jdbc.QueryDSL;
import org.clever.data.jdbc.querydsl.utils.QueryDslUtils;
import org.clever.web.mvc.annotation.RequestBody;
import java.util.List;
import java.util.Map;
import static com.galaxis.rcs.common.query.QLccBasContainer.lccBasContainer;
@ -126,4 +127,23 @@ public class LccController {
return R.success(list);
}
public static R<?> saveAndSyncScripts(@RequestBody Map<String, Object> params) {
String projectUuid = Conv.asString(params.get("projectUUID"));
Long envId = Conv.asLong(params.get("envId"));
List<Map<String, Object>> scriptList = (List<Map<String, Object>>) (params.get("scriptList"));
if (Strings.isNullOrEmpty(projectUuid)) {
return R.fail("projectUUID Must not be empty");
}
if (envId == null || envId < 0) {
return R.fail("envId Must not be empty");
}
// 保存脚本内容到文件系统
var mapService = SpringContext.HOLDER.getBean(LccMapService.class);
var list = mapService.saveAndSyncScripts(projectUuid, scriptList);
return R.success(list);
}
}

46
servo/src/main/java/com/yvan/workbench/service/LccMapService.java

@ -11,11 +11,13 @@ import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.clever.core.Conv;
import org.clever.core.mapper.JacksonMapper;
import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Slf4j
@ -266,4 +268,48 @@ public class LccMapService {
}
public List<Map<String, String>> saveAndSyncScripts(String projectUuid, List<Map<String, Object>> scriptList) {
var mapLoc = new File(this.config.getLocation());
// 扫描 mapLoc 目录下所有的文件夹,并且文件夹中包含有 project.json 文件存在,就讲她反序列化为 LccProject 对象
if (!mapLoc.exists() || !mapLoc.isDirectory()) {
throw new RuntimeException(
String.format("LccMapService.getAllProjects() - mapLoc '%s' does not exist or is not a directory", mapLoc.getAbsolutePath())
);
}
var scriptsDir = new File(mapLoc, projectUuid + "/scripts");
if (!scriptsDir.exists()) {
scriptsDir.mkdirs();
}
// 保存脚本内容到文件系统
for (Map<String, Object> script : scriptList) {
String name = Conv.asString(script.get("name"));
String content = Conv.asString(script.get("content"));
if (Strings.isNullOrEmpty(name) || Strings.isNullOrEmpty(content)) {
continue; // 跳过无效的脚本
}
// 检查脚本名称是否符合规范
if (!name.matches("^[a-zA-Z0-9_\\-]+$")) {
throw new RuntimeException("Script name '" + name + "' is not valid. It must be alphanumeric, underscores or hyphens and end with .js");
}
File scriptFile = new File(scriptsDir, name + ".ts");
LccUtils.saveFile(scriptFile, content, "script");
}
// 读取脚本文件夹内所有文件,返回给前端
List<Map<String, String>> scriptListNew = Lists.newArrayList();
for (File scriptFile : Objects.requireNonNull(scriptsDir.listFiles())) {
if (scriptFile.isFile() && scriptFile.getName().endsWith(".ts")) {
String scriptName = FilenameUtils.getBaseName(scriptFile.getName());
String scriptContent = LccUtils.readFile(scriptFile, "script");
scriptListNew.add(Map.of("name", scriptName, "content", scriptContent));
}
}
return scriptListNew;
}
}

Loading…
Cancel
Save