diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/RuleEngineVersionController.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/RuleEngineVersionController.java index 4f80af1..07055fd 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/RuleEngineVersionController.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/RuleEngineVersionController.java @@ -15,6 +15,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; /** * @Author:张承志 @@ -107,32 +108,22 @@ public class RuleEngineVersionController { */ @PostMapping("/deposit/{type}") - public Result deposit(@PathVariable("type")Integer type,@Validated @RequestBody VersionAddReq versionAddReq){ - - log.info("传入参数{}"+type); - - //String versionClass = versionService.deposit(type); - - versionAddReq.setVersionClazz(""); - String parentClass = null; - if (type==1){ - parentClass = "DataEngineValueActuator"; - }else if (type==2){ - parentClass="DataEngineRowActuator"; - }else if (type==3){ - parentClass="DataEngineDataSetActuator"; - } - + public Result deposit(@PathVariable("type") Integer type, + @Validated @RequestBody VersionAddReq versionAddReq) { + log.info("传入参数{}", type); + // 根据类型确定父类 + String parentClass = determineParentClass(type); + // 定义模板字符串 String template = "package com.muyu.rule.common.engine;\n" + "\n" + "import cn.hutool.core.util.DesensitizedUtil;\n" + "import com.alibaba.fastjson2.JSON;\n" + "import com.alibaba.fastjson2.JSONObject;\n" + "import com.muyu.common.domain.DataValue;\n" + - "import com.muyu.rule.common.basic.abstracts.${parentClass};\n" + + "import com.muyu.rule.common.basic.abstracts." + parentClass + ";\n" + "\n" + "\n" + "/**\n" + @@ -143,7 +134,7 @@ public class RuleEngineVersionController { " * @Date:2024/8/30 11:13\n" + " */\n" + "\n" + - "public class ${className} extends ${parentClass} {\n" + + "public class ${className} extends " + parentClass + " {\n" + "\n" + " @Override\n" + " public void run() {\n" + @@ -158,7 +149,7 @@ public class RuleEngineVersionController { "\n" + " for (DataValue[] value : dataValues) {\n" + " for (DataValue dataValue1 : value) {\n" + - " if (dataValue1.getKey().equals(key)){\n" + + " if (dataValue1.getKey().equals(key)) {\n" + " dataValue1.setValue(DesensitizedUtil.mobilePhone((String) dataValue1.getValue()));\n" + " }\n" + " }\n" + @@ -168,15 +159,110 @@ public class RuleEngineVersionController { " }\n" + "}\n"; - String versionClass = template.replace("${className}", versionAddReq.getClassName()); - versionClass = template.replace("${parentClass}",parentClass); + // 使用Map进行模板替换 + Map replacements = Map.of( + "${className}", versionAddReq.getClassName(), + "${parentClass}", parentClass + ); - versionAddReq.setVersionClazz(versionClass); + // 替换模板中的变量 + String versionClass = replacePlaceholders(template, replacements); + versionAddReq.setVersionClazz(versionClass); return Result.success(versionAddReq); } + // 辅助方法用于根据类型决定父类 + private String determineParentClass(Integer type) { + switch (type) { + case 1: + return "DataEngineValueActuator"; + case 2: + return "DataEngineRowActuator"; + case 3: + return "DataEngineDataSetActuator"; + default: + throw new IllegalArgumentException("Invalid type provided"); + } + } + + // 辅助方法用于替换模板中的占位符 + private String replacePlaceholders(String template, Map replacements) { + for (Map.Entry entry : replacements.entrySet()) { + template = template.replace(entry.getKey(), entry.getValue()); + } + return template; + } + + +// @PostMapping("/deposit/{type}") +// public Result deposit(@PathVariable("type")Integer type,@Validated @RequestBody VersionAddReq versionAddReq){ +// +// log.info("传入参数{}"+type); +// +// //String versionClass = versionService.deposit(type); +// +// String parentClass = null; +// if (type==1){ +// parentClass = "DataEngineValueActuator"; +// }else if (type==2){ +// parentClass="DataEngineRowActuator"; +// }else if (type==3){ +// parentClass="DataEngineDataSetActuator"; +// } +// +// String template = "package com.muyu.rule.common.engine;\n" + +// "\n" + +// "import cn.hutool.core.util.DesensitizedUtil;\n" + +// "import com.alibaba.fastjson2.JSON;\n" + +// "import com.alibaba.fastjson2.JSONObject;\n" + +// "import com.muyu.common.domain.DataValue;\n" + +// "import com.muyu.rule.common.basic.abstracts.${parentClass};\n" + +// "\n" + +// "\n" + +// "/**\n" + +// " * @Author:张承志\n" + +// " * @Package:com.muyu.rule.server.basic.engine.row\n" + +// " * @Project:cloud-etl-rule\n" + +// " * @name:数据集指定字段进行脱敏\n" + +// " * @Date:2024/8/30 11:13\n" + +// " */\n" + +// "\n" + +// "public class ${className} extends ${parentClass} {\n" + +// "\n" + +// " @Override\n" + +// " public void run() {\n" + +// "\n" + +// " DataValue[][] dataValues = get();\n" + +// "\n" + +// " String dataValue = getDataValue();\n" + +// "\n" + +// " JSONObject jsonObject = JSON.parseObject(dataValue);\n" + +// "\n" + +// " String key = (String)jsonObject.get(\"key\");\n" + +// "\n" + +// " for (DataValue[] value : dataValues) {\n" + +// " for (DataValue dataValue1 : value) {\n" + +// " if (dataValue1.getKey().equals(key)){\n" + +// " dataValue1.setValue(DesensitizedUtil.mobilePhone((String) dataValue1.getValue()));\n" + +// " }\n" + +// " }\n" + +// " }\n" + +// " set(dataValues);\n" + +// "\n" + +// " }\n" + +// "}\n"; +// +// String versionClass = template.replace("${className}", versionAddReq.getClassName()); +// versionClass = template.replace("${parentClass}",parentClass); +// +// versionAddReq.setVersionClazz(versionClass); +// +// +// return Result.success(versionAddReq); +// } + @PostMapping("/readByOss/{className}") @Operation(summary = "从Oss获取数据", description = "传入参数oss的key名从oss读取数据") public Result readByOss(@PathVariable String className){