From b92a8cef2289764c89c1311f2beea5f66b727396 Mon Sep 17 00:00:00 2001
From: yaoxin <1752800946@qq.com>
Date: Thu, 2 May 2024 16:16:11 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E4=BA=86=E8=A7=84?=
=?UTF-8?q?=E5=88=99=E5=BC=95=E6=93=8E=E5=A2=9E=E5=88=A0=E6=94=B9=E6=9F=A5?=
=?UTF-8?q?,=E8=A7=84=E5=88=99=E5=BC=95=E6=93=8E=E5=88=9D=E5=A7=8B?=
=?UTF-8?q?=E5=8C=96,=E6=B5=8B=E8=AF=95=E8=B0=83=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../file/controller/SysFileController.java | 1 +
muyu-modules/muyu-rule-engine/pom.xml | 84 ++++++++
.../src/main/java/com/muyu/Main.java | 7 +
.../ClassLoading/CustomClassLoader.java | 54 +++++
.../engine/MuYuRuleEngineApplication.java | 22 ++
.../EngineMaintenanceController.java | 111 ++++++++++
.../rule/engine/domain/EngineMaintenance.java | 152 ++++++++++++++
.../mapper/EngineMaintenanceMapper.java | 61 ++++++
.../service/IEngineMaintenanceService.java | 67 ++++++
.../impl/EngineMaintenanceServiceImpl.java | 192 ++++++++++++++++++
.../src/main/resources/banner.txt | 2 +
.../src/main/resources/bootstrap.yml | 28 +++
.../src/main/resources/logback.xml | 74 +++++++
.../ruleEngine/EngineMaintenanceMapper.xml | 111 ++++++++++
muyu-modules/pom.xml | 1 +
15 files changed, 967 insertions(+)
create mode 100644 muyu-modules/muyu-rule-engine/pom.xml
create mode 100644 muyu-modules/muyu-rule-engine/src/main/java/com/muyu/Main.java
create mode 100644 muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/ClassLoading/CustomClassLoader.java
create mode 100644 muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/MuYuRuleEngineApplication.java
create mode 100644 muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/controller/EngineMaintenanceController.java
create mode 100644 muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/domain/EngineMaintenance.java
create mode 100644 muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/mapper/EngineMaintenanceMapper.java
create mode 100644 muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/service/IEngineMaintenanceService.java
create mode 100644 muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/service/impl/EngineMaintenanceServiceImpl.java
create mode 100644 muyu-modules/muyu-rule-engine/src/main/resources/banner.txt
create mode 100644 muyu-modules/muyu-rule-engine/src/main/resources/bootstrap.yml
create mode 100644 muyu-modules/muyu-rule-engine/src/main/resources/logback.xml
create mode 100644 muyu-modules/muyu-rule-engine/src/main/resources/mapper/ruleEngine/EngineMaintenanceMapper.xml
diff --git a/muyu-modules/muyu-file/src/main/java/com/muyu/file/controller/SysFileController.java b/muyu-modules/muyu-file/src/main/java/com/muyu/file/controller/SysFileController.java
index 5f5ce31..fc43f45 100644
--- a/muyu-modules/muyu-file/src/main/java/com/muyu/file/controller/SysFileController.java
+++ b/muyu-modules/muyu-file/src/main/java/com/muyu/file/controller/SysFileController.java
@@ -23,6 +23,7 @@ public class SysFileController {
@Autowired
private ISysFileService sysFileService;
+
/**
* 文件上传请求
*/
diff --git a/muyu-modules/muyu-rule-engine/pom.xml b/muyu-modules/muyu-rule-engine/pom.xml
new file mode 100644
index 0000000..ff363f4
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/pom.xml
@@ -0,0 +1,84 @@
+
+
+ 4.0.0
+
+ com.muyu
+ muyu-modules
+ 3.6.3
+
+
+ muyu-rule-engine
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+
+ io.springfox
+ springfox-swagger-ui
+ ${swagger.fox.version}
+
+
+
+
+ com.mysql
+ mysql-connector-j
+
+
+
+
+ com.muyu
+ muyu-common-datasource
+
+
+
+
+ com.muyu
+ muyu-common-datascope
+
+
+
+
+ com.muyu
+ muyu-common-log
+
+
+
+
+ com.muyu
+ muyu-common-swagger
+
+
+
+
+
\ No newline at end of file
diff --git a/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/Main.java b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/Main.java
new file mode 100644
index 0000000..95690d4
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/Main.java
@@ -0,0 +1,7 @@
+package com.muyu;
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello world!");
+ }
+}
\ No newline at end of file
diff --git a/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/ClassLoading/CustomClassLoader.java b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/ClassLoading/CustomClassLoader.java
new file mode 100644
index 0000000..f55d914
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/ClassLoading/CustomClassLoader.java
@@ -0,0 +1,54 @@
+package com.muyu.rule.engine.ClassLoading;
+
+import java.io.*;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+/**
+ * @ClassName CustomClassLoader
+ * @Description 描述
+ * @Author Xin.Yao
+ * @Date 2024/5/1 19:37
+ */
+public class CustomClassLoader extends URLClassLoader {
+ public CustomClassLoader(ClassLoader parent, String classPath) throws MalformedURLException {
+ super(new URL[]{new URL("file:" + classPath)},parent);
+ }
+
+ @Override
+ protected Class> findClass(String name) throws ClassNotFoundException {
+ try {
+ byte[] classBytes = loadClassData(name);
+ return defineClass(name, classBytes, 0, classBytes.length);
+ } catch (IOException e) {
+ throw new ClassNotFoundException(name, e);
+ }
+ }
+
+ private byte[] loadClassData(String className) throws IOException {
+ String fileName = className.replace('.', File.separatorChar) + ".class";
+ File classFile = new File(getPathForResource(fileName));
+ if (!classFile.exists()) {
+ throw new FileNotFoundException("Class file not found: " + classFile.getAbsolutePath());
+ }
+
+ try (InputStream in = new FileInputStream(classFile)) {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ byte[] buffer = new byte[4096];
+ int n;
+ while ((n = in.read(buffer)) != -1) {
+ out.write(buffer, 0, n);
+ }
+ return out.toByteArray();
+ }
+ }
+
+ private String getPathForResource(String resource) {
+ URL url = super.getResource(resource);
+ if (url == null) {
+ throw new IllegalArgumentException("Resource not found: " + resource);
+ }
+ return url.getPath();
+ }
+}
diff --git a/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/MuYuRuleEngineApplication.java b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/MuYuRuleEngineApplication.java
new file mode 100644
index 0000000..df531c7
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/MuYuRuleEngineApplication.java
@@ -0,0 +1,22 @@
+package com.muyu.rule.engine;
+
+import com.muyu.common.security.annotation.EnableCustomConfig;
+import com.muyu.common.security.annotation.EnableMyFeignClients;
+import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * 系统模块
+ *
+ * @author muyu
+ */
+@EnableCustomConfig
+@EnableCustomSwagger2
+@EnableMyFeignClients
+@SpringBootApplication
+public class MuYuRuleEngineApplication {
+ public static void main (String[] args) {
+ SpringApplication.run(MuYuRuleEngineApplication.class, args);
+ }
+}
diff --git a/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/controller/EngineMaintenanceController.java b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/controller/EngineMaintenanceController.java
new file mode 100644
index 0000000..4d5eb34
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/controller/EngineMaintenanceController.java
@@ -0,0 +1,111 @@
+package com.muyu.rule.engine.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.muyu.common.log.annotation.Log;
+import com.muyu.common.log.enums.BusinessType;
+import com.muyu.common.security.annotation.RequiresPermissions;
+import com.muyu.rule.engine.domain.EngineMaintenance;
+import com.muyu.rule.engine.service.IEngineMaintenanceService;
+import com.muyu.common.core.web.controller.BaseController;
+import com.muyu.common.core.domain.Result;
+import com.muyu.common.core.utils.poi.ExcelUtil;
+import com.muyu.common.core.web.page.TableDataInfo;
+
+/**
+ * 【请填写功能名称】Controller
+ *
+ * @author ruoyi
+ * @date 2024-05-02
+ */
+@RestController
+@RequestMapping("/maintenance")
+public class EngineMaintenanceController extends BaseController
+{
+ @Autowired
+ private IEngineMaintenanceService engineMaintenanceService;
+
+ /**
+ * 查询【请填写功能名称】列表
+ */
+ @GetMapping("/list")
+ public Result> list(EngineMaintenance engineMaintenance)
+ {
+ startPage();
+ List list = engineMaintenanceService.selectEngineMaintenanceList(engineMaintenance);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出【请填写功能名称】列表
+ */
+ @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, EngineMaintenance engineMaintenance)
+ {
+ List list = engineMaintenanceService.selectEngineMaintenanceList(engineMaintenance);
+ ExcelUtil util = new ExcelUtil(EngineMaintenance.class);
+ util.exportExcel(response, list, "【请填写功能名称】数据");
+ }
+
+ /**
+ * 获取【请填写功能名称】详细信息
+ */
+ @GetMapping(value = "/{id}")
+ public Result getInfo(@PathVariable("id") Long id)
+ {
+ return success(engineMaintenanceService.selectEngineMaintenanceById(id));
+ }
+
+ /**
+ * 测试方法
+ * @param code
+ * @return
+ */
+ @GetMapping(value = "/TestMethod")
+ public Result testMethod(@RequestParam("code") String code)
+ {
+ return engineMaintenanceService.testMethod(code);
+ }
+
+ /**
+ * 新增【请填写功能名称】
+ */
+ @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
+ @PostMapping
+ public Result add(@RequestBody EngineMaintenance engineMaintenance)
+ {
+ return toAjax(engineMaintenanceService.insertEngineMaintenance(engineMaintenance));
+ }
+
+ /**
+ * 初始化规则引擎类
+ */
+ @PostMapping("/InitializeRuleEngine")
+ public Result initializeRuleEngine(@RequestBody EngineMaintenance engineMaintenance)
+ {
+ return engineMaintenanceService.initializeRuleEngine(engineMaintenance);
+ }
+
+ /**
+ * 修改【请填写功能名称】
+ */
+ @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public Result edit(@RequestBody EngineMaintenance engineMaintenance)
+ {
+ return toAjax(engineMaintenanceService.updateEngineMaintenance(engineMaintenance));
+ }
+
+ /**
+ * 删除【请填写功能名称】
+ */
+ @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public Result remove(@PathVariable Long[] ids)
+ {
+ return toAjax(engineMaintenanceService.deleteEngineMaintenanceByIds(ids));
+ }
+}
diff --git a/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/domain/EngineMaintenance.java b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/domain/EngineMaintenance.java
new file mode 100644
index 0000000..ed7067e
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/domain/EngineMaintenance.java
@@ -0,0 +1,152 @@
+package com.muyu.rule.engine.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.muyu.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.BaseEntity;
+
+/**
+ * 【请填写功能名称】对象 engine_maintenance
+ *
+ * @author ruoyi
+ * @date 2024-05-02
+ */
+public class EngineMaintenance extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long id;
+
+ /** 规则引擎名称 */
+ @Excel(name = "规则引擎名称")
+ private String name;
+
+ /** 规则引擎类型 */
+ @Excel(name = "规则引擎类型")
+ private String type;
+
+ /** 规则引擎激活状态 */
+ @Excel(name = "规则引擎激活状态")
+ private String isActivate;
+
+ /** 规则引擎状态 */
+ @Excel(name = "规则引擎状态")
+ private String status;
+
+ /** 规则引擎描述 */
+ @Excel(name = "规则引擎描述")
+ private String description;
+
+ /** 规则引擎编码 */
+ @Excel(name = "规则引擎编码")
+ private String code;
+
+ /** 规则引擎级别 */
+ @Excel(name = "规则引擎级别")
+ private String level;
+
+ /** 编辑代码文本 */
+ @Excel(name = "编辑代码文本")
+ private String codeText;
+
+ public String getCodeText() {
+ return codeText;
+ }
+
+ public void setCodeText(String codeText) {
+ this.codeText = codeText;
+ }
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+ public void setType(String type)
+ {
+ this.type = type;
+ }
+
+ public String getType()
+ {
+ return type;
+ }
+ public void setIsActivate(String isActivate)
+ {
+ this.isActivate = isActivate;
+ }
+
+ public String getIsActivate()
+ {
+ return isActivate;
+ }
+ public void setStatus(String status)
+ {
+ this.status = status;
+ }
+
+ public String getStatus()
+ {
+ return status;
+ }
+ public void setDescription(String description)
+ {
+ this.description = description;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+ public void setCode(String code)
+ {
+ this.code = code;
+ }
+
+ public String getCode()
+ {
+ return code;
+ }
+ public void setLevel(String level)
+ {
+ this.level = level;
+ }
+
+ public String getLevel()
+ {
+ return level;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("name", getName())
+ .append("type", getType())
+ .append("isActivate", getIsActivate())
+ .append("status", getStatus())
+ .append("description", getDescription())
+ .append("code", getCode())
+ .append("level", getLevel())
+ .append("codeText", getCodeText())
+ .append("remark", getRemark())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/mapper/EngineMaintenanceMapper.java b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/mapper/EngineMaintenanceMapper.java
new file mode 100644
index 0000000..023da43
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/mapper/EngineMaintenanceMapper.java
@@ -0,0 +1,61 @@
+package com.muyu.rule.engine.mapper;
+
+import java.util.List;
+import com.muyu.rule.engine.domain.EngineMaintenance;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-05-02
+ */
+public interface EngineMaintenanceMapper
+{
+ /**
+ * 查询【请填写功能名称】
+ *
+ * @param id 【请填写功能名称】主键
+ * @return 【请填写功能名称】
+ */
+ public EngineMaintenance selectEngineMaintenanceById(Long id);
+
+ /**
+ * 查询【请填写功能名称】列表
+ *
+ * @param engineMaintenance 【请填写功能名称】
+ * @return 【请填写功能名称】集合
+ */
+ public List selectEngineMaintenanceList(EngineMaintenance engineMaintenance);
+
+ /**
+ * 新增【请填写功能名称】
+ *
+ * @param engineMaintenance 【请填写功能名称】
+ * @return 结果
+ */
+ public int insertEngineMaintenance(EngineMaintenance engineMaintenance);
+
+ /**
+ * 修改【请填写功能名称】
+ *
+ * @param engineMaintenance 【请填写功能名称】
+ * @return 结果
+ */
+ public int updateEngineMaintenance(EngineMaintenance engineMaintenance);
+
+ /**
+ * 删除【请填写功能名称】
+ *
+ * @param id 【请填写功能名称】主键
+ * @return 结果
+ */
+ public int deleteEngineMaintenanceById(Long id);
+
+ /**
+ * 批量删除【请填写功能名称】
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteEngineMaintenanceByIds(Long[] ids);
+}
diff --git a/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/service/IEngineMaintenanceService.java b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/service/IEngineMaintenanceService.java
new file mode 100644
index 0000000..a1dc534
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/service/IEngineMaintenanceService.java
@@ -0,0 +1,67 @@
+package com.muyu.rule.engine.service;
+
+import java.util.List;
+
+import com.muyu.common.core.domain.Result;
+import com.muyu.rule.engine.domain.EngineMaintenance;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author ruoyi
+ * @date 2024-05-02
+ */
+public interface IEngineMaintenanceService
+{
+ /**
+ * 查询【请填写功能名称】
+ *
+ * @param id 【请填写功能名称】主键
+ * @return 【请填写功能名称】
+ */
+ public EngineMaintenance selectEngineMaintenanceById(Long id);
+
+ /**
+ * 查询【请填写功能名称】列表
+ *
+ * @param engineMaintenance 【请填写功能名称】
+ * @return 【请填写功能名称】集合
+ */
+ public List selectEngineMaintenanceList(EngineMaintenance engineMaintenance);
+
+ /**
+ * 新增【请填写功能名称】
+ *
+ * @param engineMaintenance 【请填写功能名称】
+ * @return 结果
+ */
+ public int insertEngineMaintenance(EngineMaintenance engineMaintenance);
+
+ /**
+ * 修改【请填写功能名称】
+ *
+ * @param engineMaintenance 【请填写功能名称】
+ * @return 结果
+ */
+ public int updateEngineMaintenance(EngineMaintenance engineMaintenance);
+
+ /**
+ * 批量删除【请填写功能名称】
+ *
+ * @param ids 需要删除的【请填写功能名称】主键集合
+ * @return 结果
+ */
+ public int deleteEngineMaintenanceByIds(Long[] ids);
+
+ /**
+ * 删除【请填写功能名称】信息
+ *
+ * @param id 【请填写功能名称】主键
+ * @return 结果
+ */
+ public int deleteEngineMaintenanceById(Long id);
+
+ Result initializeRuleEngine(EngineMaintenance engineMaintenance);
+
+ Result testMethod(String code);
+}
diff --git a/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/service/impl/EngineMaintenanceServiceImpl.java b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/service/impl/EngineMaintenanceServiceImpl.java
new file mode 100644
index 0000000..89abd5b
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/src/main/java/com/muyu/rule/engine/service/impl/EngineMaintenanceServiceImpl.java
@@ -0,0 +1,192 @@
+package com.muyu.rule.engine.service.impl;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.List;
+
+import com.muyu.common.core.domain.Result;
+import com.muyu.common.core.utils.DateUtils;
+import com.muyu.common.security.utils.SecurityUtils;
+import com.muyu.rule.engine.ClassLoading.CustomClassLoader;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.muyu.rule.engine.mapper.EngineMaintenanceMapper;
+import com.muyu.rule.engine.domain.EngineMaintenance;
+import com.muyu.rule.engine.service.IEngineMaintenanceService;
+
+import javax.tools.JavaCompiler;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-05-02
+ */
+@Service
+@Log4j2
+public class EngineMaintenanceServiceImpl implements IEngineMaintenanceService
+{
+ @Autowired
+ private EngineMaintenanceMapper engineMaintenanceMapper;
+
+ /**
+ * 查询【请填写功能名称】
+ *
+ * @param id 【请填写功能名称】主键
+ * @return 【请填写功能名称】
+ */
+ @Override
+ public EngineMaintenance selectEngineMaintenanceById(Long id)
+ {
+ return engineMaintenanceMapper.selectEngineMaintenanceById(id);
+ }
+
+ /**
+ * 查询【请填写功能名称】列表
+ *
+ * @param engineMaintenance 【请填写功能名称】
+ * @return 【请填写功能名称】
+ */
+ @Override
+ public List selectEngineMaintenanceList(EngineMaintenance engineMaintenance)
+ {
+ return engineMaintenanceMapper.selectEngineMaintenanceList(engineMaintenance);
+ }
+
+ /**
+ * 新增【请填写功能名称】
+ *
+ * @param engineMaintenance 【请填写功能名称】
+ * @return 结果
+ */
+ @Override
+ public int insertEngineMaintenance(EngineMaintenance engineMaintenance)
+ {
+ String className = "Rule"+Character.toUpperCase(engineMaintenance.getCode().charAt(0)) + engineMaintenance.getCode().substring(1)+"Class";
+ engineMaintenance.setCreateTime(DateUtils.getNowDate());
+ engineMaintenance.setCreateBy(SecurityUtils.getUsername());
+ engineMaintenance.setCodeText("package com.muyu.rule.engine.domain;\n\n\n"+
+ "public class " + className + " {\n" +
+ "}");
+ return engineMaintenanceMapper.insertEngineMaintenance(engineMaintenance);
+ }
+
+ /**
+ * 修改【请填写功能名称】
+ *
+ * @param engineMaintenance 【请填写功能名称】
+ * @return 结果
+ */
+ @Override
+ public int updateEngineMaintenance(EngineMaintenance engineMaintenance)
+ {
+ engineMaintenance.setUpdateTime(DateUtils.getNowDate());
+ engineMaintenance.setUpdateBy(SecurityUtils.getUsername());
+ return engineMaintenanceMapper.updateEngineMaintenance(engineMaintenance);
+ }
+
+ /**
+ * 批量删除【请填写功能名称】
+ *
+ * @param ids 需要删除的【请填写功能名称】主键
+ * @return 结果
+ */
+ @Override
+ public int deleteEngineMaintenanceByIds(Long[] ids)
+ {
+ return engineMaintenanceMapper.deleteEngineMaintenanceByIds(ids);
+ }
+
+ /**
+ * 删除【请填写功能名称】信息
+ *
+ * @param id 【请填写功能名称】主键
+ * @return 结果
+ */
+ @Override
+ public int deleteEngineMaintenanceById(Long id)
+ {
+ return engineMaintenanceMapper.deleteEngineMaintenanceById(id);
+ }
+
+ @Override
+ public Result initializeRuleEngine(EngineMaintenance engineMaintenance) {
+ try {
+ //创建源文件
+ String className = "Rule"+Character.toUpperCase(engineMaintenance.getCode().charAt(0)) + engineMaintenance.getCode().substring(1)+"Class";
+ // 源文件路径和名称
+ String javaPath = "D:\\work\\ruoyi-cloud-server\\muyu-modules\\muyu-rule-engine\\src\\main\\java\\com\\muyu\\rule\\engine\\domain\\";
+ String classPath = "D:\\work\\ruoyi-cloud-server\\muyu-modules\\muyu-rule-engine\\target\\classes\\";
+ String filename = javaPath+className+".java";
+ File file = new File(filename);
+ // 确保源文件所在的目录存在
+ File fileParent = file.getParentFile();
+
+ if (!fileParent.exists()) {
+ fileParent.mkdir();
+ }
+ // 确保源文件存在,如果已存在则先删除再创建
+ if (file.exists()) {
+ file.delete(); // 删除存在的文件
+ }
+ file.createNewFile();
+ // 将源代码写入文件
+ FileWriter fw = new FileWriter(file);
+ fw.write(engineMaintenance.getCodeText());
+ fw.flush();
+ fw.close();
+ // 使用JavaCompiler 编译java文件
+ // 获取系统Java编译器
+ JavaCompiler jc = ToolProvider.getSystemJavaCompiler();
+ // 获取标准文件管理器
+ StandardJavaFileManager fileManager = jc.getStandardFileManager(null, null, null);
+ // 获取要编译的文件对象
+ Iterable fileObjects = fileManager.getJavaFileObjects(filename);
+ // 设置编译选项,指定输出目录
+ List options = Arrays.asList("-d", classPath);
+ // 创建编译任务
+ JavaCompiler.CompilationTask cTask = jc.getTask(null, fileManager, null, options, null, fileObjects);
+ // 执行编译任务
+ Boolean call = cTask.call();
+ // 关闭文件管理器
+ fileManager.close();
+ if (call){
+ return Result.success("初始化成功");
+ }
+ }catch (Exception e){
+ log.error(e.getMessage());
+ Result.error("初始化失败");
+ }
+ return Result.error("初始化失败");
+ }
+
+ @Override
+ public Result testMethod(String code) {
+ String className = "Rule"+Character.toUpperCase(code.charAt(0)) + code.substring(1)+"Class";
+ String classPath = "D:\\work\\ruoyi-cloud-server\\muyu-modules\\muyu-rule-engine\\target\\classes\\";
+ try {
+ // 使用CustomClassLoader加载class到内存
+ CustomClassLoader customClassLoader = new CustomClassLoader(ClassLoader.getSystemClassLoader(), classPath);
+ // 加载类
+ Class> aClass = customClassLoader.loadClass("com.muyu.rule.engine.domain."+className);
+ // 实例化类
+ Object obj = aClass.newInstance();
+ //获取类中所有方法
+ Method[] methods = aClass.getDeclaredMethods();
+ for (Method method : methods) {
+ method.invoke(obj);
+ }
+ customClassLoader = null;
+ } catch (Exception e) {
+ log.error(e.getMessage());
+ Result.error("测试失败");
+ }
+
+ return Result.success("测试成功");
+ }
+}
diff --git a/muyu-modules/muyu-rule-engine/src/main/resources/banner.txt b/muyu-modules/muyu-rule-engine/src/main/resources/banner.txt
new file mode 100644
index 0000000..0dd5eee
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/src/main/resources/banner.txt
@@ -0,0 +1,2 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
diff --git a/muyu-modules/muyu-rule-engine/src/main/resources/bootstrap.yml b/muyu-modules/muyu-rule-engine/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..f8e1775
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/src/main/resources/bootstrap.yml
@@ -0,0 +1,28 @@
+# Tomcat
+server:
+ port: 9205
+
+# Spring
+spring:
+ application:
+ # 应用名称
+ name: muyu-ruleEngine
+ profiles:
+ # 环境配置
+ active: dev
+ cloud:
+ nacos:
+ discovery:
+ # 服务注册地址
+ server-addr: 43.142.44.217:8848
+ config:
+ # 配置中心地址
+ server-addr: 43.142.44.217:8848
+ # 配置文件格式
+ file-extension: yml
+ # 共享配置
+ shared-configs:
+ - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+logging:
+ level:
+ com.muyu.rule.engine.mapper: DEBUG
diff --git a/muyu-modules/muyu-rule-engine/src/main/resources/logback.xml b/muyu-modules/muyu-rule-engine/src/main/resources/logback.xml
new file mode 100644
index 0000000..aa340cd
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/src/main/resources/logback.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+ ${log.pattern}
+
+
+
+
+
+ ${log.path}/info.log
+
+
+
+ ${log.path}/info.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ INFO
+
+ ACCEPT
+
+ DENY
+
+
+
+
+ ${log.path}/error.log
+
+
+
+ ${log.path}/error.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ ERROR
+
+ ACCEPT
+
+ DENY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/muyu-modules/muyu-rule-engine/src/main/resources/mapper/ruleEngine/EngineMaintenanceMapper.xml b/muyu-modules/muyu-rule-engine/src/main/resources/mapper/ruleEngine/EngineMaintenanceMapper.xml
new file mode 100644
index 0000000..854ef1f
--- /dev/null
+++ b/muyu-modules/muyu-rule-engine/src/main/resources/mapper/ruleEngine/EngineMaintenanceMapper.xml
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, name, type, is_activate, status, description, code, level,code_text, remark, create_by, create_time, update_by, update_time from engine_maintenance
+
+
+
+
+
+
+
+ insert into engine_maintenance
+
+ name,
+ type,
+ is_activate,
+ status,
+ description,
+ code,
+ level,
+ code_text,
+ remark,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+
+
+ #{name},
+ #{type},
+ #{isActivate},
+ #{status},
+ #{description},
+ #{code},
+ #{level},
+ #{codeText},
+ #{remark},
+ #{createBy},
+ #{createTime},
+ #{updateBy},
+ #{updateTime},
+
+
+
+
+ update engine_maintenance
+
+ name = #{name},
+ type = #{type},
+ is_activate = #{isActivate},
+ status = #{status},
+ description = #{description},
+ code = #{code},
+ level = #{level},
+ code_text = #{codeText},
+ remark = #{remark},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+
+ where id = #{id}
+
+
+
+ delete from engine_maintenance where id = #{id}
+
+
+
+ delete from engine_maintenance where id in
+
+ #{id}
+
+
+
\ No newline at end of file
diff --git a/muyu-modules/pom.xml b/muyu-modules/pom.xml
index 931eb34..98b01f8 100644
--- a/muyu-modules/pom.xml
+++ b/muyu-modules/pom.xml
@@ -14,6 +14,7 @@
muyu-job
muyu-file
muyu-etl
+ muyu-rule-engine
muyu-modules