master
zhang chengzhi 2024-09-08 11:41:32 +08:00
parent cbeb41ba7a
commit c79f4f974f
62 changed files with 34 additions and 1509 deletions

View File

@ -13,11 +13,15 @@ import com.muyu.rule.common.basic.handler.DataEngineHandler;
* @Date2024/8/29 15:11
*/
public abstract class DataEngineDataSetActuator implements BasicEngine<DataValue[][]> {
public void setDataValue(String dataValue){
DataEngineHandler.set(dataValue);
}
public String getDataValue(){return DataEngineHandler.get();}
public void set(DataValue[][] dataValue){
DataEngineDataSetHandler.set(dataValue);
}

View File

@ -1,4 +1,4 @@
package com.muyu.rule.common.engine.dataSet;
package com.muyu.rule.common.engine;
import com.muyu.common.domain.DataValue;
import com.muyu.rule.common.basic.abstracts.DataEngineDataSetActuator;

View File

@ -1,4 +1,4 @@
package com.muyu.rule.common.engine.dataSet;
package com.muyu.rule.common.engine;
import cn.hutool.core.util.DesensitizedUtil;
import com.alibaba.fastjson2.JSON;

View File

@ -1,4 +1,4 @@
package com.muyu.rule.common.engine.row;
package com.muyu.rule.common.engine;
import com.muyu.common.domain.DataValue;
import com.muyu.rule.common.basic.abstracts.DataEngineRowActuator;

View File

@ -1,4 +1,4 @@
package com.muyu.rule.common.engine.value;
package com.muyu.rule.common.engine;
import com.muyu.common.domain.DataValue;
import com.muyu.rule.common.basic.abstracts.DataEngineValueActuator;

View File

@ -1,4 +1,4 @@
package com.muyu.rule.common.engine.value;
package com.muyu.rule.common.engine;
import com.muyu.common.domain.DataValue;
import com.muyu.common.enums.DataType;

View File

@ -1,4 +1,4 @@
package com.muyu.rule.common.engine.value;
package com.muyu.rule.common.engine;
import com.muyu.common.domain.DataValue;
import com.muyu.rule.common.basic.abstracts.DataEngineValueActuator;

View File

@ -1,40 +0,0 @@
package com.muyu.rule.common.engine.row;
import com.muyu.common.domain.DataValue;
import com.muyu.rule.common.basic.abstracts.DataEngineRowActuator;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/**
* @Author
* @Packagecom.muyu.rule.server.basic.engine.row
* @Projectcloud-etl-rule
* @nameENGINE_ROW_HANG_R1
* @Date2024/8/30 11:13
*/
public class ENGINE_ROW_HANG_R1 extends DataEngineRowActuator {
/**
*
*/
@Override
public void run() {
DataValue[] dataValues = get();
System.out.println(Arrays.toString(dataValues));
// 使用 HashSet 去重
Set<DataValue> uniquePeople = new HashSet<>(Arrays.asList(dataValues));
// 将 Set 转换回数组
DataValue[] uniqueArray = uniquePeople.toArray(new DataValue[0]);
System.out.println(Arrays.toString(uniqueArray));
set(uniqueArray);
DataValue[] dataValues1 = get();
System.out.println(Arrays.toString(dataValues1));
}
}

View File

@ -1,24 +0,0 @@
package com.muyu.rule.common.engine.value;
import com.muyu.common.domain.DataValue;
import com.muyu.rule.common.basic.abstracts.DataEngineValueActuator;
import com.muyu.rule.common.exception.DeliteException;
/**
* @Author
* @Packagecom.muyu.rule.server.basic.engine
* @Projectcloud-etl-rule
* @name
* @Date2024/8/29 15:51
*/
public class ENGINE_VALUE_VFD1000_V1 extends DataEngineValueActuator {
@Override
public void run() {
DataValue dataValue = get();
if (dataValue.getValue() == null){
throw new DeliteException("数据为空,需要丢弃!");
}else{
System.out.println("数据非空:"+dataValue.getValue());
}
}
}

View File

@ -1,45 +0,0 @@
package com.muyu.rule.common.engine.value;
import com.muyu.common.domain.DataValue;
import com.muyu.common.enums.DataType;
import com.muyu.rule.common.basic.abstracts.DataEngineValueActuator;
import java.time.LocalDateTime;
/**
* @Author
* @Packagecom.muyu.rule.server.basic.engine
* @Projectcloud-etl-rule
* @nameENGINE_VALUE_VFD1000_V1
* @Date2024/8/29 15:51
*/
public class ENGINE_VALUE_VFD1000_V2 extends DataEngineValueActuator {
@Override
public void run() {
DataValue dataValue = get();
if (dataValue.getValue()==null){
DataType type = dataValue.getType();
// 如果为空,添加默认值
//为整数 默认值为0
// if ("Integer".equals(string)){
// dataValue.setValue(0);
// }
// //为字符串 默认值为null
// if ("String".equals(string)){
// dataValue.setValue(null);
// }
// //为时间 默认值为当前时间
// if ("Date".equals(string)){
// LocalDateTime dateTime = LocalDateTime.now();
// dataValue.setValue(dateTime);
// }
}
}
}

View File

@ -1,26 +0,0 @@
package com.muyu.rule.common.engine.value;
import com.muyu.common.domain.DataValue;
import com.muyu.rule.common.basic.abstracts.DataEngineValueActuator;
/**
* @Author
* @Packagecom.muyu.rule.server.basic.engine
* @Projectcloud-etl-rule
* @name
* @Date2024/8/29 15:51
*/
public class ENGINE_VALUE_VFD1000_V3 extends DataEngineValueActuator {
@Override
public void run() {
DataValue dataValue = get();
}
}

View File

@ -38,7 +38,7 @@ public class DownloadOssSynchronization implements ApplicationRunner {
/**
*
*/
private static String serverClassPath = "home/lib/com/muyu/rule/common/engine/value/";
private static String serverClassPath = "home/lib/com/muyu/rule/common/engine/";
private static String bucketName = "zcz-vfd-1000";

View File

@ -23,10 +23,10 @@ public class Main {
static Map<String,BasicEngine<DataValue[][]>> engineDataSetMap = new ConcurrentHashMap<>();
static {
try {
Class<?> aClass = Class.forName("com.muyu.rule.common.engine.value.ENGINE_VALUE_VFD1000_V1");
Class<?> aClass2 = Class.forName("com.muyu.rule.common.engine.value.ENGINE_VALUE_VFD1000_V2");
Class<?> aClass3 = Class.forName("com.muyu.rule.common.engine.row.ENGINE_ROW_HANG_R1");
Class<?> aClass4 = Class.forName("com.muyu.rule.common.engine.dataSet.ENGINE_DataSet_asdf_S1");
Class<?> aClass = Class.forName("com.muyu.rule.common.engine.ENGINE_VALUE_VFD1000_V1");
Class<?> aClass2 = Class.forName("com.muyu.rule.common.engine.ENGINE_VALUE_VFD1000_V2");
Class<?> aClass3 = Class.forName("com.muyu.rule.common.engine.ENGINE_ROW_HANG_R1");
Class<?> aClass4 = Class.forName("com.muyu.rule.common.engine.ENGINE_DataSet_asdf_S1");
try {
engineMap.put("ENGINE_VALUE_VFD1000_V1", (BasicEngine<DataValue>) aClass.newInstance());
engineMap.put("ENGINE_VALUE_VFD1000_V2", (BasicEngine<DataValue>) aClass2.newInstance());

View File

@ -15,7 +15,7 @@ public class OSSClassLoaderExample {
static Map<String , BasicEngine<DataValue>> engineMap = new ConcurrentHashMap<>();
public static void main(String[] args) throws Exception {
String filePath = "cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/value/";
String filePath = "cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/";
String pack = "com.muyu.rule.server.basic.engine.value.";
@ -52,7 +52,7 @@ public class OSSClassLoaderExample {
Class<?> aClass = null;
try {
aClass = Class.forName("com.muyu.rule.common.engine.value.ENGINE_phone_zzzzz_V9");
aClass = Class.forName("com.muyu.rule.common.engine.ENGINE_VALUE_VFD1000_V1");
BasicEngine<DataValue> object =(BasicEngine<DataValue>)aClass.newInstance();

View File

@ -30,7 +30,6 @@ import java.util.List;
@Tag(name = "规则版本控制层", description = "规则版本管理,查看等相关操作")
public class RuleEngineVersionController {
/**
*
* @param ruleEngineVersion
@ -115,14 +114,25 @@ public class RuleEngineVersionController {
//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";
}
String template = "package com.muyu.rule.common.engine.value;\n" +
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.DataEngineDataSetActuator;\n" +
"import com.muyu.rule.common.basic.abstracts.${parentClass};\n" +
"\n" +
"\n" +
"/**\n" +
@ -133,7 +143,7 @@ public class RuleEngineVersionController {
" * @Date2024/8/30 11:13\n" +
" */\n" +
"\n" +
"public class ${className} extends DataEngineDataSetActuator {\n" +
"public class ${className} extends ${parentClass} {\n" +
"\n" +
" @Override\n" +
" public void run() {\n" +
@ -159,6 +169,7 @@ public class RuleEngineVersionController {
"}\n";
String versionClass = template.replace("${className}", versionAddReq.getClassName());
versionClass = template.replace("${parentClass}",parentClass);
versionAddReq.setVersionClazz(versionClass);

View File

@ -118,7 +118,7 @@ public static final String importClassAndPackPath="home/lib/";
/**
*
*/
public static final String className_prefix = "com.muyu.rule.common.engine.value.";
public static final String className_prefix = "com.muyu.rule.common.engine.";
/**
* class
@ -126,7 +126,7 @@ public static final String importClassAndPackPath="home/lib/";
* @param versionClazz
*/
public static final String serverClassPath = "com/muyu/rule/common/engine/value/";
public static final String serverClassPath = "com/muyu/rule/common/engine/";
//todo

View File

@ -1,25 +0,0 @@
package com.muyu.rule.common.basic;
import com.muyu.rule.common.basic.handler.DataEngineHandler;
/**
* @Author
* @Packagecom.muyu.rule.server.basic
* @Projectcloud-etl-rule
* @nameBasicEngine
* @Date2024/8/29 14:29
*/
public interface BasicEngine<V> {
public void set(V dataValue);
public V get();
public default void remove(){
DataEngineHandler.remove();
}
public void execution();
}

View File

@ -1,39 +0,0 @@
package com.muyu.rule.common.basic.abstracts;
import com.muyu.common.domain.DataValue;
import com.muyu.rule.common.basic.BasicEngine;
import com.muyu.rule.common.basic.handler.DataEngineDataSetHandler;
import com.muyu.rule.common.basic.handler.DataEngineHandler;
/**
* @Author
* @Packagecom.muyu.rule.server.basic.abstracts
* @Projectcloud-etl-rule
* @nameDataEngineValueAu
* @Date2024/8/29 15:11
*/
public abstract class DataEngineDataSetActuator implements BasicEngine<DataValue[][]> {
public void setDataValue(String dataValue){
DataEngineHandler.set(dataValue);
}
public String getDataValue(){return DataEngineHandler.get();}
public void set(DataValue[][] dataValue){
DataEngineDataSetHandler.set(dataValue);
}
public DataValue[][] get(){
return DataEngineDataSetHandler.get();
}
@Override
public void execution() {
this.run();
this.remove();
}
public abstract void run();
}

View File

@ -1,32 +0,0 @@
package com.muyu.rule.common.basic.abstracts;
import com.muyu.common.domain.DataValue;
import com.muyu.rule.common.basic.BasicEngine;
import com.muyu.rule.common.basic.handler.DataEngineRowHandler;
/**
* @Author
* @Packagecom.muyu.rule.server.basic.abstracts
* @Projectcloud-etl-rule
* @nameDataEngineValueAu
* @Date2024/8/29 15:11
*/
public abstract class DataEngineRowActuator implements BasicEngine<DataValue[]> {
public void set(DataValue[] dataValue){
DataEngineRowHandler.set(dataValue);
}
public DataValue[] get(){
return DataEngineRowHandler.get();
}
@Override
public void execution() {
this.run();
this.remove();
}
public abstract void run();
}

View File

@ -1,33 +0,0 @@
package com.muyu.rule.common.basic.abstracts;
import com.muyu.common.domain.DataValue;
import com.muyu.rule.common.basic.BasicEngine;
import com.muyu.rule.common.basic.handler.DataEngineValueHandler;
/**
* @Author
* @Packagecom.muyu.rule.server.basic.abstracts
* @Projectcloud-etl-rule
* @nameDataEngineValueAu
* @Date2024/8/29 15:11
*/
public abstract class DataEngineValueActuator implements BasicEngine<DataValue> {
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();
}

View File

@ -1,21 +0,0 @@
package com.muyu.rule.common.basic.handler;
import com.muyu.common.domain.DataValue;
/**
* @Author
* @Packagecom.muyu.rule.server.basic.handler
* @Projectcloud-etl-rule
* @nameDataEngineValueHandler
* @Date2024/8/29 14:35
* @Description:
*/
public class DataEngineDataSetHandler {
public static void set(DataValue[][] dataDescribe){DataEngineHandler.set(dataDescribe);}
public static DataValue[][] get(){
return DataEngineHandler.get();
}
}

View File

@ -1,36 +0,0 @@
package com.muyu.rule.common.basic.handler;
/**
* @Author
* @Packagecom.muyu.rule.server.basic
* @Projectcloud-etl-rule
* @name
* @Date2024/8/29 14:21
*/
public class DataEngineHandler {
private static final ThreadLocal<Object> dataEngineHandler = new ThreadLocal<>();
public static void set(final Object handler){
dataEngineHandler.set(handler);
}
public static <T> T get(){
return (T) dataEngineHandler.get();
}
public static void remove(){
dataEngineHandler.remove();
}
}

View File

@ -1,20 +0,0 @@
package com.muyu.rule.common.basic.handler;
import com.muyu.common.domain.DataValue;
/**
* @Author
* @Packagecom.muyu.rule.server.basic.handler
* @Projectcloud-etl-rule
* @name/
* @Date2024/8/29 14:35
*/
public class DataEngineRowHandler {
public static void set(DataValue[] dataDescribe){DataEngineHandler.set(dataDescribe);}
public static DataValue[] get(){
return DataEngineHandler.get();
}
}

View File

@ -1,37 +0,0 @@
package com.muyu.rule.common.basic.handler;
import com.muyu.common.core.text.Convert;
import com.muyu.common.domain.DataValue;
/**
* @Author
* @Packagecom.muyu.rule.server.basic.handler
* @Projectcloud-etl-rule
* @name
* @Date2024/8/29 14:35
*/
public class DataEngineValueHandler {
public static void set(DataValue dataValue){
DataEngineHandler.set(dataValue);
}
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);
}
}

View File

@ -1,92 +0,0 @@
package com.muyu.rule.common.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.rule.common.domain.req.EtlRuleAddReq;
import com.muyu.rule.common.domain.req.EtlRuleUpdReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.function.Supplier;
/**
* @Author
* @Packagecom.muyu.damain
* @Projectcloud-etl
* @nameRule
* @Date2024/8/21 11:33
*/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "rule_engine",autoResultMap = true)
public class RuleEngine extends BaseEntity {
/**
*
*/
@TableId(value = "id" , type = IdType.AUTO)
private Long id ;
/** 规则名称 */
private String name ;
/** 规则类型 */
/** 引擎编码 */
private String code;
/** 规则作用域 */
private String regionName;
/** 是否公开 0已激活 1未激活 */
private String open;
/** 状态 0正常 1停用 */
private String status ;
/** 规则引擎描述 */
private String ruleDesc;
public static RuleEngine updBuild(EtlRuleUpdReq etlRule, Supplier<Long> longSupplier){
return RuleEngine.builder().id(longSupplier.get())
.open(etlRule.getOpen())
.name(etlRule.getName())
.regionName(etlRule.getRegionName())
.status(etlRule.getStatus())
.code(etlRule.getCode())
.remark(etlRule.getRemark())
.ruleDesc(etlRule.getRuleDesc())
.build();
}
public static RuleEngine addBuild(EtlRuleAddReq etlRule){
return RuleEngine.builder()
.open(etlRule.getOpen())
.name(etlRule.getName())
.regionName(etlRule.getRegionName())
.status(etlRule.getStatus())
.code(etlRule.getCode())
.ruleDesc(etlRule.getRuleDesc())
.remark(etlRule.getRemark())
.build();
}
}

View File

@ -1,91 +0,0 @@
package com.muyu.rule.common.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.rule.common.domain.req.VersionAddReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Author
* @Packagecom.muyu.rule.common.domain.resp
* @Projectcloud-etl-rule
* @nameRuleEngineVersion
* @Date2024/8/25 10:34
*/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "rule_engine_version",autoResultMap = true)
public class RuleEngineVersion extends BaseEntity {
/**
*
*/
@TableId(value = "id" , type = IdType.AUTO)
private Long id;
/**
*
*/
private String versionName;
/**
*
*/
private String className;
/**
*
*/
private String versionCode;
/**
*
*/
private String ruleId;
/**
*
*/
private String open;
/**
*
*/
private String versionDesc;
/**
* 0 1.
*/
private String status;
/**
*
*/
private String versionClazz;
public static RuleEngineVersion addBuild(VersionAddReq versionAddReq){
return RuleEngineVersion.builder()
.ruleId(versionAddReq.getRuleId())
.open(versionAddReq.getOpen())
.status(versionAddReq.getStatus())
.versionName(versionAddReq.getVersionName())
.versionCode(versionAddReq.getVersionCode())
.versionDesc(versionAddReq.getVersionDesc())
.versionClazz(versionAddReq.getVersionClazz())
.className(versionAddReq.getClassName())
.build();
}
}

View File

@ -1,28 +0,0 @@
package com.muyu.rule.common.domain;
import com.muyu.common.core.web.domain.BaseEntity;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author
* @Packagecom.muyu.rule.common.domain.resp
* @Projectcloud-etl-rule
* @nameRuleRegion
* @Date2024/8/23 9:03
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Tag(name = "规则作用域")
public class RuleRegion extends BaseEntity {
private Long regionId;
private String regionName;
}

View File

@ -1,48 +0,0 @@
package com.muyu.rule.common.domain.req;
import com.muyu.rule.common.utils.OssUtil;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Author
* @Packagecom.muyu.etl.common.domain.req
* @Projectcloud-etl
* @nameEtlRuleAddReq
* @Date2024/8/21 23:49
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Tag(name = "客户端规则添加请求对象")
public class EtlRuleAddReq {
/** 规则名称 */
private String name ;
/** 引擎编码 */
private String code;
/** 是否公开 0已激活 1未激活 */
private String open;
/** 规则作用域 */
private String regionName;
/** 状态 0正常 1停用 */
private String status ;
/** 规则引擎描述 */
private String ruleDesc;
/**
*
*/
private String remark;
}

View File

@ -1,42 +0,0 @@
package com.muyu.rule.common.domain.req;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Author
* @Packagecom.muyu.etl.common.domain.req
* @Projectcloud-etl
* @nameEtlRuleListReq
* @Date2024/8/21 21:42
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Tag(name = "客户端规则列表请求对象")
public class EtlRuleListReq {
/** 引擎编码 */
private String code;
/** 数据来源名称 */
private String name ;
/** 是否激活公开 Y已激活 N未激活 */
private String open ;
/** 状态 0正常 1停用 */
private String status ;
/** 规则引擎描述 */
private String ruleDesc;
}

View File

@ -1,50 +0,0 @@
package com.muyu.rule.common.domain.req;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Author
* @Packagecom.muyu.etl.common.domain.req
* @Projectcloud-etl
* @nameEtlRuleUpdReq
* @Date2024/8/21 23:48
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Tag(name = "客户端规则修改请求对象")
public class EtlRuleUpdReq {
/** 规则名称 */
private String name ;
/** 引擎编码 */
private String code;
/** 是否公开 0已激活 1未激活 */
private String open ;
/** 规则作用域 */
private String regionName;
/** 状态 0正常 1停用 */
private String status ;
/** 规则引擎描述 */
private String ruleDesc;
/**
*
*/
private String remark;
}

View File

@ -1,69 +0,0 @@
package com.muyu.rule.common.domain.req;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Author
* @Packagecom.muyu.rule.common.domain.req
* @Projectcloud-etl-rule
* @nameVersionAddReq
* @Date2024/8/26 9:47
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Tag(name = "规则版本添加请求对象")
public class VersionAddReq {
/**
*
*/
private String versionName;
/**
*
*/
private String className;
/**
*
*/
private String versionCode;
/**
*
*/
private String ruleId;
/**
*
*/
private String open;
/**
*
*/
private String versionDesc;
/**
* 0 1.
*/
private String status;
/**
*
*/
private String versionClazz;
/**
*
*/
private String remark;
}

View File

@ -1,92 +0,0 @@
package com.muyu.rule.common.domain.resp;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.rule.common.domain.RuleEngine;
import com.muyu.rule.common.domain.RuleEngineVersion;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* @Author
* @Packagecom.muyu.etl.common.domain.resp
* @Projectcloud-etl
* @nameEtlRuleResp
* @Date2024/8/21 21:57
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Tag(name = "规则信息相应对象", description = "负责规则信息查询的响应结果")
public class EtlRuleResp {
/**
*
*/
@TableId(value = "id" , type = IdType.AUTO)
private Long id ;
/** 规则名称 */
private String name ;
/** 引擎编码 */
private String code;
/** 规则作用域 */
private String regionName;
/** 状态 0正常 1停用 */
private String status ;
/** 是否激活 */
private String open ;
/** 规则引擎描述 */
private String ruleDesc;
@Schema(description = "创建人", defaultValue = "muyu", type = "String")
private String createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间", defaultValue = "2024-8-1 0:22:36", type = "Date")
private Date createTime;
List<RuleEngineVersion> versionList;
public static EtlRuleResp etlRuleRespBuilder(RuleEngine etlRule){
return EtlRuleResp.builder()
.id(etlRule.getId())
.code(etlRule.getCode())
.name(etlRule.getName())
.status(etlRule.getStatus())
.open(etlRule.getOpen())
.regionName(etlRule.getRegionName())
.ruleDesc(etlRule.getRuleDesc())
.createBy(etlRule.getCreateBy())
.createTime(etlRule.getCreateTime()).build();
}
}

View File

@ -1,27 +0,0 @@
package com.muyu.rule.common.engine.dataSet;
import com.muyu.common.domain.DataValue;
import com.muyu.rule.common.basic.abstracts.DataEngineDataSetActuator;
import com.muyu.rule.common.exception.DeliteException;
/**
* @Author
* @Packagecom.muyu.rule.server.basic.engine.row
* @Projectcloud-etl-rule
* @nameENGINE_ROW_HANG_R1
* @Date2024/8/30 11:13
*/
public class ENGINE_DataSet_asdf_S1 extends DataEngineDataSetActuator {
@Override
public void run() {
DataValue[][] dataValues = get();
if (dataValues == null || "".equals(dataValues) || "null".equals(dataValues)) {
throw new DeliteException();
}else {
System.out.println("数据检测无异常");
}
}
}

View File

@ -1,41 +0,0 @@
package com.muyu.rule.common.engine.dataSet;
import cn.hutool.core.util.DesensitizedUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.muyu.common.domain.DataValue;
import com.muyu.rule.common.basic.abstracts.DataEngineDataSetActuator;
/**
* @Author
* @Packagecom.muyu.rule.server.basic.engine.row
* @Projectcloud-etl-rule
* @name
* @Date2024/8/30 11:13
*/
public class ENGINE_DataSet_ytrrt_S2 extends DataEngineDataSetActuator {
@Override
public void run() {
DataValue[][] dataValues = get();
String dataValue = getDataValue();
JSONObject jsonObject = JSON.parseObject(dataValue);
String key = (String)jsonObject.get("key");
for (DataValue[] value : dataValues) {
for (DataValue dataValue1 : value) {
if (dataValue1.getKey().equals(key)){
dataValue1.setValue(DesensitizedUtil.mobilePhone((String) dataValue1.getValue()));
}
}
}
set(dataValues);
}
}

View File

@ -1,30 +0,0 @@
package com.muyu.rule.common.exception;
/**
* @Author
* @Packagecom.muyu.rule.server.exception
* @Projectcloud-etl-rule
* @nameActionDiscard
* @Date2024/8/26 22:08
*/
public class DeliteException extends RuntimeException {
public DeliteException() {
super();
}
public DeliteException(String message) {
super(message);
}
public DeliteException(String message, Throwable cause) {
super(message, cause);
}
public DeliteException(Throwable cause) {
super(cause);
}
protected DeliteException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}

View File

@ -1,271 +0,0 @@
package com.muyu.rule.common.utils;
import com.muyu.common.core.utils.StringUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
*/
public class Desensitization {
/**
*
*
* @param idCard
* @return
*/
public static String idCardDesensitization(String idCard) {
if (StringUtils.isNotEmpty(idCard)) {
// 身份证号脱敏规则一:保留前六后三
if (idCard.length() == 15) {
idCard = idCard.replaceAll("(\\w{6})\\w*(\\w{3})", "$1******$2");
} else if (idCard.length() == 18) {
idCard = idCard.replaceAll("(\\w{6})\\w*(\\w{3})", "$1*********$2");
}
// 身份证号脱敏规则二:保留前三后四
// idCard = idCard.replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*");
}
return idCard;
}
/**
*
* @param mobilePhone
* @return
*/
public static String mobilePhoneDesensitization(String mobilePhone) {
// 手机号码保留前三后四
if (StringUtils.isNotEmpty(mobilePhone)) {
mobilePhone = mobilePhone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
return mobilePhone;
}
/**
*
*
* @param email
* @return
*/
public static String emailDesensitization(String email) {
// 电子邮箱隐藏@前面的3个字符
if (StringUtils.isEmpty(email)) {
return email;
}
String encrypt = email.replaceAll("(\\w+)\\w{3}@(\\w+)", "$1***@$2");
if (email.equalsIgnoreCase(encrypt)) {
encrypt = email.replaceAll("(\\w*)\\w{1}@(\\w+)", "$1*@$2");
}
return encrypt;
}
/**
*
*
* @param acctNo
* @return
*/
public static String acctNoDesensitization(String acctNo) {
// 银行账号保留前六后四
if (StringUtils.isNotEmpty(acctNo)) {
String regex = "(\\w{6})(.*)(\\w{4})";
Matcher m = Pattern.compile(regex).matcher(acctNo);
if (m.find()) {
String rep = m.group(2);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < rep.length(); i++) {
sb.append("*");
}
acctNo = acctNo.replaceAll(rep, sb.toString());
}
}
return acctNo;
}
/**
*
*
* @param custName
* @return
*/
public static String custNameDesensitization(String custName) {
// 规则说明:
// 姓名字符长度小于5位企业名称字符长度大于等于5位。
// 姓名规则
// 规则一1个字则不脱敏如"张"-->"张"
// 规则二2个字则脱敏第二个字如"张三"-->"张*"
// 规则三3个字则脱敏第二个字如"张三丰"-->"张*丰"
// 规则四4个字则脱敏中间两个字如"易烊千玺"-->"易**玺"
// 企业名称规则:
// 从第4位开始隐藏最多隐藏6位。
if (StringUtils.isNotEmpty(custName)) {
char[] chars = custName.toCharArray();
if (chars.length < 5) {// 表示姓名
if (chars.length > 1) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < chars.length - 2; i++) {
sb.append("*");
}
custName = custName.replaceAll(custName.substring(1, chars.length - 1), sb.toString());
}
} else {// 企业名称
int start = 4;
// 第一部分
String str1 = custName.substring(0, start);
// 第二部分
String str2 = "";
if (chars.length == 5) {
str2 = "*";
} else if (chars.length == 6) {
str2 = "**";
} else if (chars.length == 7) {
str2 = "***";
} else if (chars.length == 8) {
str2 = "****";
} else if (chars.length == 9) {
str2 = "*****";
} else {
str2 = "******";
}
// 通过计算得到第三部分需要从第几个字符截取
int subIndex = start + str2.length();
// 第三部分
String str3 = custName.substring(subIndex);
StringBuffer sb = new StringBuffer();
sb.append(str1);
sb.append(str2);
sb.append(str3);
custName = sb.toString();
}
}
return custName;
}
/**
*
*
* @param address
* @return
*/
public static String addressDesensitization(String address) {
// 规则说明从第4位开始隐藏隐藏8位。
if (StringUtils.isNotEmpty(address)) {
char[] chars = address.toCharArray();
if (chars.length > 11) {// 由于需要从第4位开始隐藏8位因此数据长度必须大于11位
// 获取第一部分内容
String str1 = address.substring(0, 4);
// 获取第二部分
String str2 = "********";
// 获取第三部分
String str3 = address.substring(12);
StringBuffer sb = new StringBuffer();
sb.append(str1);
sb.append(str2);
sb.append(str3);
address = sb.toString();
}
}
return address;
}
//下面代码是从别人博客看到的。
/**
*
*/
public static final int ONE = 1;
public static final int TWO = 2;
/**
*
*
* @param realName
* @return
*/
public static String desensitizedName(String realName) {
if (realName == null) {
return null;
}
if (realName.length() == ONE) {
return realName;
} else if (realName.length() == TWO) {
return realName.substring(0, 1) +"*";
} else {
Integer length = realName.length();
StringBuffer middle = new StringBuffer();
for (int i = 0; i < realName.substring(1, length - 1).length(); i++) {
middle.append("*");
}
return realName.substring(0, 1) + middle + realName.substring(length - 1, length);
}
}
/**
*
*
* @param address
* @return
*/
public static String desensitizedAddress(String address){
//江西省宜春市丰城市剑南街道人才教育小区41号丰城住总运营有限公司-->江西省宜春市丰城市剑南街道人才教育小区*************
if (StringUtils.isNotEmpty(address)) {
int length = address.length();
int indes = address.indexOf("区");
if (indes == -1) {
indes = address.indexOf("市");
}
address = address.substring(0, indes + 1);
StringBuffer middle = new StringBuffer();
for (int i = 0; i < length - indes; i++) {
middle.append("*");
}
return address + middle;
}
return address;
}
/**
*
*
* @param origin
* @param prefixNoMaskLen
* @param suffixNoMaskLen
* @param maskStr , '*'
* @return
*/
public static String desValue(String origin, int prefixNoMaskLen, int suffixNoMaskLen, String maskStr) {
if (origin == null) {
return null;
}
StringBuilder sb = new StringBuilder();
for (int i = 0, n = origin.length(); i < n; i++) {
if (i < prefixNoMaskLen) {
sb.append(origin.charAt(i));
continue;
}
if (i > (n - suffixNoMaskLen - 1)) {
sb.append(origin.charAt(i));
continue;
}
sb.append(maskStr);
}
return sb.toString();
}
/**
* **
*
* @param fullName
* @return
*/
public static String chineseName(String fullName) {
if (fullName == null) {
return null;
}
return desValue(fullName, 0, 1, "*");
}
}

Binary file not shown.

View File

@ -1,231 +0,0 @@
package com.muyu.rule.common.utils;
import com.aliyun.oss.*;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.VoidResult;
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 AccessKeyaccessKeySecretAPI访 访
*/
private static String endPoint = "oss-cn-beijing.aliyuncs.com";
private static String accessKeyId = "LTAI5tRRrrYqiSXddVq7RvqW";
private static String accessKeySecret = "GhEg1LlHTOx4q0rxs1S3pCaSQayCVL";
private static String accessPre = "https://zcz-vfd-1000.oss-cn-beijing.aliyuncs.com/";
/**
* bucket
*
* @return
*/
private static String bucketName = "zcz-vfd-1000";
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;
}
/**
* 使FilePutObject ** 使
*
* @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;
}
/**
* OSS
*
* @param bucketName
* @param ossFilePath OSS
* @return
*/
public static String readFileContentFromOSS(String bucketName, String ossFilePath) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endPoint,accessKeyId,accessKeySecret);
try {
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, ossFilePath);
OSSObject ossObject = ossClient.getObject(getObjectRequest);
BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent()));
StringBuilder content = new StringBuilder();
String line=null;
while ((line = reader.readLine()) != null) {
content.append(line).append("\n");
}
return content.toString();
} catch (Exception e) {
e.printStackTrace();
return "读取失败:" + e.getMessage();
} finally {
// 关闭OSSClient。
ossClient.shutdown();
}
}
/**
* Oss
* @param fileName
*/
public static void ssss(String fileName){
try {
// 假设这是你的.class文件路径
String filePath = "/home/lib/com/muyu/rule/common/engine/value/"+fileName+".class";
ossClient.putObject(bucketName, fileName+".class", new File(filePath));
log.info("存储oss成功"+fileName+".class");
} catch (OSSException oe) {
System.err.println("存储失败: " + oe.getErrorCode() + oe.getErrorMessage());
} catch (ClientException ce) {
System.err.println("存储失败: " + ce.getErrorMessage());
}
}
public static void deliteOssClient(String key){
OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret);
VoidResult voidResult = ossClient.deleteBucket(key);
log.info(voidResult);
}
}