Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cocktail-party-server
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cocktail-party
cocktail-party-server
Commits
2f624ab5
提交
2f624ab5
authored
3月 01, 2024
作者:
RuoYi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
代码生成新增创建表结构功能
上级
80f96b49
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
162 行增加
和
15 行删除
+162
-15
Constants.java
...on/src/main/java/com/ruoyi/common/constant/Constants.java
+1
-1
pom.xml
ruoyi-generator/pom.xml
+8
-7
GenController.java
...in/java/com/ruoyi/generator/controller/GenController.java
+45
-1
GenTableMapper.java
.../main/java/com/ruoyi/generator/mapper/GenTableMapper.java
+8
-0
GenTableServiceImpl.java
...java/com/ruoyi/generator/service/GenTableServiceImpl.java
+13
-3
IGenTableService.java
...in/java/com/ruoyi/generator/service/IGenTableService.java
+11
-2
GenTableMapper.xml
...or/src/main/resources/mapper/generator/GenTableMapper.xml
+4
-0
gen.js
ruoyi-ui/src/api/tool/gen.js
+9
-0
createTable.vue
ruoyi-ui/src/views/tool/gen/createTable.vue
+45
-0
index.vue
ruoyi-ui/src/views/tool/gen/index.vue
+18
-1
没有找到文件。
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
浏览文件 @
2f624ab5
...
@@ -163,5 +163,5 @@ public class Constants
...
@@ -163,5 +163,5 @@ public class Constants
* 定时任务违规的字符
* 定时任务违规的字符
*/
*/
public
static
final
String
[]
JOB_ERROR_STR
=
{
"java.net.URL"
,
"javax.naming.InitialContext"
,
"org.yaml.snakeyaml"
,
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
浏览文件 @
2f624ab5
...
@@ -17,24 +17,24 @@
...
@@ -17,24 +17,24 @@
<dependencies>
<dependencies>
<!--velocity代码生成使用模板 -->
<!--
velocity代码生成使用模板 -->
<dependency>
<dependency>
<groupId>
org.apache.velocity
</groupId>
<groupId>
org.apache.velocity
</groupId>
<artifactId>
velocity-engine-core
</artifactId>
<artifactId>
velocity-engine-core
</artifactId>
</dependency>
</dependency>
<!-- collections工具类 -->
<dependency>
<groupId>
commons-collections
</groupId>
<artifactId>
commons-collections
</artifactId>
</dependency>
<!-- 通用工具-->
<!-- 通用工具-->
<dependency>
<dependency>
<groupId>
com.ruoyi
</groupId>
<groupId>
com.ruoyi
</groupId>
<artifactId>
ruoyi-common
</artifactId>
<artifactId>
ruoyi-common
</artifactId>
</dependency>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
\ No newline at end of file
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
浏览文件 @
2f624ab5
package
com
.
ruoyi
.
generator
.
controller
;
package
com
.
ruoyi
.
generator
.
controller
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -17,12 +18,18 @@ import org.springframework.web.bind.annotation.PutMapping;
...
@@ -17,12 +18,18 @@ import org.springframework.web.bind.annotation.PutMapping;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
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.annotation.Log
;
import
com.ruoyi.common.core.controller.BaseController
;
import
com.ruoyi.common.core.controller.BaseController
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.core.page.TableDataInfo
;
import
com.ruoyi.common.core.page.TableDataInfo
;
import
com.ruoyi.common.core.text.Convert
;
import
com.ruoyi.common.core.text.Convert
;
import
com.ruoyi.common.enums.BusinessType
;
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.GenTable
;
import
com.ruoyi.generator.domain.GenTableColumn
;
import
com.ruoyi.generator.domain.GenTableColumn
;
import
com.ruoyi.generator.service.IGenTableColumnService
;
import
com.ruoyi.generator.service.IGenTableColumnService
;
...
@@ -109,10 +116,47 @@ public class GenController extends BaseController
...
@@ -109,10 +116,47 @@ public class GenController extends BaseController
String
[]
tableNames
=
Convert
.
toStrArray
(
tables
);
String
[]
tableNames
=
Convert
.
toStrArray
(
tables
);
// 查询表信息
// 查询表信息
List
<
GenTable
>
tableList
=
genTableService
.
selectDbTableListByNames
(
tableNames
);
List
<
GenTable
>
tableList
=
genTableService
.
selectDbTableListByNames
(
tableNames
);
genTableService
.
importGenTable
(
tableList
);
genTableService
.
importGenTable
(
tableList
,
SecurityUtils
.
getUsername
()
);
return
success
();
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
(
"创建表结构异常"
);
}
}
/**
/**
* 修改保存代码生成业务
* 修改保存代码生成业务
*/
*/
...
...
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
浏览文件 @
2f624ab5
...
@@ -80,4 +80,12 @@ public interface GenTableMapper
...
@@ -80,4 +80,12 @@ public interface GenTableMapper
* @return 结果
* @return 结果
*/
*/
public
int
deleteGenTableByIds
(
Long
[]
ids
);
public
int
deleteGenTableByIds
(
Long
[]
ids
);
/**
* 创建表
*
* @param sql 表结构
* @return 结果
*/
public
int
createTable
(
String
sql
);
}
}
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
浏览文件 @
2f624ab5
...
@@ -27,7 +27,6 @@ import com.ruoyi.common.constant.Constants;
...
@@ -27,7 +27,6 @@ import com.ruoyi.common.constant.Constants;
import
com.ruoyi.common.constant.GenConstants
;
import
com.ruoyi.common.constant.GenConstants
;
import
com.ruoyi.common.core.text.CharsetKit
;
import
com.ruoyi.common.core.text.CharsetKit
;
import
com.ruoyi.common.exception.ServiceException
;
import
com.ruoyi.common.exception.ServiceException
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.generator.domain.GenTable
;
import
com.ruoyi.generator.domain.GenTable
;
import
com.ruoyi.generator.domain.GenTableColumn
;
import
com.ruoyi.generator.domain.GenTableColumn
;
...
@@ -150,6 +149,18 @@ public class GenTableServiceImpl implements IGenTableService
...
@@ -150,6 +149,18 @@ public class GenTableServiceImpl implements IGenTableService
genTableColumnMapper
.
deleteGenTableColumnByIds
(
tableIds
);
genTableColumnMapper
.
deleteGenTableColumnByIds
(
tableIds
);
}
}
/**
* 创建表
*
* @param sql 创建表语句
* @return 结果
*/
@Override
public
boolean
createTable
(
String
sql
)
{
return
genTableMapper
.
createTable
(
sql
)
==
0
;
}
/**
/**
* 导入表结构
* 导入表结构
*
*
...
@@ -157,9 +168,8 @@ public class GenTableServiceImpl implements IGenTableService
...
@@ -157,9 +168,8 @@ public class GenTableServiceImpl implements IGenTableService
*/
*/
@Override
@Override
@Transactional
@Transactional
public
void
importGenTable
(
List
<
GenTable
>
tableList
)
public
void
importGenTable
(
List
<
GenTable
>
tableList
,
String
operName
)
{
{
String
operName
=
SecurityUtils
.
getUsername
();
try
try
{
{
for
(
GenTable
table
:
tableList
)
for
(
GenTable
table
:
tableList
)
...
...
ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
浏览文件 @
2f624ab5
...
@@ -66,12 +66,21 @@ public interface IGenTableService
...
@@ -66,12 +66,21 @@ public interface IGenTableService
*/
*/
public
void
deleteGenTableByIds
(
Long
[]
tableIds
);
public
void
deleteGenTableByIds
(
Long
[]
tableIds
);
/**
* 创建表
*
* @param sql 创建表语句
* @return 结果
*/
public
boolean
createTable
(
String
sql
);
/**
/**
* 导入表结构
* 导入表结构
*
*
* @param tableList 导入表列表
* @param tableList 导入表列表
* @param operName 操作人员
*/
*/
public
void
importGenTable
(
List
<
GenTable
>
tableList
);
public
void
importGenTable
(
List
<
GenTable
>
tableList
,
String
operName
);
/**
/**
* 预览代码
* 预览代码
...
...
ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
浏览文件 @
2f624ab5
...
@@ -171,6 +171,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -171,6 +171,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
)
</insert>
</insert>
<update
id=
"createTable"
>
${sql}
</update>
<update
id=
"updateGenTable"
parameterType=
"GenTable"
>
<update
id=
"updateGenTable"
parameterType=
"GenTable"
>
update gen_table
update gen_table
<set>
<set>
...
...
ruoyi-ui/src/api/tool/gen.js
浏览文件 @
2f624ab5
...
@@ -43,6 +43,15 @@ export function importTable(data) {
...
@@ -43,6 +43,15 @@ export function importTable(data) {
})
})
}
}
// 创建表
export
function
createTable
(
data
)
{
return
request
({
url
:
'/tool/gen/createTable'
,
method
:
'post'
,
params
:
data
})
}
// 预览生成代码
// 预览生成代码
export
function
previewTable
(
tableId
)
{
export
function
previewTable
(
tableId
)
{
return
request
({
return
request
({
...
...
ruoyi-ui/src/views/tool/gen/createTable.vue
0 → 100644
浏览文件 @
2f624ab5
<
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
浏览文件 @
2f624ab5
...
@@ -41,10 +41,21 @@
...
@@ -41,10 +41,21 @@
plain
plain
icon=
"el-icon-download"
icon=
"el-icon-download"
size=
"mini"
size=
"mini"
:disabled=
"multiple"
@
click=
"handleGenTable"
@
click=
"handleGenTable"
v-hasPermi=
"['tool:gen:code']"
v-hasPermi=
"['tool:gen:code']"
>
生成
</el-button>
>
生成
</el-button>
</el-col>
</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-col
:span=
"1.5"
>
<el-button
<el-button
type=
"info"
type=
"info"
...
@@ -172,12 +183,14 @@
...
@@ -172,12 +183,14 @@
</el-tabs>
</el-tabs>
</el-dialog>
</el-dialog>
<import-table
ref=
"import"
@
ok=
"handleQuery"
/>
<import-table
ref=
"import"
@
ok=
"handleQuery"
/>
<create-table
ref=
"create"
@
ok=
"handleQuery"
/>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
{
listTable
,
previewTable
,
delTable
,
genCode
,
synchDb
}
from
"@/api/tool/gen"
;
import
{
listTable
,
previewTable
,
delTable
,
genCode
,
synchDb
}
from
"@/api/tool/gen"
;
import
importTable
from
"./importTable"
;
import
importTable
from
"./importTable"
;
import
createTable
from
"./createTable"
;
import
hljs
from
"highlight.js/lib/highlight"
;
import
hljs
from
"highlight.js/lib/highlight"
;
import
"highlight.js/styles/github-gist.css"
;
import
"highlight.js/styles/github-gist.css"
;
hljs
.
registerLanguage
(
"java"
,
require
(
"highlight.js/lib/languages/java"
));
hljs
.
registerLanguage
(
"java"
,
require
(
"highlight.js/lib/languages/java"
));
...
@@ -189,7 +202,7 @@ hljs.registerLanguage("sql", require("highlight.js/lib/languages/sql"));
...
@@ -189,7 +202,7 @@ hljs.registerLanguage("sql", require("highlight.js/lib/languages/sql"));
export
default
{
export
default
{
name
:
"Gen"
,
name
:
"Gen"
,
components
:
{
importTable
},
components
:
{
importTable
,
createTable
},
data
()
{
data
()
{
return
{
return
{
// 遮罩层
// 遮罩层
...
@@ -283,6 +296,10 @@ export default {
...
@@ -283,6 +296,10 @@ export default {
openImportTable
()
{
openImportTable
()
{
this
.
$refs
.
import
.
show
();
this
.
$refs
.
import
.
show
();
},
},
/** 打开创建表弹窗 */
openCreateTable
()
{
this
.
$refs
.
create
.
show
();
},
/** 重置按钮操作 */
/** 重置按钮操作 */
resetQuery
()
{
resetQuery
()
{
this
.
dateRange
=
[];
this
.
dateRange
=
[];
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论