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
5734b399
Commit
5734b399
authored
Jun 24, 2022
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加feign接口自动生成
parent
488bb754
Changes
27
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
1471 additions
and
1564 deletions
+1471
-1564
appbuild-manage-ui/admin/package.json
appbuild-manage-ui/admin/package.json
+1
-0
appbuild-manage-ui/admin/src/views/app/list.vue
appbuild-manage-ui/admin/src/views/app/list.vue
+2
-0
appbuild-manage-ui/admin/src/views/app/show.vue
appbuild-manage-ui/admin/src/views/app/show.vue
+4
-0
appbuild-manage-ui/admin/src/views/system/gentable/editTable.vue
...d-manage-ui/admin/src/views/system/gentable/editTable.vue
+1
-2
appbuild-manage-ui/admin/src/views/system/gentable/genInfoForm.vue
...manage-ui/admin/src/views/system/gentable/genInfoForm.vue
+5
-6
appbuild-manage-ui/admin/src/views/system/gentable/list.vue
appbuild-manage-ui/admin/src/views/system/gentable/list.vue
+1
-0
appbuild-manager/pom.xml
appbuild-manager/pom.xml
+6
-0
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/model/GentableEntityExt.java
...als/xhx/base/system/gentable/model/GentableEntityExt.java
+4
-0
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/service/impl/GentableServiceImpl.java
...ase/system/gentable/service/impl/GentableServiceImpl.java
+63
-45
appbuild-manager/src/main/java/com/mortals/xhx/common/utils/FreeMarkerUtils.java
...in/java/com/mortals/xhx/common/utils/FreeMarkerUtils.java
+26
-28
appbuild-manager/src/main/java/com/mortals/xhx/module/app/model/AppEntity.java
...main/java/com/mortals/xhx/module/app/model/AppEntity.java
+81
-34
appbuild-manager/src/main/java/com/mortals/xhx/module/app/model/AppQuery.java
.../main/java/com/mortals/xhx/module/app/model/AppQuery.java
+253
-179
appbuild-manager/src/main/resources/bootstrap.yml
appbuild-manager/src/main/resources/bootstrap.yml
+35
-0
appbuild-manager/src/main/resources/sqlmap/module/app/AppMapper.xml
...anager/src/main/resources/sqlmap/module/app/AppMapper.xml
+252
-182
appbuild-manager/src/main/resources/static/doc/AllInOne.css
appbuild-manager/src/main/resources/static/doc/AllInOne.css
+0
-13
appbuild-manager/src/main/resources/static/doc/AllInOne.md.md
...uild-manager/src/main/resources/static/doc/AllInOne.md.md
+0
-27
appbuild-manager/src/main/resources/static/doc/api.md
appbuild-manager/src/main/resources/static/doc/api.md
+0
-907
appbuild-manager/src/main/resources/static/doc/index.html
appbuild-manager/src/main/resources/static/doc/index.html
+0
-6
appbuild-manager/src/main/resources/static/doc/search.js
appbuild-manager/src/main/resources/static/doc/search.js
+0
-104
appbuild-manager/src/main/resources/template/doc/api.md.ftl
appbuild-manager/src/main/resources/template/doc/api.md.ftl
+198
-0
appbuild-manager/src/main/resources/template/java/entityQuery.java.ftl
...ger/src/main/resources/template/java/entityQuery.java.ftl
+2
-2
appbuild-manager/src/main/resources/template/java/feign.java.ftl
...d-manager/src/main/resources/template/java/feign.java.ftl
+99
-0
appbuild-manager/src/main/resources/template/java/httpclient.test.ftl
...ager/src/main/resources/template/java/httpclient.test.ftl
+14
-0
appbuild-manager/src/main/resources/template/java/pdu.java.ftl
...ild-manager/src/main/resources/template/java/pdu.java.ftl
+376
-0
appbuild-manager/src/main/resources/template/java/vo.java.ftl
...uild-manager/src/main/resources/template/java/vo.java.ftl
+0
-3
common-lib/src/main/java/com/mortals/xhx/utils/SpringUtils.java
...-lib/src/main/java/com/mortals/xhx/utils/SpringUtils.java
+39
-26
pom.xml
pom.xml
+9
-0
No files found.
appbuild-manage-ui/admin/package.json
View file @
5734b399
...
...
@@ -30,6 +30,7 @@
"nprogress"
:
"0.2.0"
,
"quill"
:
"1.3.7"
,
"screenfull"
:
"5.0.2"
,
"showdown"
:
"^2.1.0"
,
"sockjs-client"
:
"^1.5.1"
,
"sortablejs"
:
"1.10.2"
,
"stompjs"
:
"^2.3.3"
,
...
...
appbuild-manage-ui/admin/src/views/app/list.vue
View file @
5734b399
...
...
@@ -50,6 +50,8 @@ export default {
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
label
:
"
应用名称
"
,
prop
:
"
name
"
},
{
label
:
"
应用标识
"
,
prop
:
"
code
"
},
{
label
:
"
应用访问路径
"
,
prop
:
"
path
"
},
{
label
:
"
备注
"
,
prop
:
"
remark
"
},
{
label
:
"
创建用户名称
"
,
prop
:
"
createUserName
"
},
{
...
...
appbuild-manage-ui/admin/src/views/app/show.vue
View file @
5734b399
...
...
@@ -3,6 +3,10 @@
<el-form
:model=
"form"
:loading=
"loading"
:rules=
"rules"
size=
'small'
style=
"width:100%"
label-width=
'120px'
ref=
"form"
>
<el-row>
<Field
label=
"应用名称"
:span=
"18"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入应用名称"
/>
<Field
label=
"应用标识"
:span=
"18"
prop=
"code"
v-model=
"form.code"
placeholder=
"微服务中标识名,如base-platform"
/>
<Field
label=
"应用请求路径"
:span=
"18"
prop=
"path"
v-model=
"form.path"
placeholder=
"微服务中访问路径,如/zwfw"
/>
<Field
label=
"备注"
prop=
"remark"
:span=
"18"
type=
"textarea"
v-model=
"form.remark"
placeholder=
"请输入备注"
/>
</el-row>
...
...
appbuild-manage-ui/admin/src/views/system/gentable/editTable.vue
View file @
5734b399
...
...
@@ -220,6 +220,7 @@ export default {
"
genType
"
,
"
isGenExport
"
,
"
isShowControl
"
,
"
genFeign
"
,
],
// 需要把number转化为string的表单字段name数组
};
},
...
...
@@ -245,8 +246,6 @@ export default {
console
.
log
(
"
info
"
,
this
.
info
)
}
this
.
tables
=
res
.
data
.
tables
;
this
.
dict
=
Object
.
assign
({},
this
.
dict
,
res
.
data
.
dict
);
this
.
loading
=
false
;
...
...
appbuild-manage-ui/admin/src/views/system/gentable/genInfoForm.vue
View file @
5734b399
...
...
@@ -44,7 +44,6 @@
<el-col
:span=
"12"
>
<el-form-item
prop=
"genFeign"
>
<span
slot=
"label"
>
是否生成Feign
</span>
<el-select
v-model=
"info.genFeign"
>
<el-option
label=
"是"
value=
"1"
/>
<el-option
label=
"否"
value=
"0"
/>
...
...
@@ -52,7 +51,7 @@
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<
!--
<
el-col
:span=
"12"
>
<el-form-item
prop=
"feignAppName"
>
<span
slot=
"label"
>
feign应用工程名
...
...
@@ -65,9 +64,9 @@
</span>
<el-input
v-model=
"info.feignAppName"
/>
</el-form-item>
</el-col>
</el-col>
-->
<el-col
:span=
"12"
>
<
!--
<
el-col
:span=
"12"
>
<el-form-item
prop=
"genApi"
>
<span
slot=
"label"
>
是否生成对外api
</span>
<el-select
v-model=
"info.genApi"
>
...
...
@@ -75,7 +74,7 @@
<el-option
label=
"否"
value=
"0"
/>
</el-select>
</el-form-item>
</el-col>
</el-col>
-->
<el-col
:span=
"12"
>
<el-form-item
prop=
"isGenExport"
>
...
...
@@ -87,7 +86,7 @@
</span>
<el-select
v-model=
"info.isGenExport"
>
<el-select
v-model=
"info.isGenExport"
>
<el-option
label=
"是"
value=
"1"
/>
<el-option
label=
"否"
value=
"0"
/>
</el-select>
...
...
appbuild-manage-ui/admin/src/views/system/gentable/list.vue
View file @
5734b399
...
...
@@ -248,6 +248,7 @@ hljs.registerLanguage("xml", require("highlight.js/lib/languages/xml"));
hljs
.
registerLanguage
(
"
html
"
,
require
(
"
highlight.js/lib/languages/xml
"
));
hljs
.
registerLanguage
(
"
vue
"
,
require
(
"
highlight.js/lib/languages/xml
"
));
hljs
.
registerLanguage
(
"
test
"
,
require
(
"
highlight.js/lib/languages/xml
"
));
hljs
.
registerLanguage
(
"
md
"
,
require
(
"
highlight.js/lib/languages/xml
"
));
hljs
.
registerLanguage
(
"
javascript
"
,
require
(
"
highlight.js/lib/languages/javascript
"
)
...
...
appbuild-manager/pom.xml
View file @
5734b399
...
...
@@ -67,6 +67,12 @@
<artifactId>
junit
</artifactId>
<scope>
test
</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.thoughtworks.qdox/qdox -->
<dependency>
<groupId>
com.thoughtworks.qdox
</groupId>
<artifactId>
qdox
</artifactId>
<version>
2.0.1
</version>
</dependency>
<dependency>
...
...
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/model/GentableEntityExt.java
View file @
5734b399
...
...
@@ -28,6 +28,10 @@ public class GentableEntityExt extends BaseEntityLong {
private
String
requestMapping
;
private
String
code
;
private
String
path
;
/**
* 表列信息
*/
...
...
appbuild-manager/src/main/java/com/mortals/xhx/base/system/gentable/service/impl/GentableServiceImpl.java
View file @
5734b399
...
...
@@ -27,6 +27,8 @@ import com.mortals.xhx.common.utils.FreeMarkerUtils;
import
com.mortals.xhx.common.utils.GenUtils
;
import
com.mortals.xhx.common.utils.ReadDoc
;
import
com.mortals.xhx.common.utils.StringUtils
;
import
com.mortals.xhx.module.app.model.AppEntity
;
import
com.mortals.xhx.module.app.service.AppService
;
import
freemarker.template.Template
;
import
lombok.SneakyThrows
;
import
org.apache.commons.io.IOUtils
;
...
...
@@ -60,24 +62,12 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
@Autowired
private
GentableColumnService
gentableColumnService
;
@Autowired
private
AppService
appService
;
String
headStr
=
"版本 | 创建时间 | 作者 | 备注信息\n"
+
"---|---|---|---\n"
+
"v1.0|"
+
DateUtils
.
getCurrStrDate
()
+
"|zxfei| 接口文档\n\n"
+
"## 数据类型\n"
+
"类型名称|类型描述|参考样例\n"
+
"---|---|---\n"
+
"String |字符串|A、a、ab\n"
+
"Integer|数字类型|1、12、-1\n"
+
"Long|长整型数字|1、12、-1\n"
+
"date|时间类型,单位纳秒数字|167988745573\n"
+
"BigDecimal|小数类型|545.256\n"
+
"object|对象类型|{\"name\":\"zhang3\"}\n"
+
"arrays|数组类型|[{\"name\":\"zhang3\"},{\"name\":\"zhang2\"}]\n"
;
@Override
public
List
<
GentableEntity
>
selectDbTableList
(
GentableQuery
query
)
{
//query to dao
ParamDto
paramDto
=
new
ParamDto
();
Map
map
=
new
HashMap
();
EntityUtil
.
entityToMap
(
query
,
map
);
...
...
@@ -104,6 +94,7 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
GenUtils
.
initTable
(
table
,
operName
);
table
.
setGenType
(
0
);
table
.
setIsGenExport
(
0
);
table
.
setGenFeign
(
0
);
table
.
setIsShowControl
(
2
);
table
.
setGenPath
(
"/"
);
table
.
setTplCategory
(
"crud"
);
...
...
@@ -159,7 +150,9 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
setSubTable
(
gentableEntity
);
// 设置主键列信息
setPkColumn
(
gentableEntity
);
String
requestMapping
=
Arrays
.
stream
(
getBusinessNameExt
(
gentableEntity
.
getTableName
()).
split
(
"\\."
)).
collect
(
Collectors
.
joining
(
"/"
));
gentableEntity
.
setRequestMapping
(
requestMapping
);
buildAppInfo
(
gentableEntity
);
//生成模板基础数据
Map
data
=
FreeMarkerUtils
.
prepareSetFreeMarkerData
(
gentableEntity
);
//输出合成模板
...
...
@@ -168,16 +161,40 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
if
(
temp
.
equals
(
"enum.java.ftl"
))
{
continue
;
}
if
(
temp
.
equals
(
"api.md.ftl"
))
{
continue
;
//如果开启feign生成模式,加载feign生成模板
if
(
gentableEntity
.
getGenFeign
()
==
0
)
{
if
(
temp
.
contains
(
"feign.java.ftl"
)
||
temp
.
contains
(
"pdu.java.ftl"
))
{
continue
;
}
}
if
(
gentableEntity
.
getIsShowControl
()
==
2
)
{
if
(
temp
.
contains
(
"webForm.java.ftl"
))
{
continue
;
}
}
if
(
gentableEntity
.
getIsShowControl
()
==
0
)
{
if
(
temp
.
contains
(
"webBody.java.ftl"
))
{
continue
;
}
}
// if (temp.equals("api-two.md.ftl")) {
// continue;
// }
// if (temp.equals("apidict.md.ftl")) {
// continue;
// }
if
(
temp
.
equals
(
"menu.sql.ftl"
)||
temp
.
equals
(
"db.sql.ftl"
)||
temp
.
equals
(
"api.md.ftl"
))
{
try
{
List
<
GentableEntity
>
tableList
=
new
ArrayList
<>();
tableList
.
add
(
gentableEntity
);
data
.
put
(
"tableList"
,
tableList
);
//初始化freeMarkers
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
temp
));
// 渲染模板
StringWriter
sw
=
new
StringWriter
();
Template
template
=
FreeMarkerUtils
.
getTemplate
(
temp
);
template
.
process
(
data
,
sw
);
dataMap
.
put
(
temp
,
sw
.
toString
());
}
catch
(
Exception
e
)
{
log
.
error
(
"异常"
,
e
);
}
continue
;
}
try
{
//初始化freeMarkers
FreeMarkerUtils
.
initFreeMarker
(
genFreePath
(
temp
));
...
...
@@ -216,10 +233,10 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
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
);
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
);
zipTemplate
(
"api.md.ftl"
,
"doc/api.md"
,
data
,
zip
);
IOUtils
.
closeQuietly
(
zip
);
return
outputStream
.
toByteArray
();
...
...
@@ -238,10 +255,10 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
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
);
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
);
zipTemplate
(
"api.md.ftl"
,
"doc/api.md"
,
data
,
zip
);
IOUtils
.
closeQuietly
(
zip
);
return
outputStream
.
toByteArray
();
}
...
...
@@ -333,6 +350,7 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
GenUtils
.
initTable
(
table
,
operName
);
table
.
setAppId
(
appId
);
table
.
setGenType
(
0
);
table
.
setGenFeign
(
0
);
table
.
setIsGenExport
(
0
);
table
.
setIsShowControl
(
2
);
table
.
setGenPath
(
"/"
);
...
...
@@ -417,6 +435,8 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
String
requestMapping
=
Arrays
.
stream
(
getBusinessNameExt
(
gentableEntity
.
getTableName
()).
split
(
"\\."
)).
collect
(
Collectors
.
joining
(
"/"
));
gentableEntity
.
setRequestMapping
(
requestMapping
);
buildAppInfo
(
gentableEntity
);
//生成模板基础数据
Map
data
=
FreeMarkerUtils
.
prepareSetFreeMarkerData
(
gentableEntity
);
...
...
@@ -465,11 +485,17 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
if
(
temp
.
contains
(
"web.java.ftl"
)
||
temp
.
contains
(
"webForm.java.ftl"
))
{
continue
;
}
}
else
{
}
else
{
if
(
temp
.
contains
(
"webBody.java.ftl"
))
{
continue
;
}
}
//如果开启feign生成模式,加载feign生成模板
if
(
gentableEntity
.
getGenFeign
()
==
0
)
{
if
(
temp
.
contains
(
"feign.java.ftl"
)
||
temp
.
contains
(
"pdu.java.ftl"
))
{
continue
;
}
}
if
(
temp
.
equals
(
"menu.sql.ftl"
))
{
continue
;
...
...
@@ -499,6 +525,12 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
return
gentableEntity
;
}
private
void
buildAppInfo
(
GentableEntity
gentableEntity
)
{
AppEntity
appEntity
=
appService
.
get
(
gentableEntity
.
getAppId
());
gentableEntity
.
setCode
(
appEntity
.
getCode
());
gentableEntity
.
setPath
(
appEntity
.
getPath
());
}
/**
* 生成文档
*/
...
...
@@ -510,6 +542,7 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
for
(
Long
tableId
:
tableIds
)
{
GentableEntity
gentableEntity
=
this
.
get
(
tableId
);
if
(!
ObjectUtils
.
isEmpty
(
gentableEntity
))
{
buildAppInfo
(
gentableEntity
);
List
<
GentableColumnEntity
>
columnEntities
=
this
.
gentableColumnService
.
find
(
new
GentableColumnQuery
().
tableId
(
gentableEntity
.
getId
()));
gentableEntity
.
setColumns
(
columnEntities
);
// 设置主子表信息
...
...
@@ -542,22 +575,7 @@ public class GentableServiceImpl extends AbstractCRUDServiceImpl<GentableDao, Ge
}
catch
(
IOException
e
)
{
log
.
error
(
"ioEx:"
,
e
);
}
}
//通过模板生成不同的业务类
/* String temp = "db.doc.ftl";
try {
FreeMarkerUtils.initFreeMarker(genFreePath(temp));
StringWriter sw = new StringWriter();
Template template = FreeMarkerUtils.getTemplate(temp);
template.process(data, sw);
return sw.toString().getBytes(Constant.UTF8);
} catch (Exception e) {
log.error("渲染模板失败:" , e);
return null;
}*/
}
/**
...
...
appbuild-manager/src/main/java/com/mortals/xhx/common/utils/FreeMarkerUtils.java
View file @
5734b399
...
...
@@ -25,32 +25,25 @@ import java.util.stream.Collectors;
import
static
com
.
mortals
.
xhx
.
common
.
utils
.
GenUtils
.
getBusinessNameExt
;
public
class
FreeMarkerUtils
{
/**
* 项目空间路径
*/
private
static
final
String
PROJECT_PATH
=
"main/java"
;
private
static
final
String
TEST_PATH
=
"test/java/com/mortals/httpclient"
;
private
static
final
String
FEIGN_PATH
=
"feign/main/java/com/mortals/xhx/feign"
;
private
static
final
String
PDU_PATH
=
"feign/main/java/com/mortals/xhx/common/pdu"
;
/**
* mybatis空间路径
*/
private
static
final
String
MYBATIS_PATH
=
"main/resources/sqlmap"
;
/**
* 默认上级菜单,系统工具
*/
private
static
final
String
DEFAULT_PARENT_MENU_ID
=
"3"
;
public
static
Configuration
cfg
=
null
;
public
static
StringBuilder
dbSql
=
new
StringBuilder
();
public
static
StringBuilder
menuSql
=
new
StringBuilder
();
public
static
StringBuilder
paramsSql
=
new
StringBuilder
();
public
static
StringBuilder
apimd
=
new
StringBuilder
();
public
static
StringBuilder
apitwomd
=
new
StringBuilder
();
public
static
StringBuilder
apidict
=
new
StringBuilder
();
/**
* 初始化freeMaker方法
...
...
@@ -100,29 +93,28 @@ public class FreeMarkerUtils {
templates
.
add
(
"dao.java.ftl"
);
templates
.
add
(
"daoImpl.java.ftl"
);
templates
.
add
(
"web.java.ftl"
);
templates
.
add
(
"feign.java.ftl"
);
templates
.
add
(
"pdu.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
(
"api.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"
);
templates
.
add
(
"serviceImpl.java.ftl"
);
templates
.
add
(
"webVueList.vue.ftl"
);
templates
.
add
(
"VueDialogShow.vue.ftl"
);
// templates.add("webVueShow.vue.ftl");
// templates.add("webVueShow.vue.ftl");
}
else
if
(
GenConstants
.
TPL_TREE
.
equals
(
tplCategory
))
{
templates
.
add
(
"entity-tree.java.ftl"
);
templates
.
add
(
"service-tree.java.ftl"
);
templates
.
add
(
"serviceImpl-tree.java.ftl"
);
templates
.
add
(
"VueTreeDialogShow.vue.ftl"
);
templates
.
add
(
"webVueTreeList.vue.ftl"
);
}
else
if
(
GenConstants
.
TPL_SUB
.
equals
(
tplCategory
)
||
GenConstants
.
TPL_SUB_ONE
.
equals
(
tplCategory
))
{
}
else
if
(
GenConstants
.
TPL_SUB
.
equals
(
tplCategory
)
||
GenConstants
.
TPL_SUB_ONE
.
equals
(
tplCategory
))
{
templates
.
add
(
"service.java.ftl"
);
templates
.
add
(
"serviceImpl.java.ftl"
);
templates
.
add
(
"webVueList.vue.ftl"
);
...
...
@@ -190,6 +182,10 @@ public class FreeMarkerUtils {
data
.
put
(
"importList"
,
getImportList
(
genTable
));
data
.
put
(
"columns"
,
genTable
.
getColumns
());
data
.
put
(
"table"
,
genTable
);
data
.
put
(
"code"
,
genTable
.
getCode
());
data
.
put
(
"path"
,
genTable
.
getPath
());
//com.mortals.xhx.feign.area
data
.
put
(
"packageFeignName"
,
"com.mortals.xhx.feign."
+
businessName
);
String
RequestMapping
=
Arrays
.
stream
(
getBusinessNameExt
(
genTable
.
getTableName
()).
split
(
"\\."
)).
collect
(
Collectors
.
joining
(
"/"
));
data
.
put
(
"RequestMapping"
,
RequestMapping
);
...
...
@@ -224,7 +220,7 @@ public class FreeMarkerUtils {
*
* @return 模板列表
*/
public
static
Map
prepareSetFreeMarkerDataByEnum
(
List
<
Map
<
String
,
String
>>
enums
,
String
enumName
,
String
enumClassName
,
String
javaType
)
{
public
static
Map
prepareSetFreeMarkerDataByEnum
(
List
<
Map
<
String
,
String
>>
enums
,
String
enumName
,
String
enumClassName
,
String
javaType
)
{
Map
data
=
new
HashMap
();
data
.
put
(
"enums"
,
enums
);
data
.
put
(
"EnumName"
,
enumName
);
...
...
@@ -405,13 +401,15 @@ public class FreeMarkerUtils {
String
javaPath
=
PROJECT_PATH
+
"/"
+
StringUtils
.
replace
(
packageName
,
"."
,
"/"
)
+
"/"
+
moduleName
;
String
mybatisPath
=
MYBATIS_PATH
+
"/"
+
moduleName
;
String
feignPath
=
FEIGN_PATH
+
"/"
+
businessName
;
String
pduPath
=
PDU_PATH
+
"/"
+
businessName
;
String
vuePath
=
"vue"
;
String
dbPath
=
"db"
;
//实体类输出路径
if
(
template
.
contains
(
"entity.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/model/{}Entity.java"
,
javaPath
,
businessName
,
className
);
}
else
if
(
template
.
contains
(
"entity-tree.java.ftl"
))
{
}
else
if
(
template
.
contains
(
"entity-tree.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/model/{}TreeSelect.java"
,
javaPath
,
businessName
,
className
);
}
else
if
(
template
.
contains
(
"vo.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/model/vo/{}Vo.java"
,
javaPath
,
businessName
,
className
);
...
...
@@ -425,18 +423,15 @@ public class FreeMarkerUtils {
fileName
=
StringUtils
.
format
(
"{}/{}/service/{}Service.java"
,
javaPath
,
businessName
,
className
);
}
else
if
(
template
.
contains
(
"service-tree.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/service/{}Service.java"
,
javaPath
,
businessName
,
className
);
}
else
if
(
template
.
contains
(
"serviceImpl.java.ftl"
))
{
}
else
if
(
template
.
contains
(
"serviceImpl.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/service/impl/{}ServiceImpl.java"
,
javaPath
,
businessName
,
className
);
}
else
if
(
template
.
contains
(
"serviceImpl-tree.java.ftl"
))
{
}
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"
))
{
}
else
if
(
template
.
contains
(
"web.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/web/{}Controller.java"
,
javaPath
,
businessName
,
className
);
}
else
if
(
template
.
contains
(
"webBody.java.ftl"
))
{
}
else
if
(
template
.
contains
(
"webBody.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/web/{}Controller.java"
,
javaPath
,
businessName
,
className
);
}
else
if
(
template
.
contains
(
"webForm.java.ftl"
))
{
}
else
if
(
template
.
contains
(
"webForm.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/web/{}Form.java"
,
javaPath
,
businessName
,
className
);
}
else
if
(
template
.
contains
(
"sqlMap.xml.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/{}Mapper.xml"
,
mybatisPath
,
businessName
,
className
);
...
...
@@ -472,14 +467,17 @@ public class FreeMarkerUtils {
fileName
=
StringUtils
.
format
(
"doc/alldoc.docx"
);
}
else
if
(
template
.
contains
(
"api.doc.ftl"
))
{
fileName
=
StringUtils
.
format
(
"doc/api.md"
);
}
else
if
(
template
.
contains
(
"httpclient.test.ftl"
))
{
}
else
if
(
template
.
contains
(
"httpclient.test.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}/{}Controller.http"
,
TEST_PATH
,
businessName
,
className
);
}
else
if
(
template
.
contains
(
"feign.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/I{}Feign.java"
,
feignPath
,
className
);
}
else
if
(
template
.
contains
(
"pdu.java.ftl"
))
{
fileName
=
StringUtils
.
format
(
"{}/{}Pdu.java"
,
pduPath
,
className
);
}
return
fileName
;
}
/**
* 获取枚举文件名
*/
...
...
@@ -487,7 +485,7 @@ public class FreeMarkerUtils {
// 文件名称
String
fileName
=
""
;
String
javaPath
=
PROJECT_PATH
+
"/com/mortals/xhx/common/code"
;
fileName
=
StringUtils
.
format
(
"{}/{}Enum.java"
,
javaPath
,
StringUtils
.
capitalize
(
enumClassName
));
fileName
=
StringUtils
.
format
(
"{}/{}Enum.java"
,
javaPath
,
StringUtils
.
capitalize
(
enumClassName
));
return
fileName
;
}
...
...
appbuild-manager/src/main/java/com/mortals/xhx/module/app/model/AppEntity.java
View file @
5734b399
package
com.mortals.xhx.module.app.model
;
import
java.util.List
;
import
java.util.ArrayList
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.mortals.framework.annotation.Excel
;
import
com.mortals.framework.model.BaseEntityLong
;
import
com.mortals.xhx.module.app.model.vo.AppVo
;
/**
* 应用信息实体对象
*
* @author zxfei
* @date 2021-11-12
*/
* 应用信息实体对象
*
* @author zxfei
* @date 2022-06-24
*/
public
class
AppEntity
extends
AppVo
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 应用名称
*/
* 应用名称
*/
private
String
name
;
/**
* 备注
*/
* 编码标识
*/
private
String
code
;
/**
* 服务访问相对路径,如/portal
*/
private
String
path
;
/**
* 备注
*/
private
String
remark
;
/**
* 创建用户名称
*/
* 创建用户名称
*/
private
String
createUserName
;
public
AppEntity
(){}
/**
* 获取 应用名称
* @return String
*/
* 获取 应用名称
* @return String
*/
public
String
getName
(){
return
name
;
}
/**
* 设置 应用名称
* @param name
*/
* 设置 应用名称
* @param name
*/
public
void
setName
(
String
name
){
this
.
name
=
name
;
}
/**
* 获取 备注
* @return String
*/
* 获取 编码标识
* @return String
*/
public
String
getCode
(){
return
code
;
}
/**
* 设置 编码标识
* @param code
*/
public
void
setCode
(
String
code
){
this
.
code
=
code
;
}
/**
* 获取 服务访问相对路径,如/portal
* @return String
*/
public
String
getPath
(){
return
path
;
}
/**
* 设置 服务访问相对路径,如/portal
* @param path
*/
public
void
setPath
(
String
path
){
this
.
path
=
path
;
}
/**
* 获取 备注
* @return String
*/
public
String
getRemark
(){
return
remark
;
}
/**
* 设置 备注
* @param remark
*/
* 设置 备注
* @param remark
*/
public
void
setRemark
(
String
remark
){
this
.
remark
=
remark
;
}
/**
* 获取 创建用户名称
* @return String
*/
* 获取 创建用户名称
* @return String
*/
public
String
getCreateUserName
(){
return
createUserName
;
}
/**
* 设置 创建用户名称
* @param createUserName
*/
* 设置 创建用户名称
* @param createUserName
*/
public
void
setCreateUserName
(
String
createUserName
){
this
.
createUserName
=
createUserName
;
}
...
...
@@ -78,7 +116,7 @@ public class AppEntity extends AppVo {
@Override
public
int
hashCode
()
{
return
this
.
getId
().
hashCode
();
return
this
.
getId
().
hashCode
();
}
@Override
public
boolean
equals
(
Object
obj
)
{
...
...
@@ -86,7 +124,7 @@ public class AppEntity extends AppVo {
if
(
obj
instanceof
AppEntity
)
{
AppEntity
tmp
=
(
AppEntity
)
obj
;
if
(
this
.
getId
()
==
tmp
.
getId
())
{
return
true
;
return
true
;
}
}
return
false
;
...
...
@@ -95,14 +133,23 @@ public class AppEntity extends AppVo {
public
String
toString
(){
StringBuilder
sb
=
new
StringBuilder
(
""
);
sb
.
append
(
",name:"
).
append
(
getName
());
sb
.
append
(
",code:"
).
append
(
getCode
());
sb
.
append
(
",path:"
).
append
(
getPath
());
sb
.
append
(
",remark:"
).
append
(
getRemark
());
sb
.
append
(
",createUserName:"
).
append
(
getCreateUserName
());
return
sb
.
toString
();
}
public
void
initAttrValue
(){
this
.
name
=
null
;
this
.
remark
=
null
;
this
.
createUserName
=
null
;
this
.
name
=
null
;
this
.
code
=
null
;
this
.
path
=
null
;
this
.
remark
=
null
;
this
.
createUserName
=
null
;
}
}
\ No newline at end of file
appbuild-manager/src/main/java/com/mortals/xhx/module/app/model/AppQuery.java
View file @
5734b399
This diff is collapsed.
Click to expand it.
appbuild-manager/src/main/resources/bootstrap.yml
View file @
5734b399
...
...
@@ -55,3 +55,38 @@ cookie:
port
:
111
upload
:
path
:
@
profiles.filepath@
# Swagger配置
swagger
:
# 是否开启swagger
enabled
:
true
# 请求前缀
pathMapping
:
# 标题
title
:
'
标题'
# 描述
description
:
'
描述'
# 版本
version
:
'
版本号:
1.0'
# 作者信息
contact
:
name
:
zxfei
email
:
8153694@qq.com
url
:
http://www.baidu.com
groups
:
-
name
:
1.产品模块
basePackage
:
com.mortals.xhx.module.product
knife4j
:
# 是否开启Knife4j增强模式
enable
:
true
# 开启Swagger的Basic认证功能,默认是false
# 前端Ui的个性化配置属性
setting
:
# 默认语言
language
:
zh-CN
# 是否显示Footer
enableFooter
:
false
# 是否开启动态参数调试功能
enableDynamicParameter
:
true
# 是否在每个Debug调试栏后显示刷新变量按钮
enableReloadCacheParameter
:
true
\ No newline at end of file
appbuild-manager/src/main/resources/sqlmap/module/app/AppMapper.xml
View file @
5734b399
This diff is collapsed.
Click to expand it.
appbuild-manager/src/main/resources/static/doc/AllInOne.css
deleted
100644 → 0
View file @
488bb754
This diff is collapsed.
Click to expand it.
appbuild-manager/src/main/resources/static/doc/AllInOne.md.md
deleted
100644 → 0
View file @
488bb754
Version | Update Time | Status | Author | Description
---|---|---|---|---
v2021-11-05 16:10:28|2021-11-05 16:10:28|auto|@finegirl|Created by smart-doc
类型名称|类型描述|参考样例
---|---|---
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"}]
## 错误码列表
Error code |Description
---|---
200|ok
400|Bad Request
401|Unauthorized
403|Forbidden
404|Not Found
415|Unsupported Media Type
500|Internal Server Error
502|Bad Gateway
503|Service Unavailable
appbuild-manager/src/main/resources/static/doc/api.md
deleted
100644 → 0
View file @
488bb754
This diff is collapsed.
Click to expand it.
appbuild-manager/src/main/resources/static/doc/index.html
deleted
100644 → 0
View file @
488bb754
<!DOCTYPE html>
<html
lang=
"en"
><head><meta
charset=
"UTF-8"
><meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
><meta
name=
"generator"
content=
"smart-doc"
><title>
API Reference
</title><link
rel=
"stylesheet"
href=
"https://fonts.googleapis.cnpmjs.org/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"
><link
rel=
"stylesheet"
href=
"AllInOne.css?v=1636099828588"
/><link
rel=
"stylesheet"
href=
"https://cdn.bootcdn.net/ajax/libs/highlight.js/10.3.2/styles/null.min.css"
><style>
.literalblock
pre
,
.listingblock
pre
:not
(
.highlight
),
.listingblock
pre
[
class
=
"highlight"
],
.listingblock
pre
[
class
^=
"highlight "
],
.listingblock
pre
.CodeRay
,
.listingblock
pre
.prettyprint
{
background
:
#f7f7f8
}
.hljs
{
padding
:
0
}
</style><script
src=
"https://cdn.bootcdn.net/ajax/libs/highlight.js/10.3.2/highlight.min.js"
></script><script
src=
"https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"
></script></head><body
class=
"book toc2 toc-left"
><div
id=
"header"
><div
id=
"toc"
class=
"toc2"
><div
id=
"book-search-input"
><input
id=
"search"
type=
"text"
placeholder=
"Type to search"
></div><div
id=
"toctitle"
><span>
API Reference
</span></div><ul
id=
"accordion"
class=
"sectlevel1"
><li><a
href=
"#_error_code_list"
>
1.
错误码列表
</a></li></ul></div></div><div
id=
"content"
><div
id=
"preamble"
><div
class=
"sectionbody"
><table
class=
"tableblock frame-all grid-all spread"
><colgroup><col
style=
"width: 20%;"
><col
style=
"width: 20%;"
><col
style=
"width: 20%;"
><col
style=
"width: 20%;"
><col
style=
"width: 20%;"
></colgroup><thead><tr><th
class=
"tableblock halign-left valign-top"
>
Version
</th><th
class=
"tableblock halign-left valign-top"
>
Update Time
</th><th
class=
"tableblock halign-left valign-top"
>
Status
</th><th
class=
"tableblock halign-left valign-top"
>
Author
</th><th
class=
"tableblock halign-left valign-top"
>
Description
</th></tr></thead><tbody><tr><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
v2021-11-05 16:10:28
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
2021-11-05 16:10:28
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
auto
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
@finegirl
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
Created by smart-doc
</p></td></tr></tbody></table></div></div><div
class=
"sect1"
><h2
id=
"_error_code_list"
><a
class=
"anchor"
href=
"#_error_code_list"
></a><a
class=
"link"
href=
"#_error_code_list"
>
1.
错误码列表
</a></h2><div
class=
"sectionbody"
><table
class=
"tableblock frame-all grid-all spread"
><colgroup><col
style=
"width: 50%;"
><col
style=
"width: 50%;"
></colgroup><thead><tr><th
class=
"tableblock halign-left valign-top"
>
Error code
</th><th
class=
"tableblock halign-left valign-top"
>
Description
</th></tr></thead><tbody><tr><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
200
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
ok
</p></td></tr><tr><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
400
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
Bad Request
</p></td></tr><tr><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
401
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
Unauthorized
</p></td></tr><tr><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
403
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
Forbidden
</p></td></tr><tr><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
404
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
Not Found
</p></td></tr><tr><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
415
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
Unsupported Media Type
</p></td></tr><tr><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
500
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
Internal Server Error
</p></td></tr><tr><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
502
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
Bad Gateway
</p></td></tr><tr><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
503
</p></td><td
class=
"tableblock halign-left valign-top"
><p
class=
"tableblock"
>
Service Unavailable
</p></td></tr></tbody></table></div></div><footer
class=
"page-footer"
><span
class=
"copyright"
>
Generated by smart-doc at 2021-11-05 16:10:28
</span><span
class=
"footer-modification"
>
Suggestions,contact,support and error reporting on
<a
href=
"https://gitee.com/smart-doc-team/smart-doc"
target=
"_blank"
>
Gitee
</a>
or
<ahref
="
https:
//
github
.
com
/
smart-doc-group
/
smart-doc
.
git
"
target=
"_blank"
>
Github
</a></span></footer><div
href=
"javascript:void(0)"
id=
"toTop"
><img
id=
"upArrow"
src=
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABlUlEQVRIS+2UvUvDQBiH398Rly4udnARwUXs4qAIOigI4iL30dTZ2T9AcNPVvUsXF7uYttdScNDFRRAnB11cFFwKxcXBJTQnJ6lEbRI/CIiY9e6e5/e+9+ZAGX/ImE9/QKCU2jfGbGTQqq4xZgtSyisiKmQgIAAVCCFWAGxnIOhqrdd/xyUrpRZsP40xSwA6AI57vd5eq9W6T6s8tQIppSKi+gDQNREprfVNkiRRwDlfY4xZ+FAIuSOi8Qjw0nEc5XnebZwkViClXA2T5+xhY8xus9ncEUJMAziITN5FEARuXLsGCoQQywBs8uEovJ+Scz7FGDuMSM4cx3E9z+u8r+SDQEq5SEQ1IhoZBE+QnBKRq7V+iEreCDjn84wxCx9NgidITnK5nFutVh/7e14FSqnZIAhqAMY+A4+TADjyfb/Ubref7J4XQXhxNvnEV+AJlbTy+XypUqn4KBaLBZuciCa/A0+opN5oNFz7FpUBbP4EHicxxsyAcz7HGDvvz3nar5+2Ho5wOQwsU5+KNGDa+r8grUP0DBLjtRtNKEliAAAAAElFTkSuQmCC"
><span
id=
"upText"
>
Top
</span></div></div>
<script
src=
"search.js?v=1636099828588"
></script>
<script>
$
(
function
(){
const
Accordion
=
function
(
el
,
multiple
){
this
.
el
=
el
||
{};
this
.
multiple
=
multiple
||
false
;
const
links
=
this
.
el
.
find
(
"
.dd
"
);
links
.
on
(
"
click
"
,{
el
:
this
.
el
,
multiple
:
this
.
multiple
},
this
.
dropdown
)};
Accordion
.
prototype
.
dropdown
=
function
(
e
){
const
$el
=
e
.
data
.
el
;
const
$this
=
$
(
this
),
$next
=
$this
.
next
();
$next
.
slideToggle
();
$this
.
parent
().
toggleClass
(
"
open
"
);
if
(
!
e
.
data
.
multiple
){
$el
.
find
(
"
.submenu
"
).
not
(
$next
).
slideUp
(
"
20
"
).
parent
().
removeClass
(
"
open
"
)}};
new
Accordion
(
$
(
"
#accordion
"
),
false
);
hljs
.
initHighlightingOnLoad
();
$
(
window
).
scroll
(
function
(){
if
(
$
(
window
).
scrollTop
()
>
100
){
$
(
"
#toTop
"
).
fadeIn
(
1500
);
$
(
"
#toTop
"
).
hover
(
function
(){
$
(
"
#upArrow
"
).
hide
();
$
(
"
#upText
"
).
show
()},
function
(){
$
(
"
#upArrow
"
).
show
();
$
(
"
#upText
"
).
hide
()})}
else
{
$
(
"
#toTop
"
).
fadeOut
(
1500
)}});
$
(
"
#toTop
"
).
click
(
function
(){
$
(
"
body, html
"
).
animate
({
scrollTop
:
0
},
1000
);
return
false
})});
</script>
</body>
</html>
\ No newline at end of file
appbuild-manager/src/main/resources/static/doc/search.js
deleted
100644 → 0
View file @
488bb754
let
api
=
[];
api
.
push
({
alias
:
'
error
'
,
order
:
'
1
'
,
link
:
'
error_code_list
'
,
desc
:
'
错误码列表
'
,
list
:
[]
})
api
.
push
({
alias
:
'
dict
'
,
order
:
'
2
'
,
link
:
'
dict_list
'
,
desc
:
'
数据字典
'
,
list
:
[]
})
document
.
onkeydown
=
keyDownSearch
;
function
keyDownSearch
(
e
)
{
const
theEvent
=
e
;
const
code
=
theEvent
.
keyCode
||
theEvent
.
which
||
theEvent
.
charCode
;
if
(
code
==
13
)
{
const
search
=
document
.
getElementById
(
'
search
'
);
const
searchValue
=
search
.
value
;
let
searchArr
=
[];
for
(
let
i
=
0
;
i
<
api
.
length
;
i
++
)
{
let
apiData
=
api
[
i
];
const
desc
=
apiData
.
desc
;
if
(
desc
.
indexOf
(
searchValue
)
>
-
1
)
{
searchArr
.
push
({
order
:
apiData
.
order
,
desc
:
apiData
.
desc
,
link
:
apiData
.
link
,
list
:
apiData
.
list
});
}
else
{
let
methodList
=
apiData
.
list
||
[];
let
methodListTemp
=
[];
for
(
let
j
=
0
;
j
<
methodList
.
length
;
j
++
)
{
const
methodData
=
methodList
[
j
];
const
methodDesc
=
methodData
.
desc
;
if
(
methodDesc
.
indexOf
(
searchValue
)
>
-
1
)
{
methodListTemp
.
push
(
methodData
);
break
;
}
}
if
(
methodListTemp
.
length
>
0
)
{
const
data
=
{
order
:
apiData
.
order
,
desc
:
apiData
.
desc
,
link
:
apiData
.
link
,
list
:
methodListTemp
};
searchArr
.
push
(
data
);
}
}
}
let
html
;
if
(
searchValue
==
''
)
{
const
liClass
=
""
;
const
display
=
"
display: none
"
;
html
=
buildAccordion
(
api
,
liClass
,
display
);
document
.
getElementById
(
'
accordion
'
).
innerHTML
=
html
;
}
else
{
const
liClass
=
"
open
"
;
const
display
=
"
display: block
"
;
html
=
buildAccordion
(
searchArr
,
liClass
,
display
);
document
.
getElementById
(
'
accordion
'
).
innerHTML
=
html
;
}
const
Accordion
=
function
(
el
,
multiple
)
{
this
.
el
=
el
||
{};
this
.
multiple
=
multiple
||
false
;
const
links
=
this
.
el
.
find
(
'
.dd
'
);
links
.
on
(
'
click
'
,
{
el
:
this
.
el
,
multiple
:
this
.
multiple
},
this
.
dropdown
);
};
Accordion
.
prototype
.
dropdown
=
function
(
e
)
{
const
$el
=
e
.
data
.
el
;
$this
=
$
(
this
),
$next
=
$this
.
next
();
$next
.
slideToggle
();
$this
.
parent
().
toggleClass
(
'
open
'
);
if
(
!
e
.
data
.
multiple
)
{
$el
.
find
(
'
.submenu
'
).
not
(
$next
).
slideUp
(
"
20
"
).
parent
().
removeClass
(
'
open
'
);
}
};
new
Accordion
(
$
(
'
#accordion
'
),
false
);
}
}
function
buildAccordion
(
apiData
,
liClass
,
display
)
{
let
html
=
""
;
let
doc
;
if
(
apiData
.
length
>
0
)
{
for
(
let
j
=
0
;
j
<
apiData
.
length
;
j
++
)
{
html
+=
'
<li class="
'
+
liClass
+
'
">
'
;
html
+=
'
<a class="dd" href="#_
'
+
apiData
[
j
].
link
+
'
">
'
+
apiData
[
j
].
order
+
'
.
'
+
apiData
[
j
].
desc
+
'
</a>
'
;
html
+=
'
<ul class="sectlevel2" style="
'
+
display
+
'
">
'
;
doc
=
apiData
[
j
].
list
;
for
(
let
m
=
0
;
m
<
doc
.
length
;
m
++
)
{
html
+=
'
<li><a href="#_
'
+
apiData
[
j
].
order
+
'
_
'
+
doc
[
m
].
order
+
'
_
'
+
doc
[
m
].
desc
+
'
">
'
+
apiData
[
j
].
order
+
'
.
'
+
doc
[
m
].
order
+
'
.
'
+
doc
[
m
].
desc
+
'
</a> </li>
'
;
}
html
+=
'
</ul>
'
;
html
+=
'
</li>
'
;
}
}
return
html
;
}
\ No newline at end of file
appbuild-manager/src/main/resources/template/doc/api.md.ftl
View file @
5734b399
...
...
@@ -14,6 +14,204 @@ BigDecimal|小数类型|545.256
object|对象类型|{"name":"zhang3"}
arrays|数组类型|[{"name":"zhang3"},{"name":"zhang2"}]
## 系统服务
### 登录
**请求URL:** login/login
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 用户登录
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
loginName|String|用户名称|是|-
password|String|用户密码|是|-
securityCode|String|校验码|是|-
**请求样例:**
```
{
"loginName":"zhang3",
"password":"123456",
"securityCode":"5455"
}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
{
"msg":"登录成功",
"code":1,
"data":{
}
}
```
### 登出
**请求URL:** login/logout
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 用户退出注销
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
**请求样例:**
```
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
```
### 修改密码
**请求URL:** user/change/password
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 用户修改密码
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
loginName|String|用户名称|是|-
oldPwd|String|用户加密后密码|是|-
newPwd|String|用户加密后新密码|是|-
**请求样例:**
```
{
"loginName":"zhang3",
"oldPwd":"123456",
"newPwd":"5455"
}
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
{
"msg":"修改密码成功",
"code":1,
"data":{}
}
```
### 获取验证码
**请求URL:** securitycode/createCode
**请求方式:** GET
**内容类型:** image/gif
**简要描述:** 用户退出注销
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
**请求样例:**
```
```
**响应参数:**
**响应消息样例:**
```
```
### 上传附件
**请求URL:** file/commonupload
**请求方式:** POST
**内容类型:** multipart/form-data
**简要描述:** 用户上传附件
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
file|multipart|附件|是|-
prePath|String|附件存放相对路径|否|不填时候默认为/file/fileupload
**请求样例:**
```
http://127.0.0.1/file/commonupload?prePath=/file/fileupload
Content-Type: multipart/form-data; boundary=WebAppBoundary
--WebAppBoundary
Content-Disposition: form-data; name="file"; filename="1.excel"
Content-Type: multipart/form-data
```
**响应参数:**
**响应消息样例:**
```
```
<#list tableList as table>
## ${table.functionName}
...
...
appbuild-manager/src/main/resources/template/java/entityQuery.java.ftl
View file @
5734b399
...
...
@@ -49,7 +49,7 @@ public class ${ClassName}Query extends ${ClassName}Entity {
public
${
ClassName
}
Query
(){}
<#
list
columns
as
column
>
<#
list
columns
as
column
>
<#
if
column
.
javaType
==
"Long"
||
column
.
javaType
==
"Integer"
||
column
.
javaType
==
"BigDecimal"
>
/**
*
获取
开始
${
column
.
columnComment
}
...
...
@@ -256,7 +256,7 @@ public class ${ClassName}Query extends ${ClassName}Entity {
}
</#
if
>
</#
list
>
</#
list
>
/**
*
获取
OR
条件集合,列表项之间是
OR
,项内容之间是
AND
,如:
(
list
[
0
]
.1
and
list
[
0
]
.2
)
or
(
list
[
1
]
.3
and
list
[
1
]
.4
)
*
@
return
orConditionList
...
...
appbuild-manager/src/main/resources/template/java/feign.java.ftl
0 → 100644
View file @
5734b399
package
${
packageFeignName
};
import
com
.
mortals
.
xhx
.
common
.
pdu
.${
businessName
}.${
ClassName
}
Pdu
;
import
com
.
alibaba
.
fastjson
.
JSON
;
import
com
.
mortals
.
framework
.
common
.
Rest
;
import
com
.
mortals
.
xhx
.
feign
.
IFeign
;
import
feign
.
hystrix
.
FallbackFactory
;
import
lombok
.
extern
.
slf4j
.
Slf4j
;
import
org
.
springframework
.
cloud
.
openfeign
.
FeignClient
;
import
org
.
springframework
.
stereotype
.
Component
;
import
org
.
springframework
.
web
.
bind
.
annotation
.*;
/**
*
${
functionName
}
Feign
接口
*
@
author
${
author
}
*
@
date
${
datetime
}
*/
@
FeignClient
(
name
=
"${code}"
,
path
=
"${path}"
,
fallback
=
${
ClassName
}
FeignFallbackFactory
.
class
)
public
interface
I
${
ClassName
}
Feign
extends
IFeign
{
/**
*
查看
${
functionName
}
列表
*
*
@
param
${
className
}
Pdu
*
@
return
*/
@
PostMapping
(
value
=
"/${RequestMapping}/list"
)
String
list
(@
RequestBody
${
ClassName
}
Pdu
${
className
}
Pdu
);
/**
*
查看
${
functionName
}
*
*
@
param
id
*
@
return
*/
@
GetMapping
(
value
=
"/${RequestMapping}/info"
)
String
info
(@
RequestParam
(
value
=
"id"
)
Long
id
);
/**
*
删除
${
functionName
}
*
*
@
param
ids
*
@
return
*/
@
GetMapping
(
value
=
"/${RequestMapping}/delete"
)
String
delete
(
Long
[]
ids
,@
RequestHeader
(
"Authorization"
)
String
authorization
);
/**
*
${
functionName
}
保存更新
*
*
@
param
${
className
}
Pdu
*
@
return
*/
@
PostMapping
(
value
=
"/${RequestMapping}/save"
)
String
save
(@
RequestBody
${
ClassName
}
Pdu
${
className
}
Pdu
,@
RequestHeader
(
"Authorization"
)
String
authorization
);
}
@
Slf4j
@
Component
class
${
ClassName
}
FeignFallbackFactory
implements
FallbackFactory
<
I
${
ClassName
}
Feign
>
{
@
Override
public
I
${
ClassName
}
Feign
create
(
Throwable
t
)
{
return
new
I
${
ClassName
}
Feign
()
{
@
Override
public
String
list
(${
ClassName
}
Pdu
${
className
}
Pdu
)
{
return
JSON
.
toJSONString
(
Rest
.
fail
(
"暂时无法获取${functionName}列表,请稍后再试!"
));
}
@
Override
public
String
info
(
Long
id
)
{
return
JSON
.
toJSONString
(
Rest
.
fail
(
"暂时无法获取${functionName}详细,请稍后再试!"
));
}
@
Override
public
String
delete
(
Long
[]
ids
,
String
authorization
)
{
return
JSON
.
toJSONString
(
Rest
.
fail
(
"暂时无法删除${functionName},请稍后再试!"
));
}
@
Override
public
String
save
(${
ClassName
}
Pdu
${
className
}
Pdu
,
String
authorization
)
{
return
JSON
.
toJSONString
(
Rest
.
fail
(
"暂时无法保存${functionName},请稍后再试!"
));
}
};
}
}
appbuild-manager/src/main/resources/template/java/httpclient.test.ftl
View file @
5734b399
###登录
POST {{baseUrl}}/login/login
Content-Type: application/json
{
"loginName":"admin",
"password":"admin",
"securityCode":"8888"
}
> {%
client.global.set("SmsSet_id", JSON.parse(response.body).data.id);
client.global.set("authToken", JSON.parse(response.body).data.token);
%}
###${functionName}列表
POST {{baseUrl}}/${RequestMapping}/list
...
...
appbuild-manager/src/main/resources/template/java/pdu.java.ftl
0 → 100644
View file @
5734b399
This diff is collapsed.
Click to expand it.
appbuild-manager/src/main/resources/template/java/vo.java.ftl
View file @
5734b399
...
...
@@ -26,8 +26,6 @@ package ${packageName}.model.vo;
</#
if
>
import
com
.
mortals
.
framework
.
model
.${
Entity
};
import
${
packageName
}.
model
.${
ClassName
}
Entity
;
import
lombok
.
Data
;
import
java
.
util
.
ArrayList
;
import
java
.
util
.
List
;
/**
...
...
@@ -36,7 +34,6 @@ import java.util.List;
*
@
author
${
author
}
*
@
date
${
datetime
}
*/
@
Data
public
class
${
ClassName
}
Vo
extends
${
Entity
}
{
<#
if
table
.
tplCategory
==
"tree"
>
...
...
common-lib/src/main/java/com/mortals/xhx/utils/SpringUtils.java
View file @
5734b399
package
com.mortals.xhx.utils
;
import
org.springframework.beans.BeansException
;
import
org.springframework.
context.Application
Context
;
import
org.springframework.
context.ApplicationContextAware
;
import
cn.hutool.extra.spring.SpringUtil
;
import
org.springframework.
aop.framework.Aop
Context
;
import
org.springframework.
beans.factory.NoSuchBeanDefinitionException
;
import
org.springframework.stereotype.Component
;
/**
* @ClassName SpringUtils
* @Description TODO
* @Author finegirl
* @Date 2020/4/24 15:32
**/
@Component
public
class
SpringUtils
implements
ApplicationContextAware
{
public
final
class
SpringUtils
extends
SpringUtil
{
private
static
ApplicationContext
applicationContext
;
/**
* 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true
*
* @param name
* @return boolean
*/
public
static
boolean
containsBean
(
String
name
)
{
return
getBeanFactory
().
containsBean
(
name
);
}
@Override
public
void
setApplicationContext
(
ApplicationContext
applicationContext
)
throws
BeansException
{
SpringUtils
.
applicationContext
=
applicationContext
;
/**
* 判断以给定名字注册的bean定义是一个singleton还是一个prototype。
* 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
*
* @param name
* @return boolean
*/
public
static
boolean
isSingleton
(
String
name
)
throws
NoSuchBeanDefinitionException
{
return
getBeanFactory
().
isSingleton
(
name
);
}
public
static
ApplicationContext
getApplicationContext
()
{
return
applicationContext
;
/**
* @param name
* @return Class 注册对象的类型
*/
public
static
Class
<?>
getType
(
String
name
)
throws
NoSuchBeanDefinitionException
{
return
getBeanFactory
().
getType
(
name
);
}
/**
* 对应的被管理类有别名时使用
* 如果给定的bean名字在bean定义中有别名,则返回这些别名
*
* @param name
* @param <T>
* @return
* @throws BeansException
*/
@SuppressWarnings
(
"unchecked"
)
public
static
<
T
>
T
getBean
(
String
name
)
throws
BeansException
{
return
(
T
)
applicationContext
.
getBean
(
name
);
public
static
String
[]
getAliases
(
String
name
)
throws
NoSuchBeanDefinitionException
{
return
getBeanFactory
().
getAliases
(
name
);
}
/**
* 在对应的注解内未使用别名时 使用
* 获取aop代理对象
*
* @param invoker
* @return
*/
public
static
<
T
>
T
getBean
(
Class
<
T
>
clazz
)
{
return
applicationContext
.
getBean
(
clazz
);
@SuppressWarnings
(
"unchecked"
)
public
static
<
T
>
T
getAopProxy
(
T
invoker
)
{
return
(
T
)
AopContext
.
currentProxy
();
}
}
pom.xml
View file @
5734b399
...
...
@@ -101,6 +101,15 @@
</exclusions>
</dependency>
<dependency>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
io.swagger
</groupId>
<artifactId>
swagger-annotations
</artifactId>
</dependency>
<dependency>
<groupId>
org.mapstruct
</groupId>
...
...
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