diff --git a/cloud-rule-common/pom.xml b/cloud-rule-common/pom.xml index 8992d0f..db7349d 100644 --- a/cloud-rule-common/pom.xml +++ b/cloud-rule-common/pom.xml @@ -11,6 +11,7 @@ cloud-rule-common + 17 17 @@ -23,6 +24,12 @@ com.muyu cloud-common-core + + + com.aliyun.oss + aliyun-sdk-oss + 3.12.0 + diff --git a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/DataDescribe.java b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/DataValue.java similarity index 90% rename from cloud-rule-common/src/main/java/com/muyu/rule/common/domain/DataDescribe.java rename to cloud-rule-common/src/main/java/com/muyu/rule/common/domain/DataValue.java index 81ba87d..ab67ae9 100644 --- a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/DataDescribe.java +++ b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/DataValue.java @@ -1,6 +1,7 @@ package com.muyu.rule.common.domain; import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @@ -12,9 +13,10 @@ import lombok.NoArgsConstructor; * @Date:2024/8/27 9:18 */ @Data +@Builder @AllArgsConstructor @NoArgsConstructor -public class DataDescribe { +public class DataValue { /** * 键 diff --git a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/RuleEngineVersion.java b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/RuleEngineVersion.java index a51ee2d..04067b3 100644 --- a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/RuleEngineVersion.java +++ b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/RuleEngineVersion.java @@ -35,6 +35,11 @@ public class RuleEngineVersion extends BaseEntity { * 版本名称 */ private String versionName; + /** + * 版本类名 + */ + + private String className; /** * 版本编码 */ @@ -75,6 +80,7 @@ public class RuleEngineVersion extends BaseEntity { .versionName(versionAddReq.getVersionName()) .versionCode(versionAddReq.getVersionCode()) .versionClazz(versionAddReq.getVersionClazz()) + .className(versionAddReq.getClassName()) .build(); } diff --git a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/VersionAddReq.java b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/VersionAddReq.java index 3306f98..3870ca5 100644 --- a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/VersionAddReq.java +++ b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/VersionAddReq.java @@ -26,6 +26,12 @@ public class VersionAddReq { * 版本名称 */ private String versionName; + /** + * 版本类名 + */ + + private String className; + /** * 版本编码 */ diff --git a/cloud-rule-common/src/main/java/com/muyu/rule/common/utils/OssUtil.java b/cloud-rule-common/src/main/java/com/muyu/rule/common/utils/OssUtil.java new file mode 100644 index 0000000..71dbea6 --- /dev/null +++ b/cloud-rule-common/src/main/java/com/muyu/rule/common/utils/OssUtil.java @@ -0,0 +1,162 @@ +package com.muyu.rule.common.utils; + +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.GetObjectRequest; +import com.aliyun.oss.model.PutObjectRequest; +import lombok.extern.log4j.Log4j2; +import org.springframework.web.multipart.MultipartFile; + +import java.io.*; +import java.time.LocalDateTime; +import java.util.UUID; + +/** + * Oss服务调用 + */ +@Log4j2 +public class OssUtil { + + /** + * Endpoint 存储对象概述 阿里云主账号AccessKey,accessKeySecret拥有所有API的访问权限 访问路径前缀 存储对象概述 + */ + private static String endPoint = "oss-cn-shanghai.aliyuncs.com"; + private static String accessKeyId = "LTAI5tDbRqXkC5i3SMrCSDcX"; + private static String accessKeySecret = "XUzMZoHPLsjNLafHsdQnMElBWZATsu"; + private static String accessPre = "https://mall-bw.oss-cn-shanghai.aliyuncs.com/"; + + /** + * bucket名称 + * + * @return + */ + private static String bucketName = "mall-bw"; + + private static OSS ossClient; + + static { + ossClient = new OSSClientBuilder().build( + endPoint, + accessKeyId, + accessKeySecret); + log.info("oss服务连接成功!"); + } + + /** + * 默认路径上传本地文件 + * + * @param filePath + */ + public static String uploadFile(String filePath) { + return uploadFileForBucket(bucketName, getOssFilePath(filePath), filePath); + } + + /** + * 默认路径上传multipartFile文件 + * + * @param multipartFile + */ + public static String uploadMultipartFile(MultipartFile multipartFile) { + return uploadMultipartFile(bucketName, getOssFilePath(multipartFile.getOriginalFilename()), multipartFile); + } + + /** + * 上传 multipartFile 类型文件 + * + * @param bucketName + * @param ossPath + * @param multipartFile + */ + public static String uploadMultipartFile(String bucketName, String ossPath, MultipartFile multipartFile) { + InputStream inputStream = null; + try { + inputStream = multipartFile.getInputStream(); + } catch (IOException e) { + e.printStackTrace(); + } + uploadFileInputStreamForBucket(bucketName, ossPath, inputStream); + return accessPre + ossPath; + } + + /** + * 使用File上传PutObject上传文件 ** 程序默认使用次方法上传 + * + * @param bucketName 实例名称 + * @param ossPath oss存储路径 + * @param filePath 本地文件路径 + */ + public static String uploadFileForBucket(String bucketName, String ossPath, String filePath) { + // 创建PutObjectRequest对象。 + PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, ossPath, new File(filePath)); + + // 上传 + ossClient.putObject(putObjectRequest); + return accessPre + ossPath; + } + + /** + * 使用文件流上传到指定的bucket实例 + * + * @param bucketName 实例名称 + * @param ossPath oss存储路径 + * @param filePath 本地文件路径 + */ + public static String uploadFileInputStreamForBucket(String bucketName, String ossPath, String filePath) { + + // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。 + InputStream inputStream = null; + try { + inputStream = new FileInputStream(filePath); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + // 填写Bucket名称和Object完整路径。Object完整路径中不能包含Bucket名称。 + uploadFileInputStreamForBucket(bucketName, ossPath, inputStream); + return accessPre + ossPath; + } + + public static void uploadFileInputStreamForBucket(String bucketName, String ossPath, InputStream inputStream) { + ossClient.putObject(bucketName, ossPath, inputStream); + } + + /** + * 下载 + * + * @param ossFilePath + * @param filePath + */ + public static void downloadFile(String ossFilePath, String filePath) { + downloadFileForBucket(bucketName, ossFilePath, filePath); + } + + /** + * 下载 + * + * @param bucketName 实例名称 + * @param ossFilePath oss存储路径 + * @param filePath 本地文件路径 + */ + public static void downloadFileForBucket(String bucketName, String ossFilePath, String filePath) { + ossClient.getObject(new GetObjectRequest(bucketName, ossFilePath), new File(filePath)); + } + + /** + * @return + */ + public static String getOssDefaultPath() { + LocalDateTime now = LocalDateTime.now(); + String url = + now.getYear() + "/" + + now.getMonth() + "/" + + now.getDayOfMonth() + "/" + + now.getHour() + "/" + + now.getMinute() + "/"; + return url; + } + + public static String getOssFilePath(String filePath) { + String fileSuf = filePath.substring(filePath.indexOf(".") + 1); + return getOssDefaultPath() + UUID.randomUUID().toString() + "." + fileSuf; + } + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/DataTest.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/DataTest.java index 898eb7e..aa20cfc 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/DataTest.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/DataTest.java @@ -1,6 +1,6 @@ package com.muyu.rule.server; -import com.muyu.rule.common.domain.DataDescribe; +import com.muyu.rule.common.domain.DataValue; /** * @Author:张承志 @@ -12,7 +12,7 @@ import com.muyu.rule.common.domain.DataDescribe; public class DataTest { public static void main(String[] args) { - DataDescribe describe = new DataDescribe(); + DataValue describe = new DataValue(); describe.setKey("name"); diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineTest.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineTest.java index fef5b77..0284692 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineTest.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineTest.java @@ -35,7 +35,6 @@ public class EngineTest { params.put("idcard","142021200212215977"); Object engineObject = EngineExecution.engineExe("Engine_2024_8_23_2347", params); - System.out.println("====>"+engineObject); diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/Main.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/Main.java new file mode 100644 index 0000000..4aa1bce --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/Main.java @@ -0,0 +1,70 @@ +package com.muyu.rule.server; + +import com.muyu.rule.common.domain.DataValue; +import com.muyu.rule.server.basic.BasicEngine; +import com.muyu.rule.server.basic.engine.ENGINE_VALUE_VFD1000_V1; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server + * @Project:cloud-etl-rule + * @name:Main + * @Date:2024/8/29 15:57 + */ +public class Main { + + static Map> engineMap = new ConcurrentHashMap<>(); + + + static { + try { + Class aClass = Class.forName("com.muyu.rule.server.basic.engine.ENGINE_VALUE_VFD1000_V1"); + + try { + engineMap.put("ENGINE_VALUE_VFD1000_V1", (BasicEngine) aClass.newInstance()); + } catch (InstantiationException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + + } + + + public static void main(String[] args) { + DataValue dataValue = DataValue.builder() + .type("String") + .label("姓名") + .key("name") + .value(null) + .build(); + + BasicEngine engineValue = engineMap.get("ENGINE_VALUE_VFD1000_V1"); + + engineValue.set(dataValue); + + engineValue.execution(); + + + } + + + + + + + + + + + + +} + + diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/BasicEngine.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/BasicEngine.java new file mode 100644 index 0000000..1e1463a --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/BasicEngine.java @@ -0,0 +1,26 @@ +package com.muyu.rule.server.basic; + +import com.muyu.rule.common.domain.DataValue; +import com.muyu.rule.server.basic.handler.DataEngineHandler; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.basic + * @Project:cloud-etl-rule + * @name:BasicEngine + * @Date:2024/8/29 14:29 + */ +public interface BasicEngine { + + public void set(V dataValue); + + public V get(); + + public default void remove(){ + DataEngineHandler.remove(); + } + public void execution(); + + + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/abstracts/DataEngineRowActuator.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/abstracts/DataEngineRowActuator.java new file mode 100644 index 0000000..a6c9b3a --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/abstracts/DataEngineRowActuator.java @@ -0,0 +1,30 @@ +package com.muyu.rule.server.basic.abstracts; + +import com.muyu.rule.common.domain.DataValue; +import com.muyu.rule.server.basic.BasicEngine; +import com.muyu.rule.server.basic.handler.DataEngineRowHandler; +import com.muyu.rule.server.basic.handler.DataEngineValueHandler; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.basic.abstracts + * @Project:cloud-etl-rule + * @name:DataEngineValueAu + * @Date:2024/8/29 15:11 + */ +public abstract class DataEngineRowActuator implements BasicEngine { + +public void set(DataValue[] dataValue){ + DataEngineRowHandler.set(dataValue); +} + +public DataValue[] get(){ + return DataEngineRowHandler.get(); +} + + + + + + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/abstracts/DataEngineValueActuator.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/abstracts/DataEngineValueActuator.java new file mode 100644 index 0000000..101e789 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/abstracts/DataEngineValueActuator.java @@ -0,0 +1,35 @@ +package com.muyu.rule.server.basic.abstracts; + +import com.muyu.rule.common.domain.DataValue; +import com.muyu.rule.server.basic.BasicEngine; +import com.muyu.rule.server.basic.handler.DataEngineValueHandler; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.basic.abstracts + * @Project:cloud-etl-rule + * @name:DataEngineValueAu + * @Date:2024/8/29 15:11 + */ +public abstract class DataEngineValueActuator implements BasicEngine { + +public void set(DataValue dataValue){ + DataEngineValueHandler.set(dataValue); +} + +public DataValue get(){ + return DataEngineValueHandler.get(); +} + + + + @Override + public void execution() { +this.run(); +this.remove(); + } + + public abstract void run(); + + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java new file mode 100644 index 0000000..17bc004 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java @@ -0,0 +1,23 @@ +package com.muyu.rule.server.basic.engine; + +import com.muyu.rule.common.domain.DataValue; +import com.muyu.rule.server.basic.abstracts.DataEngineValueActuator; + +import javax.xml.crypto.Data; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.basic.engine + * @Project:cloud-etl-rule + * @name:ENGINE_VALUE_VFD1000_V1 + * @Date:2024/8/29 15:51 + */ +public class ENGINE_VALUE_VFD1000_V1 extends DataEngineValueActuator { + @Override + public void run() { + DataValue dataValue = get(); + if (dataValue.getValue() == null){ + System.out.println("数据为空"); + } + } +} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V2.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V2.java new file mode 100644 index 0000000..b5c067d --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V2.java @@ -0,0 +1,24 @@ +package com.muyu.rule.server.basic.engine; + +import com.muyu.rule.common.domain.DataValue; +import com.muyu.rule.common.utils.Desensitization; +import com.muyu.rule.server.basic.abstracts.DataEngineValueActuator; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.basic.engine + * @Project:cloud-etl-rule + * @name:ENGINE_VALUE_VFD1000_V1 + * @Date:2024/8/29 15:51 + */ +public class ENGINE_VALUE_VFD1000_V2 extends DataEngineValueActuator { + @Override + public void run() { + DataValue dataValue = get(); + + String string = Desensitization.mobilePhoneDesensitization((String) dataValue.getValue()); + + System.out.println("手机号脱敏的结果是====>"+string); + + } +} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineHandler.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineHandler.java new file mode 100644 index 0000000..47922ad --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineHandler.java @@ -0,0 +1,35 @@ +package com.muyu.rule.server.basic.handler; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.basic + * @Project:cloud-etl-rule + * @name:DataEngineHandler + * @Date:2024/8/29 14:21 + */ +public class DataEngineHandler { + + private static final ThreadLocal dataEngineHandler = new ThreadLocal<>(); + + public static void set(final Object handler){ + + dataEngineHandler.set(handler); + } + + public static T get(){ + + return (T) dataEngineHandler.get(); + } + + +public static void remove(){ + dataEngineHandler.remove(); +} + + + + + + + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineRowHandler.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineRowHandler.java new file mode 100644 index 0000000..2654dc2 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineRowHandler.java @@ -0,0 +1,22 @@ +package com.muyu.rule.server.basic.handler; + +import com.muyu.common.core.text.Convert; +import com.muyu.rule.common.domain.DataValue; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.basic.handler + * @Project:cloud-etl-rule + * @name:DataEngineValueHandler + * @Date:2024/8/29 14:35 + * @Description:数据值处理对象 + */ +public class DataEngineRowHandler { + + public static void set(DataValue[] dataDescribe){DataEngineHandler.set(dataDescribe);} + + public static DataValue[] get(){ + return DataEngineHandler.get(); + } + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineValueHandler.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineValueHandler.java new file mode 100644 index 0000000..49e6785 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineValueHandler.java @@ -0,0 +1,44 @@ +package com.muyu.rule.server.basic.handler; + +import com.muyu.common.core.text.Convert; +import com.muyu.rule.common.domain.DataValue; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.basic.handler + * @Project:cloud-etl-rule + * @name:DataEngineValueHandler + * @Date:2024/8/29 14:35 + */ +public class DataEngineValueHandler { + + + public static void set(DataValue dataDescribe){ + + DataEngineHandler.set(dataDescribe); + } + + + + public static DataValue get(){ + return DataEngineHandler.get(); + } + + + public static void remove(){ + DataEngineHandler.remove(); + } + + + public static Object getValue(){ + return get().getValue(); + } + + public static Integer getInt(){ + return Convert.toInt(getValue(),null); + } + + + + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.class b/cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.class deleted file mode 100644 index e633024..0000000 Binary files a/cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.class and /dev/null differ diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.java index 39b3913..93c77e3 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.java @@ -25,7 +25,7 @@ public class Engine_2024_8_23_2347 { // 获取当前年份 LocalDate currentDate = LocalDate.now(); - Integer currentYear = currentDate.getYear(); + // Integer currentYear = currentDate.getYear(); // 计算年龄 Period age = Period.between(LocalDate.of(year, 1, 1), currentDate); diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/util/FileLoadUtil.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/util/FileLoadUtil.java new file mode 100644 index 0000000..b5ecd93 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/util/FileLoadUtil.java @@ -0,0 +1,81 @@ +package com.muyu.rule.server.util; + +import lombok.extern.log4j.Log4j2; + +import java.io.*; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.util + * @Project:cloud-etl-rule + * @name:FileUtil + * @Date:2024/8/29 8:39 + */ +@Log4j2 +public class FileLoadUtil { + + public static void writeFile(String filePath,String fileName,String content){ + try { + String javaFile = fileName + filePath.split(".")[0]; + + // File file = new File(filePath + "//" + fileName + ".java"); + + BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(javaFile)); + //写入 + bufferedWriter.write(content); + //刷新 + bufferedWriter.flush(); + bufferedWriter.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + +public static String readFile(String filePath,String fileName){ + File file = new File(filePath + '\\' + fileName + ".java"); + + try { + BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); + + String content; + String len; + for (content = "";(len=bufferedReader.readLine())!= null;content = content +len + "\n"){ + } + + + return null; + } catch (IOException e) { + log.info("读取[{}]文件失败 ---> {}",fileName,e.getMessage(),e); + return ""; + } + + +} + + public static void main(String[] args) { + + + + + + + + } + + + + + + + + + + + + + + + + +}