From b0651a83bb1ec3ce8b079c7979fe8324f7ef29f6 Mon Sep 17 00:00:00 2001
From: D <3066417822@qq.com>
Date: Thu, 7 Mar 2024 15:01:29 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E5=88=9B=E5=BB=BA=E8=A1=A8=E7=BB=93=E6=9E=84=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/ruoyi/common/constant/Constants.java | 9 ++--
ruoyi-generator/pom.xml | 18 +++----
.../generator/controller/GenController.java | 49 ++++++++++++++++++-
.../generator/mapper/GenTableMapper.java | 11 ++++-
.../service/GenTableServiceImpl.java | 15 ++++--
.../generator/service/IGenTableService.java | 13 +++--
.../mapper/generator/GenTableMapper.xml | 4 ++
7 files changed, 96 insertions(+), 23 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
index 355851f..45c4b9d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
@@ -7,8 +7,7 @@ import io.jsonwebtoken.Claims;
*
* @author ruoyi
*/
-public class Constants
-{
+public class Constants {
/**
* UTF-8 字符集
*/
@@ -162,6 +161,8 @@ public class Constants
/**
* 定时任务违规的字符
*/
- public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
- "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config" };
+ public static final String[] JOB_ERROR_STR = {
+ "java.net.URL", "javax.naming.InitialContext",
+ "org.yaml.snakeyaml", "org.springframework", "org.apache",
+ "com.ruoyi.common.utils.file", "com.ruoyi.common.config", "com.ruoyi.generator" };
}
diff --git a/ruoyi-generator/pom.xml b/ruoyi-generator/pom.xml
index 18f0576..0a3187c 100644
--- a/ruoyi-generator/pom.xml
+++ b/ruoyi-generator/pom.xml
@@ -1,7 +1,7 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
ruoyi
com.ruoyi
@@ -23,18 +23,18 @@
velocity-engine-core
-
-
- commons-collections
- commons-collections
-
-
com.ruoyi
ruoyi-common
+
+
+ com.alibaba
+ druid-spring-boot-3-starter
+
+
-
+
\ No newline at end of file
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
index 9d106b4..a30b939 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
@@ -4,7 +4,7 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-
+import java.util.ArrayList;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -18,6 +18,10 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import com.alibaba.druid.DbType;
+import com.alibaba.druid.sql.SQLUtils;
+import com.alibaba.druid.sql.ast.SQLStatement;
+import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
@@ -29,6 +33,8 @@ import com.ruoyi.generator.domain.GenTable;
import com.ruoyi.generator.domain.GenTableColumn;
import com.ruoyi.generator.service.IGenTableColumnService;
import com.ruoyi.generator.service.IGenTableService;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.sql.SqlUtil;
import jakarta.servlet.http.HttpServletResponse;
@@ -107,10 +113,49 @@ public class GenController extends BaseController {
String[] tableNames = Convert.toStrArray(tables);
// 查询表信息
List tableList = genTableService.selectDbTableListByNames(tableNames);
- genTableService.importGenTable(tableList);
+ genTableService.importGenTable(tableList, SecurityUtils.getUsername());
return success();
}
+ /**
+ * 创建表结构(保存)
+ */
+ @PreAuthorize("@ss.hasRole('admin')")
+ @Log(title = "创建表", businessType = BusinessType.OTHER)
+ @PostMapping("/createTable")
+ public AjaxResult createTableSave(String sql)
+ {
+ try
+ {
+ SqlUtil.filterKeyword(sql);
+ List sqlStatements = SQLUtils.parseStatements(sql, DbType.mysql);
+ List tableNames = new ArrayList<>();
+ for (SQLStatement sqlStatement : sqlStatements)
+ {
+ if (sqlStatement instanceof MySqlCreateTableStatement)
+ {
+ MySqlCreateTableStatement createTableStatement = (MySqlCreateTableStatement) sqlStatement;
+ if (genTableService.createTable(createTableStatement.toString()))
+ {
+ String tableName = createTableStatement.getTableName().replaceAll("`", "");
+ tableNames.add(tableName);
+ }
+ }
+ }
+ List tableList = genTableService.selectDbTableListByNames(tableNames.toArray(new String[tableNames.size()]));
+ String operName = SecurityUtils.getUsername();
+ genTableService.importGenTable(tableList, operName);
+ return AjaxResult.success();
+ }
+ catch (Exception e)
+ {
+ logger.error(e.getMessage(), e);
+ return AjaxResult.error("创建表结构异常");
+ }
+ }
+
+
+
/**
* 修改保存代码生成业务
*/
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
index 9b330df..9bc3ab5 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
@@ -8,8 +8,7 @@ import com.ruoyi.generator.domain.GenTable;
*
* @author ruoyi
*/
-public interface GenTableMapper
-{
+public interface GenTableMapper {
/**
* 查询业务列表
*
@@ -80,4 +79,12 @@ public interface GenTableMapper
* @return 结果
*/
public int deleteGenTableByIds(Long[] ids);
+
+ /**
+ * 创建表
+ *
+ * @param sql 表结构
+ * @return 结果
+ */
+ public int createTable(String sql);
}
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
index 3b9de65..c320f7f 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
@@ -28,7 +28,6 @@ import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.text.CharsetKit;
import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.generator.constant.GenConstants;
import com.ruoyi.generator.domain.GenTable;
@@ -142,6 +141,17 @@ public class GenTableServiceImpl implements IGenTableService {
genTableColumnMapper.deleteGenTableColumnByIds(tableIds);
}
+ /**
+ * 创建表
+ *
+ * @param sql 创建表语句
+ * @return 结果
+ */
+ @Override
+ public boolean createTable(String sql) {
+ return genTableMapper.createTable(sql) == 0;
+ }
+
/**
* 导入表结构
*
@@ -149,8 +159,7 @@ public class GenTableServiceImpl implements IGenTableService {
*/
@Override
@Transactional
- public void importGenTable(List tableList) {
- String operName = SecurityUtils.getUsername();
+ public void importGenTable(List tableList, String operName) {
try {
for (GenTable table : tableList) {
String tableName = table.getTableName();
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
index 9d53f95..dafe39a 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
@@ -9,8 +9,7 @@ import com.ruoyi.generator.domain.GenTable;
*
* @author ruoyi
*/
-public interface IGenTableService
-{
+public interface IGenTableService {
/**
* 查询业务列表
*
@@ -66,12 +65,20 @@ public interface IGenTableService
*/
public void deleteGenTableByIds(Long[] tableIds);
+ /**
+ * 创建表
+ *
+ * @param sql 创建表语句
+ * @return 结果
+ */
+ public boolean createTable(String sql);
+
/**
* 导入表结构
*
* @param tableList 导入表列表
*/
- public void importGenTable(List tableList);
+ public void importGenTable(List tableList, String operName);
/**
* 预览代码
diff --git a/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
index 3f2d8eb..5bc7ccf 100644
--- a/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
+++ b/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
@@ -179,6 +179,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
+
+ ${sql}
+
+
update gen_table