From 877eb048d3eeabde343e29256b688403fe3069ca Mon Sep 17 00:00:00 2001
From: zhang chengzhi <3144712872@qq.com>
Date: Thu, 29 Aug 2024 20:01:39 +0800
Subject: [PATCH] 11111
---
cloud-rule-common/pom.xml | 7 +
.../{DataDescribe.java => DataValue.java} | 4 +-
.../rule/common/domain/RuleEngineVersion.java | 6 +
.../rule/common/domain/req/VersionAddReq.java | 6 +
.../com/muyu/rule/common/utils/OssUtil.java | 162 ++++++++++++++++++
.../java/com/muyu/rule/server/DataTest.java | 4 +-
.../java/com/muyu/rule/server/EngineTest.java | 1 -
.../main/java/com/muyu/rule/server/Main.java | 70 ++++++++
.../muyu/rule/server/basic/BasicEngine.java | 26 +++
.../abstracts/DataEngineRowActuator.java | 30 ++++
.../abstracts/DataEngineValueActuator.java | 35 ++++
.../basic/engine/ENGINE_VALUE_VFD1000_V1.java | 23 +++
.../basic/engine/ENGINE_VALUE_VFD1000_V2.java | 24 +++
.../basic/handler/DataEngineHandler.java | 35 ++++
.../basic/handler/DataEngineRowHandler.java | 22 +++
.../basic/handler/DataEngineValueHandler.java | 44 +++++
.../server/engine/Engine_2024_8_23_2347.class | Bin 2559 -> 0 bytes
.../server/engine/Engine_2024_8_23_2347.java | 2 +-
.../muyu/rule/server/util/FileLoadUtil.java | 81 +++++++++
19 files changed, 577 insertions(+), 5 deletions(-)
rename cloud-rule-common/src/main/java/com/muyu/rule/common/domain/{DataDescribe.java => DataValue.java} (90%)
create mode 100644 cloud-rule-common/src/main/java/com/muyu/rule/common/utils/OssUtil.java
create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/Main.java
create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/basic/BasicEngine.java
create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/basic/abstracts/DataEngineRowActuator.java
create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/basic/abstracts/DataEngineValueActuator.java
create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java
create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V2.java
create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineHandler.java
create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineRowHandler.java
create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/basic/handler/DataEngineValueHandler.java
delete mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.class
create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/util/FileLoadUtil.java
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