Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
appbuild
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
appbuild
Commits
6fac8380
Commit
6fac8380
authored
May 31, 2022
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改部分生成代码逻辑
parent
cde02a3d
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
771 additions
and
639 deletions
+771
-639
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/model/GentableEntityExt.java
...als/xhx/base/system/gentable/model/GentableEntityExt.java
+5
-0
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/service/impl/GentableServiceImpl.java
...ase/system/gentable/service/impl/GentableServiceImpl.java
+137
-49
appbuild-manager/src/main/java/com/mortals/xhx/common/utils/FreeMarkerUtils.java
...in/java/com/mortals/xhx/common/utils/FreeMarkerUtils.java
+7
-12
appbuild-manager/src/main/resources/template/doc/api-two.md.ftl
...ld-manager/src/main/resources/template/doc/api-two.md.ftl
+0
-327
appbuild-manager/src/main/resources/template/doc/api.md.ftl
appbuild-manager/src/main/resources/template/doc/api.md.ftl
+215
-240
appbuild-manager/src/main/resources/template/doc/api.md.ftl.bak
...ld-manager/src/main/resources/template/doc/api.md.ftl.bak
+380
-0
appbuild-manager/src/main/resources/template/sql/db.sql.ftl
appbuild-manager/src/main/resources/template/sql/db.sql.ftl
+9
-6
appbuild-manager/src/main/resources/template/sql/menu.sql.ftl
...uild-manager/src/main/resources/template/sql/menu.sql.ftl
+18
-5
No files found.
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/model/GentableEntityExt.java
View file @
6fac8380
...
...
@@ -4,8 +4,10 @@ import com.mortals.framework.model.BaseEntityLong;
import
com.mortals.xhx.common.utils.StringUtils
;
import
lombok.Data
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* Description:Gentable
...
...
@@ -23,6 +25,9 @@ public class GentableEntityExt extends BaseEntityLong {
* 子表信息
*/
private
GentableEntity
subTable
;
private
String
requestMapping
;
/**
* 表列信息
*/
...
...
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/service/impl/GentableServiceImpl.java
View file @
6fac8380
...
...
@@ -46,6 +46,8 @@ import java.util.stream.Collectors;
import
java.util.zip.ZipEntry
;
import
java.util.zip.ZipOutputStream
;
import
static
com
.
mortals
.
xhx
.
common
.
utils
.
GenUtils
.
getBusinessNameExt
;
/**
* <p>Title: 代码生成业务表</p>
* <p>Description: GentableService service接口 </p>
...
...
@@ -166,17 +168,16 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
if
(
temp
.
equals
(
"enum.java.ftl"
))
{
continue
;
}
if
(
temp
.
equals
(
"api.md.ftl"
))
{
continue
;
}
if
(
temp
.
equals
(
"api-two.md.ftl"
))
{
continue
;
}
if
(
temp
.
equals
(
"apidict.md.ftl"
))
{
continue
;
}
//
if (temp.equals("api-two.md.ftl")) {
//
continue;
//
}
//
if (temp.equals("apidict.md.ftl")) {
//
continue;
//
}
try
{
//初始化freeMarkers
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
temp
));
...
...
@@ -206,19 +207,31 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
@SneakyThrows
@Override
public
byte
[]
downloadCode
(
Long
tableId
,
String
genTypes
)
{
List
<
GentableEntity
>
tableList
=
new
ArrayList
<>();
ByteArrayOutputStream
outputStream
=
new
ByteArrayOutputStream
();
ZipOutputStream
zip
=
new
ZipOutputStream
(
outputStream
);
FreeMarkerUtils
.
menuSql
=
new
StringBuilder
();
FreeMarkerUtils
.
paramsSql
=
new
StringBuilder
();
FreeMarkerUtils
.
dbSql
=
new
StringBuilder
();
FreeMarkerUtils
.
apimd
=
new
StringBuilder
();
FreeMarkerUtils
.
apitwomd
=
new
StringBuilder
();
FreeMarkerUtils
.
apidict
=
new
StringBuilder
();
FreeMarkerUtils
.
apidict
.
append
(
"## 字典附录\n"
);
FreeMarkerUtils
.
apimd
.
append
(
headStr
);
FreeMarkerUtils
.
apitwomd
.
append
(
headStr
);
generatorCode
(
tableId
,
genTypes
,
zip
);
if
(
StringUtils
.
isNotEmpty
(
FreeMarkerUtils
.
menuSql
))
{
// FreeMarkerUtils.menuSql = new StringBuilder();
// FreeMarkerUtils.paramsSql = new StringBuilder();
// FreeMarkerUtils.dbSql = new StringBuilder();
// FreeMarkerUtils.apimd = new StringBuilder();
// FreeMarkerUtils.apitwomd = new StringBuilder();
// FreeMarkerUtils.apidict = new StringBuilder();
// FreeMarkerUtils.apidict.append("## 字典附录\n");
// FreeMarkerUtils.apimd.append(headStr);
// FreeMarkerUtils.apitwomd.append(headStr);
GentableEntity
gentableEntity
=
generatorCode
(
tableId
,
genTypes
,
zip
);
tableList
.
add
(
gentableEntity
);
Map
data
=
new
HashMap
();
data
.
put
(
"tableList"
,
tableList
);
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
"menu.sql.ftl"
));
zipTemplate
(
"menu.sql.ftl"
,
"db/menu.sql"
,
data
,
zip
);
zipTemplate
(
"db.sql.ftl"
,
"db/db.sql"
,
data
,
zip
);
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
"api.md.ftl"
));
zipTemplate
(
"api.md.ftl"
,
"doc/api.md"
,
data
,
zip
);
/*if (StringUtils.isNotEmpty(FreeMarkerUtils.menuSql)) {
zip.putNextEntry(new ZipEntry("db/menu.sql"));
IOUtils.write(FreeMarkerUtils.menuSql.toString(), zip, Constant.UTF8);
}
...
...
@@ -236,14 +249,15 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
}
if (StringUtils.isNotEmpty(FreeMarkerUtils.apitwomd)) {
zip
.
putNextEntry
(
new
ZipEntry
(
"doc/api-two.md"
));
// zip.putNextEntry(new ZipEntry("doc/api-two.md"));
zip.putNextEntry(new ZipEntry("doc/api.md"));
IOUtils.write(FreeMarkerUtils.apitwomd.toString(), zip, Constant.UTF8);
}
if (StringUtils.isNotEmpty(FreeMarkerUtils.apidict)) {
zip.putNextEntry(new ZipEntry("doc/dict.md"));
IOUtils.write(FreeMarkerUtils.apidict.toString(), zip, Constant.UTF8);
}
}
*/
IOUtils
.
closeQuietly
(
zip
);
return
outputStream
.
toByteArray
();
}
...
...
@@ -251,23 +265,78 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
@SneakyThrows
@Override
public
byte
[]
downloadCode
(
Long
[]
tableIds
,
String
genTypes
)
{
FreeMarkerUtils
.
menuSql
=
new
StringBuilder
();
FreeMarkerUtils
.
dbSql
=
new
StringBuilder
();
FreeMarkerUtils
.
paramsSql
=
new
StringBuilder
();
FreeMarkerUtils
.
apimd
=
new
StringBuilder
();
FreeMarkerUtils
.
apitwomd
=
new
StringBuilder
();
FreeMarkerUtils
.
apidict
=
new
StringBuilder
();
FreeMarkerUtils
.
apidict
.
append
(
"## 字典附录\n"
);
FreeMarkerUtils
.
apimd
.
append
(
headStr
);
FreeMarkerUtils
.
apitwomd
.
append
(
headStr
);
List
<
GentableEntity
>
tableList
=
new
ArrayList
<>();
// FreeMarkerUtils.menuSql = new StringBuilder();
// FreeMarkerUtils.dbSql = new StringBuilder();
// FreeMarkerUtils.paramsSql = new StringBuilder();
// FreeMarkerUtils.apimd = new StringBuilder();
// FreeMarkerUtils.apitwomd = new StringBuilder();
// FreeMarkerUtils.apidict = new StringBuilder();
// FreeMarkerUtils.apidict.append("## 字典附录\n");
// FreeMarkerUtils.apimd.append(headStr);
// FreeMarkerUtils.apitwomd.append(headStr);
ByteArrayOutputStream
outputStream
=
new
ByteArrayOutputStream
();
ZipOutputStream
zip
=
new
ZipOutputStream
(
outputStream
);
for
(
Long
tableId
:
tableIds
)
{
generatorCode
(
tableId
,
genTypes
,
zip
);
GentableEntity
gentableEntity
=
generatorCode
(
tableId
,
genTypes
,
zip
);
tableList
.
add
(
gentableEntity
);
}
Map
data
=
new
HashMap
();
data
.
put
(
"tableList"
,
tableList
);
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
"menu.sql.ftl"
));
zipTemplate
(
"menu.sql.ftl"
,
"db/menu.sql"
,
data
,
zip
);
zipTemplate
(
"db.sql.ftl"
,
"db/db.sql"
,
data
,
zip
);
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
"api.md.ftl"
));
zipTemplate
(
"api.md.ftl"
,
"doc/api.md"
,
data
,
zip
);
/* try {
StringWriter sw = new StringWriter();
Template template = FreeMarkerUtils.getTemplate(temp);
template.process(data, sw);
zip.putNextEntry(new ZipEntry("db/menu.sql"));
IOUtils.write(sw.toString(), zip, Constant.UTF8);
if (template.getName().equals("menu.sql.ftl")) {
FreeMarkerUtils.menuSql.append(sw.toString());
} else if (template.getName().equals("db.sql.ftl")) {
FreeMarkerUtils.dbSql.append(sw.toString());
} else if (template.getName().equals("params.sql.ftl")) {
FreeMarkerUtils.paramsSql.append(sw.toString());
} else if (template.getName().equals("api.md.ftl")) {
FreeMarkerUtils.apimd.append(sw.toString());
} else if (template.getName().equals("api-two.md.ftl")) {
FreeMarkerUtils.apitwomd.append(sw.toString());
} else if (template.getName().equals("apidict.md.ftl")) {
FreeMarkerUtils.apidict.append(sw.toString() + "\n");
} else {
zip.putNextEntry(new ZipEntry(FreeMarkerUtils.getFileName(template.getName(), gentableEntity)));
IOUtils.write(sw.toString(), zip, Constant.UTF8);
}
IOUtils.closeQuietly(sw);
zip.flush();
zip.closeEntry();
} catch (Exception e) {
log.error("渲染模板失败,表名:" + gentableEntity.getTableName(), e);
}
zip.putNextEntry(new ZipEntry("db/menu.sql"));
StringWriter sw = new StringWriter();
Template template = FreeMarkerUtils.getTemplate(temp);
template.process(data, sw);
if (StringUtils.isNotEmpty(FreeMarkerUtils.menuSql)) {
zip.putNextEntry(new ZipEntry("db/menu.sql"));
StringWriter sw = new StringWriter();
Template template = FreeMarkerUtils.getTemplate(temp);
template.process(data, sw);
IOUtils.write(FreeMarkerUtils.menuSql.toString(), zip, Constant.UTF8);
}
if (StringUtils.isNotEmpty(FreeMarkerUtils.dbSql)) {
...
...
@@ -290,7 +359,7 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
zip.putNextEntry(new ZipEntry("doc/api-two.md"));
IOUtils.write(FreeMarkerUtils.apitwomd.toString(), zip, Constant.UTF8);
}
}
*/
// if (StringUtils.isNotEmpty(FreeMarkerUtils.apidict)) {
...
...
@@ -302,10 +371,21 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
return
outputStream
.
toByteArray
();
}
private
void
zipTemplate
(
String
temp
,
String
zipPath
,
Map
data
,
ZipOutputStream
zip
)
{
try
{
StringWriter
sw
=
new
StringWriter
();
Template
template
=
FreeMarkerUtils
.
getTemplate
(
temp
);
template
.
process
(
data
,
sw
);
zip
.
putNextEntry
(
new
ZipEntry
(
zipPath
));
IOUtils
.
write
(
sw
.
toString
(),
zip
,
Constant
.
UTF8
);
}
catch
(
Exception
e
)
{
log
.
error
(
"异常"
,
e
);
}
}
@Override
public
void
synchDb
(
Long
tableId
)
{
GentableEntity
table
=
this
.
get
(
tableId
);
List
<
GentableColumnEntity
>
tableColumns
=
gentableColumnService
.
find
(
new
GentableColumnQuery
().
tableId
(
table
.
getId
()));
table
.
setColumns
(
tableColumns
);
...
...
@@ -371,7 +451,6 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
@Override
public
void
importDoc
(
MultipartFile
file
,
Long
appId
,
Context
context
)
{
List
<
GentableEntity
>
tableList
=
ReadDoc
.
readWord
(
file
);
String
operName
=
context
.
getUser
().
getLoginName
();
try
{
...
...
@@ -433,20 +512,15 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
@Override
public
void
crateTableBySql
(
String
tableSql
,
Context
context
)
{
Pattern
p
=
Pattern
.
compile
(
"(?ms)('(?:''|[^'])*')|--.*?$|/\\*.*?\\*/"
);
tableSql
=
p
.
matcher
(
tableSql
).
replaceAll
(
"$1"
);
log
.
info
(
"去除注释后的sql:"
+
tableSql
);
//校验部分命令 禁止使用 比如清库的
// if(tableSql.indexOf("")!=-1){
// throw new AppException("禁止使用");
// }
List
<
String
>
list
=
StrUtil
.
splitTrim
(
tableSql
,
";"
.
charAt
(
0
),
-
1
);
list
.
stream
().
filter
(
f
->
!
ObjectUtils
.
isEmpty
(
f
)).
peek
(
item
->
{
log
.
info
(
"sql:"
+
item
);
this
.
getDao
().
createTable
(
item
);
...
...
@@ -457,7 +531,7 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
/**
* 查询表信息并生成代码
*/
private
void
generatorCode
(
Long
tableId
,
String
genTypes
,
ZipOutputStream
zip
)
{
private
GentableEntity
generatorCode
(
Long
tableId
,
String
genTypes
,
ZipOutputStream
zip
)
{
GentableEntity
gentableEntity
=
this
.
get
(
tableId
);
Set
<
String
>
types
=
StrUtil
.
splitTrim
(
genTypes
,
","
.
charAt
(
0
),
-
1
).
stream
().
collect
(
Collectors
.
toSet
());
if
(!
ObjectUtils
.
isEmpty
(
gentableEntity
))
{
...
...
@@ -470,11 +544,12 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
}).
collect
(
Collectors
.
toList
());
gentableEntity
.
setColumns
(
columnEntities
);
// 设置主子表信息
setSubTable
(
gentableEntity
);
// 设置主键列信息
setPkColumn
(
gentableEntity
);
String
requestMapping
=
Arrays
.
stream
(
getBusinessNameExt
(
gentableEntity
.
getTableName
()).
split
(
"\\."
)).
collect
(
Collectors
.
joining
(
"/"
));
gentableEntity
.
setRequestMapping
(
requestMapping
);
//生成模板基础数据
Map
data
=
FreeMarkerUtils
.
prepareSetFreeMarkerData
(
gentableEntity
);
...
...
@@ -488,14 +563,12 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
continue
;
}
}
//通过模板生成不同的业务类
if
(
temp
.
equals
(
"enum.java.ftl"
))
{
//单独生成枚举类
List
<
GentableColumnEntity
>
collect
=
gentableEntity
.
getColumns
().
stream
()
.
filter
(
f
->
f
.
getDict
()
!=
null
)
.
map
(
item
->
{
Map
enumData
=
FreeMarkerUtils
.
prepareSetFreeMarkerDataByEnum
(
item
.
getDict
(),
item
.
getColumnComment
(),
item
.
getColumnName
(),
item
.
getJavaType
());
try
{
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
temp
));
...
...
@@ -521,14 +594,28 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
continue
;
}
//restBody模式 不加载web,webForm模式
if
(
gentableEntity
.
getIsShowControl
()
==
2
)
{
if
(
temp
.
contains
(
"web.java.ftl"
)
||
temp
.
contains
(
"webForm.java.ftl"
))
{
continue
;
}
}
if
(
temp
.
equals
(
"menu.sql.ftl"
))
{
continue
;
}
if
(
temp
.
equals
(
"db.sql.ftl"
))
{
continue
;
}
if
(
temp
.
equals
(
"api.md.ftl"
))
{
continue
;
}
try
{
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
temp
));
StringWriter
sw
=
new
StringWriter
();
Template
template
=
FreeMarkerUtils
.
getTemplate
(
temp
);
template
.
process
(
data
,
sw
);
// 添加到zip
if
(
template
.
getName
().
equals
(
"menu.sql.ftl"
))
{
/*
if (template.getName().equals("menu.sql.ftl")) {
FreeMarkerUtils.menuSql.append(sw.toString());
} else if (template.getName().equals("db.sql.ftl")) {
FreeMarkerUtils.dbSql.append(sw.toString());
...
...
@@ -541,9 +628,10 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
} else if (template.getName().equals("apidict.md.ftl")) {
FreeMarkerUtils.apidict.append(sw.toString() + "\n");
} else {
zip
.
putNextEntry
(
new
ZipEntry
(
FreeMarkerUtils
.
getFileName
(
template
.
getName
(),
gentableEntity
)));
IOUtils
.
write
(
sw
.
toString
(),
zip
,
Constant
.
UTF8
);
}
}*/
zip
.
putNextEntry
(
new
ZipEntry
(
FreeMarkerUtils
.
getFileName
(
template
.
getName
(),
gentableEntity
)));
IOUtils
.
write
(
sw
.
toString
(),
zip
,
Constant
.
UTF8
);
IOUtils
.
closeQuietly
(
sw
);
zip
.
flush
();
...
...
@@ -552,8 +640,8 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
log
.
error
(
"渲染模板失败,表名:"
+
gentableEntity
.
getTableName
(),
e
);
}
}
}
return
gentableEntity
;
}
/**
...
...
@@ -585,7 +673,7 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
ByteArrayOutputStream
byteArrayOutputStream
=
null
;
try
{
ClassPathResource
classPathResource
=
new
ClassPathResource
(
"template/doc/base.docx"
);
template
=
XWPFTemplate
.
compile
(
classPathResource
.
getInputStream
(),
config
).
render
(
data
);
template
=
XWPFTemplate
.
compile
(
classPathResource
.
getInputStream
(),
config
).
render
(
data
);
byteArrayOutputStream
=
new
ByteArrayOutputStream
();
template
.
write
(
byteArrayOutputStream
);
return
byteArrayOutputStream
.
toByteArray
();
...
...
appbuild-manager/src/main/java/com/mortals/xhx/common/utils/FreeMarkerUtils.java
View file @
6fac8380
...
...
@@ -74,18 +74,15 @@ public class FreeMarkerUtils {
*/
@SneakyThrows
public
static
void
initFreeMarkerPath
(
String
templatePath
)
{
//初始化模板引擎
cfg
=
new
Configuration
(
Configuration
.
VERSION_2_3_29
);
cfg
.
setDirectoryForTemplateLoading
(
new
File
(
templatePath
));
//设置字符编码集
cfg
.
setDefaultEncoding
(
"UTF-8"
);
//设置异常的处理方式
cfg
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
//设置输出时间格式
cfg
.
setDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
}
...
...
@@ -102,16 +99,16 @@ public class FreeMarkerUtils {
templates
.
add
(
"entityQuery.java.ftl"
);
templates
.
add
(
"dao.java.ftl"
);
templates
.
add
(
"daoImpl.java.ftl"
);
//
templates.add("web.java.ftl");
templates
.
add
(
"web.java.ftl"
);
templates
.
add
(
"webBody.java.ftl"
);
templates
.
add
(
"webForm.java.ftl"
);
templates
.
add
(
"sqlMap.xml.ftl"
);
templates
.
add
(
"db.sql.ftl"
);
templates
.
add
(
"menu.sql.ftl"
);
templates
.
add
(
"params.sql.ftl"
);
//
templates.add("params.sql.ftl");
templates
.
add
(
"api.md.ftl"
);
templates
.
add
(
"api-two.md.ftl"
);
templates
.
add
(
"apidict.md.ftl"
);
//
templates.add("api-two.md.ftl");
//
templates.add("apidict.md.ftl");
templates
.
add
(
"httpclient.test.ftl"
);
if
(
GenConstants
.
TPL_CRUD
.
equals
(
tplCategory
))
{
templates
.
add
(
"service.java.ftl"
);
...
...
@@ -168,11 +165,9 @@ public class FreeMarkerUtils {
* @return 模板列表
*/
public
static
Map
prepareSetFreeMarkerData
(
GentableEntity
genTable
)
{
Map
data
=
new
HashMap
();
String
moduleName
=
genTable
.
getModuleName
();
String
businessName
=
genTable
.
getBusinessName
().
replace
(
"\\."
,
""
);
String
packageName
=
genTable
.
getPackageName
()
+
"."
+
moduleName
+
"."
+
businessName
;
String
tplCategory
=
genTable
.
getTplCategory
();
String
functionName
=
genTable
.
getFunctionName
();
...
...
@@ -435,9 +430,9 @@ public class FreeMarkerUtils {
}
else
if
(
template
.
contains
(
"serviceImpl-tree.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/service/impl/{}ServiceImpl.java"
,
javaPath
,
businessName
,
className
);
}
//
else if (template.contains("web.java.ftl")) {
//
fileName = StringUtils.format("{}/{}/web/{}Controller.java", javaPath, businessName, className);
//
}
else
if
(
template
.
contains
(
"web.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/web/{}Controller.java"
,
javaPath
,
businessName
,
className
);
}
else
if
(
template
.
contains
(
"webBody.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/web/{}Controller.java"
,
javaPath
,
businessName
,
className
);
}
...
...
appbuild-manager/src/main/resources/template/doc/api-two.md.ftl
deleted
100644 → 0
View file @
cde02a3d
## ${functionName}
### 查询${functionName}列表
**请求URL:** ${RequestMapping}/list
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询${functionName}
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:---|:---
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
<#list columns as column>
<#if column.isQuery == 1>
<#if column.javaType=="String" >
${column.javaField}|${column.javaType}|${column.columnComment}|否|字段前后添加%%模糊查询
<#else>
${column.javaField}|${column.javaType}|${column.columnComment}|否|-
</#if>
</#if>
</#list>
**请求样例:**
```
{
<#list columns as column>
<#if column.isQuery == 1>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#if>
</#list>
"page":1,
"size":10
}
```
**响应参数:**
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 per_page|Integer|每页条数
 total|Integer|总条数
 last_page|Integer|总页数
 current_page|Integer|当前页
 data|array|结果集列表|数组
<#list columns as column>
  ${column.javaField}|${column.javaType}|${column.columnComment}
</#list>
dict|object|字典对象
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
 ${column.javaField}|object|字典属性对象,详见附录
</#if>
</#list>
**响应消息样例:**
```
{
"code":1,
"data":{
}
}
```
### 查看${functionName}
**请求URL:** ${RequestMapping}/info
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 查看${functionName},返回实例详细信息
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
${pkColumn.javaField}|${pkColumn.javaType}|是|ID
**请求样例:**
```
http://localhost/${RequestMapping}/info?id=549
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:-------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
<#list columns as column>
 ${column.javaField}|${column.javaType}|${column.columnComment}
</#list>
dict|object|字典对象
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
 ${column.javaField}|object|字典属性对象,详见附录
</#if>
</#list>
**响应消息样例:**
```
{
"code": 1,
"data": {
<#list columns as column>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#list>
}
}
```
### 保存更新${functionName}
**请求URL:** ${RequestMapping}/save
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 保存或更新${functionName}:id为空时为新增保存,否则为更新提交
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:-------
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
${column.javaField}|${column.javaType}|是|${column.columnComment}
</#if>
</#list>
**请求样例:**
```
{
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#if>
</#list>
}
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 id|Long|保存后主键id
 entity|object|保存更新实体
<#list columns as column>
  ${column.javaField}|${column.javaType}|${column.columnComment}
</#list>
**响应消息样例:**
```
{
"msg":"新增模块成功",
"code":1,
"data":{}
}
}
```
### 删除${functionName}
**请求URL:** ${RequestMapping}/delete
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 删除${functionName}
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
${pkColumn.javaField}|String|是|数组
**请求样例:**
```
http://localhost:8080/${RequestMapping}/delete?id=1&id=2'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
{
"code":1,
"msg":"成功"
}
```
<#if table.isGenExport==1 >
### 导入${functionName}模板下载
**请求URL:** ${RequestMapping}/downloadTemplate
**请求方式:** POST
**内容类型:** application/octet-stream;charset=utf-8
**简要描述:** ${functionName}导入模板下载
**请求样例:**
```
http://localhost/${RequestMapping}/downloadTemplate
```
**Response-example:**
```
...
```
### 导入${functionName}
**请求URL:** ${RequestMapping}/importData
**请求方式:** POST
**内容类型:** multipart/form-data
**简要描述:** 导入${functionName}
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
file|file|是|文件流
**请求样例:**
```
http://localhost/${RequestMapping}/importData --data 'updateSupport=true'
```
**Response-example:**
```
...
```
### 导出${functionName}
**请求URL:** ${RequestMapping}/exportExcel
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 导出${functionName}
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
idList|Arrays|否|id数组
<#list columns as column>
<#if column.isQuery == 1>
${column.javaField}|${column.javaType}|${column.columnComment}|否|参数查询条件
</#if>
</#list>
**请求样例:**
```
{
idList:[1,2],
<#list columns as column>
<#if column.isQuery == 1>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#if>
</#list>
}
```
**Response-example:**
```
...
```
</#if>
appbuild-manager/src/main/resources/template/doc/api.md.ftl
View file @
6fac8380
# 服务平台
版本 | 创建时间 | 作者 | 备注信息
---|---|---|---
v1.0|2022-01-20|zxfei| 接口文档
## 数据类型
类型名称|类型描述|参考样例
---|---|---
String |字符串|A、a、ab
Integer|数字类型|1、12、-1
Long|长整型数字|1、12、-1
date|时间类型,单位纳秒数字|167988745573
BigDecimal|小数类型|545.256
object|对象类型|{"name":"zhang3"}
arrays|数组类型|[{"name":"zhang3"},{"name":"zhang2"}]
## ${functionName}服务接口
### 查询${functionName}列表
**URL:** http://localhost:8080/m/${RequestMapping}/list
<#list tableList as table>
## ${table.functionName}
**Type:** POST
### 查询${table.functionName}列表
**
Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**
请求URL:** ${table.requestMapping}/list
**
Description:** 查询${functionName}
**
请求方式:** POST
**
Query-parameters:**
**
内容类型:** application/json;charset=utf-8
参数名称|类型|备注|必填|其它
---|---|---|---|---
pageInfo|object|分页对象|否|-
└─beginIndex|Integer|开始记录序号|否|-
└─prePageResult|Integer|每页条数|否|-
└─totalResult|Integer|总条数|否|-
└─totalPage|Integer|总页数|否|-
└─currPage|Integer|当前页|否|-
└─displayPageSize|Integer|显示页数量|否|-
└─hasNextPage|Boolean|是否有下一页|否|-
└─hasPrePage|Boolean|是否有前一页|否|-
└─lastRecordKey|String|最后一条|否|-
└─countPage|Boolean|是否计算总页数|否|-
query|object|查询对象|否|-
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|否|-
</#list>
<#list columns as column>
<#if column.javaType == "Long"||column.javaType == "Integer"||column.javaType == "BigDecimal">
└─${column.javaField}Start|${column.javaType}|大于 > ${column.columnComment}|否|-
└─${column.javaField}End|${column.javaType}|小于 < ${column.columnComment}|否|-
└─${column.javaField}List|array|${column.columnComment}列表|否|-
</#if>
<#if column.javaType == "String">
└─${column.javaField}List|array|${column.columnComment}列表|否|-
</#if>
<#if column.javaType == "Date">
└─${column.javaField}Start|${column.javaType}|大于 > ${column.columnComment}|否|-
└─${column.javaField}End|${column.javaType}|小于 < ${column.columnComment}|否|-
</#if>
**简要描述:** 查询${table.functionName}
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
<#list table.columns as column>
<#if column.isQuery == 1>
<#if column.javaType=="String" >
${column.javaField}|${column.javaType}|否|${column.columnComment},字段前后添加%%模糊查询
<#else>
${column.javaField}|${column.javaType}|否|${column.columnComment}
</#if>
</#if>
</#list>
**请求样例:**
```
curl -X POST -i http://localhost:8080/m/${RequestMapping}/list --data 'query.id=1'
{
<#list table.columns as column>
<#if column.isQuery == 1>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#if>
</#list>
"page":1,
"size":10
}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─result|array|结果集列表|数组
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|-
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 per_page|Integer|每页条数
 total|Integer|总条数
 last_page|Integer|总页数
 current_page|Integer|当前页
 data|array|结果集列表|数组
<#list table.columns as column>
  ${column.javaField}|${column.javaType}|${column.columnComment}
</#list>
└─pageInfo|object|分页对象|-
└─beginIndex|Integer|开始记录序号|-
└─prePageResult|Integer|每页条数|-
└─totalResult|Integer|总条数|-
└─totalPage|Integer|总页数|-
└─currPage|Integer|当前页|-
└─displayPageSize|Integer|显示页数量|-
└─hasNextPage|Boolean|是否有下一页|-
└─hasPrePage|Boolean|是否有前一页|-
└─lastRecordKey|String|最后一条|-
└─countPage|Boolean|是否计算总页数|-
└─dict|object|字典对象|-
<#list columns as column>
dict|object|字典对象
<#list table.columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
&
nbsp; └─${column.javaField}|object|字典属性对象,详见附录|-
&
emsp;${column.javaField}|object|字典属性对象,详见附录
</#if>
</#list>
└─query|object|查询时候返回的查询列表参数对象|-
**响应消息样例:**
```
{
"code":1,
"data":{
"result":[
{
"appId":6,
"businessName":"device",
}
],
"pageInfo":{
"currPage":1,
"prePageResult":200,
"totalPage":1,
"totalResult":16
},
"dict":{
"dividedTableType":{
"0":"无",
"1":"日"
}
}
},
"query":{
"appId":6
}
}
```
### 编辑${functionName}
**URL:** http://localhost:8080/m/${RequestMapping}/edit
### 查看${table.functionName}
**
Type:** POST
**
请求URL:** ${table.requestMapping}/info
**
Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**
请求方式:** GET
**
Description:** 编辑${functionName},返回实例详细信息
**
内容类型:** application/json;charset=utf-8
**
Query-parameters:**
**
简要描述:** 查看${table.functionName},返回实例详细信息
参数名称|类型|备注|必填|其它
---|---|---|---|---
${pkColumn.javaField}|array|实例主键ID,数组形式|是|-
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
${table.pkColumn.javaField}|${table.pkColumn.javaType}|是|ID
**请求样例:**
```
curl -X POST -i http://localhost:8080/m/${RequestMapping}/edit --data 'id=[1]'
http://localhost/${table.requestMapping}/info?id=549
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|对象实体|对象
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|-
参数名称 |参数类型|描述
:---|:---|:-------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
<#list table.columns as column>
 ${column.javaField}|${column.javaType}|${column.columnComment}
</#list>
└─dict|object|字典对象|-
<#list columns as column>
dict|object|字典对象
<#list
table.
columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
&
nbsp; └─${column.javaField}|object|字典属性对象,详见附录|-
&
emsp;${column.javaField}|object|字典属性对象,详见附录
</#if>
</#list>
**响应消息样例:**
```
{
"code":1,
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
"code": 1,
"data": {
<#list table.columns as column>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#list>
}
}
}
```
### 保存更新${functionName}
**URL:** http://localhost:8080/m/${RequestMapping}/save
### 保存更新${table.functionName}
**
Type:** POST
**
请求URL:** ${table.requestMapping}/save
**请求方式:** POST
**
Content-Type:** application/x-www-form-urlencoded
;charset=utf-8
**
内容类型:** application/json
;charset=utf-8
**
Description:** 保存或更新${
functionName}:id为空时为新增保存,否则为更新提交
**
简要描述:** 保存或更新${table.
functionName}:id为空时为新增保存,否则为更新提交
**
Query-parameters
:**
**
请求参数
:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
entity|object|实体对象|是|-
<#list columns as column>
参数名称|类型|必填|描述
:---|:---|:---|:-------
<#list table.columns as column>
<#if !column.isSuperColumn(column.javaField)>
└─${column.javaField}|${column.javaType}|${column.columnComment}|是|-
${column.javaField}|${column.javaType}|是|${column.columnComment}
</#if>
</#list>
**请求样例:**
```
...
{
<#list table.columns as column>
<#if !column.isSuperColumn(column.javaField)>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#if>
</#list>
}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|保存实体|对象
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
└─dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
└─${column.javaField}|object|字典属性对象想,详见附录|-
</#if>
参数名称 |参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 id|Long|保存后主键id
 entity|object|保存更新实体
<#list table.columns as column>
  ${column.javaField}|${column.javaType}|${column.columnComment}
</#list>
**响应消息样例:**
```
{
"msg":"新增模块成功",
"code":1,
"msg":"成功",
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
"data":{}
}
}
```
### 查看${functionName}
**URL:** http://localhost:8080/m/${RequestMapping}/view
### 删除${table.functionName}
**请求URL:** ${table.requestMapping}/delete
**
Type:** POS
T
**
请求方式:** GE
T
**
Content-Type:** application/x-www-form-urlencoded
;charset=utf-8
**
内容类型:** application/json
;charset=utf-8
**
Description:** 查看${functionName},返回实例详细信息
**
简要描述:** 删除${table.functionName}
**
Query-parameters
:**
**
请求参数
:**
参数名称|类型|
备注|必填|其它
---|---|---|---|
---
${
pkColumn.javaField}|array|实例主键ID,数组形式|是|-
参数名称|类型|
必填|描述
:---|:---|:---|:---
---
${
table.pkColumn.javaField}|String|是|数组
**请求样例:**
```
curl -X POST -i http://localhost:8080/m/${RequestMapping}/view --data 'id=[1]
'
http://localhost:8080/${table.requestMapping}/delete?id=1&id=2
'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(
0
.失败,1.成功)|-
code|Integer|结果码(
-1
.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|对象实体|对象
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
└─dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
└─${column.javaField}|object|字典属性对象,详见附录|-
</#if>
</#list>
**响应消息样例:**
```
{
"code":1,
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
"msg":"成功"
}
```
### 删除${functionName}
**URL:** http://localhost:8080/m/${RequestMapping}/delete
```
<#if table.isGenExport==1 >
**Type:** POST
### 导入${table.functionName}模板下载
**
Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**
请求URL:** ${table.requestMapping}/downloadTemplate
**
Description:** 删除${functionName}
**
请求方式:** POST
**
Query-parameters:**
**
内容类型:** application/octet-stream;charset=utf-8
参数名称|类型|备注|必填|其它
---|---|---|---|---
${pkColumn.javaField}|array|实例主键ID,数组形式|是|-
**简要描述:** ${table.functionName}导入模板下载
**请求样例:**
```
curl -X POST -i http://localhost:8080/m/${RequestMapping}/delete --data 'id=[1]'
http://localhost/${table.requestMapping}/downloadTemplate
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
**Response-example:**
```
{
"code":1,
"msg":"成功"
...
}
```
### ${functionName}导入模板下载
**URL:** http://localhost:8081/m/${RequestMapping}/downloadTemplate
### 导入${table.functionName}
**请求URL:** ${table.requestMapping}/importData
**
Type
:** POST
**
请求方式
:** POST
**内容类型:** multipart/form-data
**
Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**
简要描述:** 导入${table.functionName}
**
Description:** ${functionName}导入模板下载
**
请求参数:**
**Request-example:**
参数名称|类型|必填|描述
:---|:---|:---|:------
file|file|是|文件流
**请求样例:**
```
curl -X POST -i http://localhost:8081/m/${RequestMapping}/downloadTemplate
http://localhost/${table.requestMapping}/importData --data 'updateSupport=true'
```
**Response-example:**
```
...
```
### 导入${functionName}
**URL:** http://localhost:8081/m/${RequestMapping}/importData
### 导出${table.functionName}
**
Type:** POST
**
请求URL:** ${table.requestMapping}/exportExcel
**请求方式:** POST
**
Content-Type:** multipart/form-data
**
内容类型:** application/json;charset=utf-8
**
Description:** 导入${
functionName}
**
简要描述:** 导出${table.
functionName}
**
Query-parameters
:**
**
请求参数
:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
file|file|文件流|是|-
updateSupport|boolean|相同数据项是否更新|false|-
参数名称|类型|必填|描述
:---|:---|:---|:------
idList|Arrays|否|id数组
<#list table.columns as column>
<#if column.isQuery == 1>
${column.javaField}|${column.javaType}|${column.columnComment}|否|参数查询条件
</#if>
</#list>
**
Request-example
:**
**
请求样例
:**
```
curl -X POST -H 'Content-Type: multipart/form-data' -i http://localhost:8081/m/${RequestMapping}/importData --data 'updateSupport=true'
{
idList:[1,2],
<#list table.columns as column>
<#if column.isQuery == 1>
<#if column.javaType=="String" ||column.javaType=="Date">
<#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
<#else>
<#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
</#if>
"${column.javaField}":${fakeValue}<#sep>,</#sep>
</#if>
</#list>
}
```
**Response-example:**
```
...
```
</#if>
</#list>
<#list tableList as table>
<#list table.columns as column>
<#if column.dict??>
<#assign comment=column.subComment(column.columnComment) />
### ${column.javaField}
字典参数key|字典参数值|其它
:---|:---|:---
<#list column.dict as dict>
${dict.num}|${dict.value}|-
</#list>
</#if>
</#list>
</#list>
\ No newline at end of file
appbuild-manager/src/main/resources/template/doc/api.md.ftl.bak
0 → 100644
View file @
6fac8380
## ${functionName}服务接口
### 查询${functionName}列表
**URL:** http://localhost:8080/m/${RequestMapping}/list
**Type:** POST
**Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**Description:** 查询${functionName}
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
pageInfo|object|分页对象|否|-
└─beginIndex|Integer|开始记录序号|否|-
└─prePageResult|Integer|每页条数|否|-
└─totalResult|Integer|总条数|否|-
└─totalPage|Integer|总页数|否|-
└─currPage|Integer|当前页|否|-
└─displayPageSize|Integer|显示页数量|否|-
└─hasNextPage|Boolean|是否有下一页|否|-
└─hasPrePage|Boolean|是否有前一页|否|-
└─lastRecordKey|String|最后一条|否|-
└─countPage|Boolean|是否计算总页数|否|-
query|object|查询对象|否|-
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|否|-
</#list>
<#list columns as column>
<#if column.javaType == "Long"||column.javaType == "Integer"||column.javaType == "BigDecimal">
└─${column.javaField}Start|${column.javaType}|大于 > ${column.columnComment}|否|-
└─${column.javaField}End|${column.javaType}|小于 < ${column.columnComment}|否|-
└─${column.javaField}List|array|${column.columnComment}列表|否|-
</#if>
<#if column.javaType == "String">
└─${column.javaField}List|array|${column.columnComment}列表|否|-
</#if>
<#if column.javaType == "Date">
└─${column.javaField}Start|${column.javaType}|大于 > ${column.columnComment}|否|-
└─${column.javaField}End|${column.javaType}|小于 < ${column.columnComment}|否|-
</#if>
</#list>
**请求样例:**
```
curl -X POST -i http://localhost:8080/m/${RequestMapping}/list --data 'query.id=1'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─result|array|结果集列表|数组
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
└─pageInfo|object|分页对象|-
└─beginIndex|Integer|开始记录序号|-
└─prePageResult|Integer|每页条数|-
└─totalResult|Integer|总条数|-
└─totalPage|Integer|总页数|-
└─currPage|Integer|当前页|-
└─displayPageSize|Integer|显示页数量|-
└─hasNextPage|Boolean|是否有下一页|-
└─hasPrePage|Boolean|是否有前一页|-
└─lastRecordKey|String|最后一条|-
└─countPage|Boolean|是否计算总页数|-
└─dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
└─${column.javaField}|object|字典属性对象,详见附录|-
</#if>
</#list>
└─query|object|查询时候返回的查询列表参数对象|-
**响应消息样例:**
```
{
"code":1,
"data":{
"result":[
{
"appId":6,
"businessName":"device",
}
],
"pageInfo":{
"currPage":1,
"prePageResult":200,
"totalPage":1,
"totalResult":16
},
"dict":{
"dividedTableType":{
"0":"无",
"1":"日"
}
}
},
"query":{
"appId":6
}
}
```
### 编辑${functionName}
**URL:** http://localhost:8080/m/${RequestMapping}/edit
**Type:** POST
**Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**Description:** 编辑${functionName},返回实例详细信息
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
${pkColumn.javaField}|array|实例主键ID,数组形式|是|-
**请求样例:**
```
curl -X POST -i http://localhost:8080/m/${RequestMapping}/edit --data 'id=[1]'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|对象实体|对象
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
└─dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
└─${column.javaField}|object|字典属性对象,详见附录|-
</#if>
</#list>
**响应消息样例:**
```
{
"code":1,
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
}
```
### 保存更新${functionName}
**URL:** http://localhost:8080/m/${RequestMapping}/save
**Type:** POST
**Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**Description:** 保存或更新${functionName}:id为空时为新增保存,否则为更新提交
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
entity|object|实体对象|是|-
<#list columns as column>
<#if !column.isSuperColumn(column.javaField)>
└─${column.javaField}|${column.javaType}|${column.columnComment}|是|-
</#if>
</#list>
**请求样例:**
```
...
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|保存实体|对象
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
└─dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
└─${column.javaField}|object|字典属性对象想,详见附录|-
</#if>
</#list>
**响应消息样例:**
```
{
"code":1,
"msg":"成功",
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
}
```
### 查看${functionName}
**URL:** http://localhost:8080/m/${RequestMapping}/view
**Type:** POST
**Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**Description:** 查看${functionName},返回实例详细信息
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
${pkColumn.javaField}|array|实例主键ID,数组形式|是|-
**请求样例:**
```
curl -X POST -i http://localhost:8080/m/${RequestMapping}/view --data 'id=[1]'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
data|object|数据对象|-
└─entity|object|对象实体|对象
<#list columns as column>
└─${column.javaField}|${column.javaType}|${column.columnComment}|-
</#list>
└─dict|object|字典对象|-
<#list columns as column>
<#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
└─${column.javaField}|object|字典属性对象,详见附录|-
</#if>
</#list>
**响应消息样例:**
```
{
"code":1,
"data":{
"dict":{
"interimExcuteStatus":{
"0":"未启用",
"1":"立即执行并保留"
}
},
"entity":{
"createTime":1628737643000,
"createUserId":1,
"createUserName":"系统管理员",
"excuteDate":0
}
}
}
```
### 删除${functionName}
**URL:** http://localhost:8080/m/${RequestMapping}/delete
**Type:** POST
**Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**Description:** 删除${functionName}
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
${pkColumn.javaField}|array|实例主键ID,数组形式|是|-
**请求样例:**
```
curl -X POST -i http://localhost:8080/m/${RequestMapping}/delete --data 'id=[1]'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(0.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
{
"code":1,
"msg":"成功"
}
```
### ${functionName}导入模板下载
**URL:** http://localhost:8081/m/${RequestMapping}/downloadTemplate
**Type:** POST
**Content-Type:** application/x-www-form-urlencoded;charset=utf-8
**Description:** ${functionName}导入模板下载
**Request-example:**
```
curl -X POST -i http://localhost:8081/m/${RequestMapping}/downloadTemplate
```
**Response-example:**
```
...
```
### 导入${functionName}
**URL:** http://localhost:8081/m/${RequestMapping}/importData
**Type:** POST
**Content-Type:** multipart/form-data
**Description:** 导入${functionName}
**Query-parameters:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
file|file|文件流|是|-
updateSupport|boolean|相同数据项是否更新|false|-
**Request-example:**
```
curl -X POST -H 'Content-Type: multipart/form-data' -i http://localhost:8081/m/${RequestMapping}/importData --data 'updateSupport=true'
```
**Response-example:**
```
...
```
appbuild-manager/src/main/resources/template/sql/db.sql.ftl
View file @
6fac8380
<#list tableList as table>
-- ----------------------------
-- ${functionName}表
-- ${
table.
functionName}表
-- ----------------------------
DROP TABLE IF EXISTS `${tableName}`;
CREATE TABLE ${tableName}(
<#list columns as column>
DROP TABLE IF EXISTS `${table
.table
Name}`;
CREATE TABLE ${table
.table
Name}(
<#list
table.
columns as column>
<#if column.isIncrement==1 >
<#assign autoInc>AUTO_INCREMENT</#assign>
<#else>
...
...
@@ -34,5 +35,7 @@ CREATE TABLE ${tableName}(
</#if>
`${column.columnName}` ${column.columnType} ${Required} ${autoInc} COMMENT '${column.columnComment}',
</#list>
PRIMARY KEY (`${pkColumn.columnName}`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='${functionName}';
PRIMARY KEY (`${table.pkColumn.columnName}`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='${table.functionName}';
</#list>
\ No newline at end of file
appbuild-manager/src/main/resources/template/sql/menu.sql.ftl
View file @
6fac8380
<#list tableList as table>
-- ----------------------------
-- ${functionName}菜单 SQL
-- ${
table.
functionName}菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '${table
Comment}', '/${R
equestMapping}/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
INSERT INTO `mortals_xhx_menu` VALUES (null, '${table
.tableComment}', '/${table.r
equestMapping}/list', 0, 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- ${functionName}资源路径 SQL
-- ${
table.
functionName}资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '${functionName}-菜单管理-查看', '/${RequestMapping}/list,/${RequestMapping}/view,/${RequestMapping}/info,/${RequestMapping}/export,/${RequestMapping}/exportExcel,/${RequestMapping}/downloadTemplate,/${RequestMapping}/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '${functionName}-菜单管理-维护', '/${RequestMapping}/add,/${RequestMapping}/edit,/${RequestMapping}/delete,/${RequestMapping}/logicDelete,/${RequestMapping}/save,/${RequestMapping}/importData', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '${table.functionName}-菜单管理-查看', '/${table.requestMapping}/list,/${table.requestMapping}/view,/${table.requestMapping}/info,/${table.requestMapping}/export,/${table.requestMapping}/exportExcel,/${table.requestMapping}/downloadTemplate,/${table.requestMapping}/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '${table.functionName}-菜单管理-维护', '/${table.requestMapping}/add,/${table.requestMapping}/edit,/${table.requestMapping}/delete,/${table.requestMapping}/logicDelete,/${table.requestMapping}/save,/${table.requestMapping}/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- ${table.functionName}参数 SQL
-- ----------------------------
<#list table.columns as column>
<#if column.dict??>
<#list column.dict as dict>
INSERT INTO `mortals_xhx_param` VALUES (null, '${column.subComment(column.columnComment)}', '${table.className}', '${column.javaField}', '${dict.num}', '${dict.value}', 1, 4, 0, '${column.javaField}', NULL, NULL, NULL);
</#list>
</#if>
</#list>
</#list>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment