ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-generator/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/api/tool/gen.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/views/tool/gen/createTable.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/views/tool/gen/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-common/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.common.config" }; "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config", "com.ruoyi.generator" }; } ruoyi-generator/pom.xml
@@ -17,16 +17,10 @@ <dependencies> <!--velocity代码生成使用模板 --> <!-- velocity代码生成使用模板 --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> </dependency> <!-- collections工具类 --> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> </dependency> <!-- 通用工具--> @@ -35,6 +29,12 @@ <artifactId>ruoyi-common</artifactId> </dependency> <!-- 阿里数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> </dependency> </dependencies> </project> ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
@@ -1,6 +1,7 @@ package com.ruoyi.generator.controller; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -17,12 +18,18 @@ 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.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.sql.SqlUtil; import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTableColumn; import com.ruoyi.generator.service.IGenTableColumnService; @@ -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("创建表结构异常"); } } /** * 修改保存代码生成业务 */ @PreAuthorize("@ss.hasPermi('tool:gen:edit')") ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
@@ -80,4 +80,12 @@ * @return 结果 */ public int deleteGenTableByIds(Long[] ids); /** * 创建表 * * @param sql 表结构 * @return 结果 */ public int createTable(String sql); } ruoyi-generator/src/main/java/com/ruoyi/generator/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.generator.domain.GenTable; import com.ruoyi.generator.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) ruoyi-generator/src/main/java/com/ruoyi/generator/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); /** * 预览代码 ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
@@ -171,6 +171,10 @@ ) </insert> <update id="createTable"> ${sql} </update> <update id="updateGenTable" parameterType="GenTable"> update gen_table <set> ruoyi-ui/src/api/tool/gen.js
@@ -43,6 +43,15 @@ }) } // 创建表 export function createTable(data) { return request({ url: '/tool/gen/createTable', method: 'post', params: data }) } // 预览生成代码 export function previewTable(tableId) { return request({ ruoyi-ui/src/views/tool/gen/createTable.vue
对比新文件 @@ -0,0 +1,45 @@ <template> <!-- 创建表 --> <el-dialog title="创建表" :visible.sync="visible" width="800px" top="5vh" append-to-body> <span>创建表语句(支持多个建表语句):</span> <el-input type="textarea" :rows="10" placeholder="请输入文本" v-model="content"></el-input> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="handleCreateTable">确 定</el-button> <el-button @click="visible = false">取 消</el-button> </div> </el-dialog> </template> <script> import { createTable } from "@/api/tool/gen"; export default { data() { return { // 遮罩层 visible: false, // 文本内容 content: "" }; }, methods: { // 显示弹框 show() { this.visible = true; }, /** 创建按钮操作 */ handleCreateTable() { if (this.content === "") { this.$modal.msgError("请输入建表语句"); return; } createTable({ sql: this.content }).then(res => { this.$modal.msgSuccess(res.msg); if (res.code === 200) { this.visible = false; this.$emit("ok"); } }); } } }; </script> ruoyi-ui/src/views/tool/gen/index.vue
@@ -41,9 +41,20 @@ plain icon="el-icon-download" size="mini" :disabled="multiple" @click="handleGenTable" v-hasPermi="['tool:gen:code']" >生成</el-button> </el-col> <el-col :span="1.5"> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="openCreateTable" v-hasRole="['admin']" >创建</el-button> </el-col> <el-col :span="1.5"> <el-button @@ -172,12 +183,14 @@ </el-tabs> </el-dialog> <import-table ref="import" @ok="handleQuery" /> <create-table ref="create" @ok="handleQuery" /> </div> </template> <script> import { listTable, previewTable, delTable, genCode, synchDb } from "@/api/tool/gen"; import importTable from "./importTable"; import createTable from "./createTable"; import hljs from "highlight.js/lib/highlight"; import "highlight.js/styles/github-gist.css"; hljs.registerLanguage("java", require("highlight.js/lib/languages/java")); @@ -189,7 +202,7 @@ export default { name: "Gen", components: { importTable }, components: { importTable, createTable }, data() { return { // 遮罩层 @@ -283,6 +296,10 @@ openImportTable() { this.$refs.import.show(); }, /** 打开创建表弹窗 */ openCreateTable() { this.$refs.create.show(); }, /** 重置按钮操作 */ resetQuery() { this.dateRange = [];