From 5c7dce3719ca67b73da5b05f28a8418e1d0f1ea7 Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期五, 01 三月 2024 14:32:37 +0800 Subject: [PATCH] 代码生成新增创建表结构功能 --- src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableMapper.java | 8 ++++ src/main/java/com/ruoyi/common/constant/Constants.java | 2 src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java | 46 ++++++++++++++++++++++ src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java | 17 ++++++-- src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java | 16 ++++++- src/main/resources/mybatis/tool/GenTableMapper.xml | 4 ++ 6 files changed, 84 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/ruoyi/common/constant/Constants.java b/src/main/java/com/ruoyi/common/constant/Constants.java index 8ca9f5c..48974db 100644 --- a/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/src/main/java/com/ruoyi/common/constant/Constants.java @@ -163,5 +163,5 @@ * 瀹氭椂浠诲姟杩濊鐨勫瓧绗� */ 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.framework.config" }; + "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.framework.config", "com.ruoyi.project.tool" }; } diff --git a/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java b/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java index 8f0ff97..820f9c3 100644 --- a/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java +++ b/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java @@ -1,6 +1,7 @@ package com.ruoyi.project.tool.gen.controller; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -17,7 +18,13 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; 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.core.text.Convert; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.sql.SqlUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; @@ -109,11 +116,48 @@ String[] tableNames = Convert.toStrArray(tables); // 鏌ヨ琛ㄤ俊鎭� List<GenTable> 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<SQLStatement> sqlStatements = SQLUtils.parseStatements(sql, DbType.mysql); + List<String> 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<GenTable> 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("鍒涘缓琛ㄧ粨鏋勫紓甯�"); + } + } + + /** * 淇敼淇濆瓨浠g爜鐢熸垚涓氬姟 */ @PreAuthorize("@ss.hasPermi('tool:gen:edit')") diff --git a/src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableMapper.java b/src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableMapper.java index ddd694b..72d0ddb 100644 --- a/src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableMapper.java +++ b/src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableMapper.java @@ -80,4 +80,12 @@ * @return 缁撴灉 */ public int deleteGenTableByIds(Long[] ids); + + /** + * 鍒涘缓琛� + * + * @param sql 琛ㄧ粨鏋� + * @return 缁撴灉 + */ + public int createTable(String sql); } \ No newline at end of file diff --git a/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java b/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java index b7568b3..357a7f5 100644 --- a/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java +++ b/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java @@ -27,7 +27,6 @@ import com.ruoyi.common.constant.GenConstants; 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.project.tool.gen.domain.GenTable; import com.ruoyi.project.tool.gen.domain.GenTableColumn; @@ -151,15 +150,26 @@ } /** + * 鍒涘缓琛� + * + * @param sql 鍒涘缓琛ㄨ鍙� + * @return 缁撴灉 + */ + @Override + public boolean createTable(String sql) + { + return genTableMapper.createTable(sql) == 0; + } + + /** * 瀵煎叆琛ㄧ粨鏋� * * @param tableList 瀵煎叆琛ㄥ垪琛� */ @Override @Transactional - public void importGenTable(List<GenTable> tableList) + public void importGenTable(List<GenTable> tableList, String operName) { - String operName = SecurityUtils.getUsername(); try { for (GenTable table : tableList) diff --git a/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java b/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java index 5fb4cce..fba0cd8 100644 --- a/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java +++ b/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java @@ -67,11 +67,20 @@ public void deleteGenTableByIds(Long[] tableIds); /** - * 瀵煎叆琛ㄧ粨鏋� - * - * @param tableList 瀵煎叆琛ㄥ垪琛� + * 鍒涘缓琛� + * + * @param sql 鍒涘缓琛ㄨ鍙� + * @return 缁撴灉 */ - public void importGenTable(List<GenTable> tableList); + public boolean createTable(String sql); + + /** + * 瀵煎叆琛ㄧ粨鏋� + * + * @param tableList 瀵煎叆琛ㄥ垪琛� + * @param operName 鎿嶄綔浜哄憳 + */ + public void importGenTable(List<GenTable> tableList, String operName); /** * 棰勮浠g爜 diff --git a/src/main/resources/mybatis/tool/GenTableMapper.xml b/src/main/resources/mybatis/tool/GenTableMapper.xml index de8a3b4..748c76c 100644 --- a/src/main/resources/mybatis/tool/GenTableMapper.xml +++ b/src/main/resources/mybatis/tool/GenTableMapper.xml @@ -171,6 +171,10 @@ ) </insert> + <update id="createTable"> + ${sql} + </update> + <update id="updateGenTable" parameterType="GenTable"> update gen_table <set> -- Gitblit v1.9.3