Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibzdict
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibzdict
提交
a049ff63
提交
a049ff63
编写于
4月 24, 2020
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ibizdev提交
上级
7b6b1b6c
变更
33
展开全部
隐藏空白字符变更
内嵌
并排
正在显示
33 个修改的文件
包含
774 行增加
和
323 行删除
+774
-323
chart-series.ts
app_web/src/model/chart-detail/chart-series.ts
+1
-1
app-index-view-appmenu-base.vue
...pp/app-index-view-appmenu/app-index-view-appmenu-base.vue
+5
-5
app-index-view-appmenu.less
...ts/app/app-index-view-appmenu/app-index-view-appmenu.less
+4
-0
default-searchform-base.vue
...zdict-item/default-searchform/default-searchform-base.vue
+25
-23
default-searchform.less
...s/ibzdict-item/default-searchform/default-searchform.less
+5
-1
main-grid-base.vue
...web/src/widgets/ibzdict-item/main-grid/main-grid-base.vue
+15
-1
default-searchform-base.vue
...ts/ibzdict/default-searchform/default-searchform-base.vue
+25
-23
default-searchform.less
...idgets/ibzdict/default-searchform/default-searchform.less
+5
-1
main-grid-base.vue
app_web/src/widgets/ibzdict/main-grid/main-grid-base.vue
+15
-1
pom.xml
ibzdict-app/ibzdict-app-web/pom.xml
+35
-41
webSecurityConfig.java
...rc/main/java/cn/ibizlab/web/config/webSecurityConfig.java
+1
-47
application-web-dev.yml
...bzdict-app-web/src/main/resources/application-web-dev.yml
+2
-20
application-web-prod.yml
...zdict-app-web/src/main/resources/application-web-prod.yml
+4
-43
application.yml
...ct-app/ibzdict-app-web/src/main/resources/application.yml
+1
-1
pom.xml
ibzdict-boot/pom.xml
+36
-29
DevBootApplication.java
...ict-boot/src/main/java/cn/ibizlab/DevBootApplication.java
+4
-23
DevBootSecurityConfig.java
...rc/main/java/cn/ibizlab/config/DevBootSecurityConfig.java
+99
-0
application-dev.yml
ibzdict-boot/src/main/resources/application-dev.yml
+3
-15
application.yml
ibzdict-boot/src/main/resources/application.yml
+1
-1
IBZDictItemServiceImpl.java
...bizlab/core/dict/service/impl/IBZDictItemServiceImpl.java
+10
-1
IBZDictServiceImpl.java
...cn/ibizlab/core/dict/service/impl/IBZDictServiceImpl.java
+18
-1
DroolsAutoConfiguration.java
.../cn/ibizlab/core/util/config/DroolsAutoConfiguration.java
+104
-0
pom.xml
ibzdict-provider/ibzdict-provider-dictapi/pom.xml
+37
-0
dictapiSecurityConfig.java
...java/cn/ibizlab/dictapi/config/dictapiSecurityConfig.java
+3
-23
IBZDictItemResource.java
...ain/java/cn/ibizlab/dictapi/rest/IBZDictItemResource.java
+92
-17
IBZDictResource.java
...rc/main/java/cn/ibizlab/dictapi/rest/IBZDictResource.java
+51
-3
application-dictapi-dev.yml
...er-dictapi/src/main/resources/application-dictapi-dev.yml
+7
-0
application-dictapi-prod.yml
...r-dictapi/src/main/resources/application-dictapi-prod.yml
+7
-0
application.yml
...zdict-provider-dictapi/src/main/resources/application.yml
+1
-2
AppController.java
...til/src/main/java/cn/ibizlab/util/rest/AppController.java
+26
-0
AuthenticationController.java
...n/java/cn/ibizlab/util/rest/AuthenticationController.java
+71
-0
application-sys.yml
ibzdict-util/src/main/resources/application-sys.yml
+60
-0
pom.xml
pom.xml
+1
-0
未找到文件。
app_web/src/model/chart-detail/chart-series.ts
浏览文件 @
a049ff63
...
...
@@ -133,7 +133,7 @@ export class ChartSeries {
this
.
type
=
!
Object
.
is
(
opts
.
type
,
''
)
?
opts
.
type
:
''
;
this
.
name
=
!
Object
.
is
(
opts
.
name
,
''
)
?
opts
.
name
:
''
;
this
.
caption
=
!
Object
.
is
(
opts
.
caption
,
''
)
?
opts
.
caption
:
''
;
this
.
seriesIdField
=
!
Object
.
is
(
opts
.
seriesIdField
,
''
)
?
opts
.
seriesId
Field
:
''
;
this
.
seriesIdField
=
(
opts
.
seriesIdField
&&
!
Object
.
is
(
opts
.
seriesIdField
,
''
))
?
opts
.
seriesIdField
:
(
opts
.
seriesNameField
&&
!
Object
.
is
(
opts
.
seriesNameField
,
''
))
?
opts
.
seriesName
Field
:
''
;
this
.
seriesNameField
=
!
Object
.
is
(
opts
.
seriesNameField
,
''
)
?
opts
.
seriesNameField
:
''
;
this
.
index
=
this
.
index
?
this
.
index
:
0
;
this
.
chart
=
opts
.
chart
?
opts
.
chart
:
null
;
...
...
app_web/src/widgets/app/app-index-view-appmenu/app-index-view-appmenu-base.vue
浏览文件 @
a049ff63
...
...
@@ -21,7 +21,7 @@
<
template
v-else
>
<i
class=
'fa fa-cogs app-menu-icon'
></i>
</
template
>
<span
class=
'text'
slot=
'title'
>
{{$t('app.menus.appindexview.' + item0.name)}}
</span>
<span
class=
'text'
:title=
"$t('app.menus.appindexview.' + item0.name)"
>
{{$t('app.menus.appindexview.' + item0.name)}}
</span>
</template>
<
template
v-for=
"item1 in item0.items"
>
<template
v-if=
"item1.items && Array.isArray(item1.items) && item1.items.length > 0"
>
...
...
@@ -33,7 +33,7 @@
<
template
v-else-if=
"item1.iconcls && item1.iconcls != ''"
>
<i
:class=
"[item1.iconcls, 'app-menu-icon']"
></i>
</
template
>
<span
class=
'text'
slot=
'title'
>
{{$t('app.menus.appindexview.' + item1.name)}}
</span>
<span
class=
'text'
:title=
"$t('app.menus.appindexview.' + item1.name)"
>
{{$t('app.menus.appindexview.' + item1.name)}}
</span>
</template>
<
template
v-for=
"item2 in item1.items"
>
<template
v-if=
"item2.type =='MENUITEM'"
>
...
...
@@ -45,7 +45,7 @@
<i
:class=
"[item2.iconcls, 'app-menu-icon']"
></i>
</
template
>
<
template
slot=
"title"
>
<span
class=
"text"
>
{{
$t
(
'app.menus.appindexview.'
+
item2
.
name
)
}}
</span>
<span
class=
"text"
:title=
"$t('app.menus.appindexview.' + item2.name)"
>
{{
$t
(
'app.menus.appindexview.'
+
item2
.
name
)
}}
</span>
<template
v-if=
"counterdata && counterdata[item2.counterid] && counterdata[item2.counterid] > 0"
>
<span
class=
"pull-right"
>
<badge
:count=
"counterdata[item2.counterid]"
:overflow-count=
"9999"
></badge>
...
...
@@ -70,7 +70,7 @@
<i
:class=
"[item1.iconcls, 'app-menu-icon']"
></i>
</
template
>
<
template
slot=
"title"
>
<span
class=
"text"
>
{{
$t
(
'app.menus.appindexview.'
+
item1
.
name
)
}}
</span>
<span
class=
"text"
:title=
"$t('app.menus.appindexview.' + item1.name)"
>
{{
$t
(
'app.menus.appindexview.'
+
item1
.
name
)
}}
</span>
<template
v-if=
"counterdata && counterdata[item1.counterid] && counterdata[item1.counterid] > 0"
>
<span
class=
"pull-right"
>
<badge
:count=
"counterdata[item1.counterid]"
:overflow-count=
"9999"
></badge>
...
...
@@ -99,7 +99,7 @@
<i
class=
'fa fa-cogs app-menu-icon'
></i>
</
template
>
<
template
slot=
"title"
>
<span
class=
"text"
>
{{
$t
(
'app.menus.appindexview.'
+
item0
.
name
)
}}
</span>
<span
class=
"text"
:title=
"$t('app.menus.appindexview.' + item0.name)"
>
{{
$t
(
'app.menus.appindexview.'
+
item0
.
name
)
}}
</span>
<template
v-if=
"counterdata && counterdata[item0.counterid] && counterdata[item0.counterid] > 0"
>
<span
class=
"pull-right"
>
<badge
:count=
"counterdata[item0.counterid]"
:overflow-count=
"9999"
></badge>
...
...
app_web/src/widgets/app/app-index-view-appmenu/app-index-view-appmenu.less
浏览文件 @
a049ff63
...
...
@@ -10,6 +10,10 @@
> .el-menu {
border-right: 0;
.el-menu-item {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
word-break: break-all;
.ivu-badge {
.ivu-badge-count {
box-shadow: 0 0 0 0px #fff;
...
...
app_web/src/widgets/ibzdict-item/default-searchform/default-searchform-base.vue
浏览文件 @
a049ff63
<
template
>
<i-form
:model=
"this.data"
class=
'app-search-form'
ref=
'searchform'
style=
""
>
<input
style=
"display:none;"
/>
<row
>
<i-col
v-show=
"detailsModel.n_ibzdictitemname_like.visible"
:style=
"
{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12, offset: 0 }">
<app-form-item
name=
'n_ibzdictitemname_like'
:itemRules=
"this.rules.n_ibzdictitemname_like"
class=
''
:caption=
"$t('ibzdictitem.default_searchform.details.n_ibzdictitemname_like')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.n_ibzdictitemname_like.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<input-box
v-model=
"data.n_ibzdictitemname_like"
@
enter=
"onEnter($event)"
:disabled=
"detailsModel.n_ibzdictitemname_like.disabled"
type=
'text'
style=
"width:100px;"
></input-box>
</app-form-item>
</i-col>
<i-col
v-show=
"detailsModel.n_dictitemval_like.visible"
:style=
"
{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12, offset: 0 }">
<app-form-item
name=
'n_dictitemval_like'
:itemRules=
"this.rules.n_dictitemval_like"
class=
''
:caption=
"$t('ibzdictitem.default_searchform.details.n_dictitemval_like')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.n_dictitemval_like.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<input-box
v-model=
"data.n_dictitemval_like"
@
enter=
"onEnter($event)"
:disabled=
"detailsModel.n_dictitemval_like.disabled"
type=
'text'
style=
"width:100px;"
></input-box>
</app-form-item>
</i-col>
</row>
<row
v-show=
"Object.keys(data).length>0"
>
<i-col
:md=
"
{ span: 4, offset: 20 }" :sm="{ span: 4, offset: 20 }" :lg="{ span: 4, offset: 20 }">
<i-button
class=
'search_reset'
size=
"default"
type=
"primary"
@
click=
"onSearch"
>
{{
$t
(
'app.searchButton.search'
)
}}
</i-button>
<i-button
class=
'search_reset'
size=
"default"
@
click=
"onReset"
>
{{
this
.
$t
(
'app.searchButton.reset'
)
}}
</i-button>
</i-col>
</row>
<input
style=
"display:none;"
/>
<row>
<i-col
span=
"20"
>
<row>
<i-col
v-show=
"detailsModel.n_ibzdictitemname_like.visible"
:style=
"
{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12, offset: 0 }">
<app-form-item
name=
'n_ibzdictitemname_like'
:itemRules=
"this.rules.n_ibzdictitemname_like"
class=
''
:caption=
"$t('ibzdictitem.default_searchform.details.n_ibzdictitemname_like')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.n_ibzdictitemname_like.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<input-box
v-model=
"data.n_ibzdictitemname_like"
@
enter=
"onEnter($event)"
:disabled=
"detailsModel.n_ibzdictitemname_like.disabled"
type=
'text'
style=
"width:100px;"
></input-box>
</app-form-item>
</i-col>
<i-col
v-show=
"detailsModel.n_dictitemval_like.visible"
:style=
"
{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12, offset: 0 }">
<app-form-item
name=
'n_dictitemval_like'
:itemRules=
"this.rules.n_dictitemval_like"
class=
''
:caption=
"$t('ibzdictitem.default_searchform.details.n_dictitemval_like')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.n_dictitemval_like.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<input-box
v-model=
"data.n_dictitemval_like"
@
enter=
"onEnter($event)"
:disabled=
"detailsModel.n_dictitemval_like.disabled"
type=
'text'
style=
"width:100px;"
></input-box>
</app-form-item>
</i-col>
</row>
</i-col>
<i-col
span=
"4"
>
<row
v-show=
"Object.keys(data).length>0"
>
<i-button
class=
'search_reset'
size=
"default"
type=
"primary"
@
click=
"onSearch"
>
{{
$t
(
'app.searchButton.search'
)
}}
</i-button>
<i-button
class=
'search_reset'
size=
"default"
@
click=
"onReset"
>
{{
this
.
$t
(
'app.searchButton.reset'
)
}}
</i-button>
</row>
</i-col>
</row>
</i-form>
</
template
>
<
script
lang=
'tsx'
>
...
...
app_web/src/widgets/ibzdict-item/default-searchform/default-searchform.less
浏览文件 @
a049ff63
...
...
@@ -5,9 +5,13 @@
padding: 14px 0;
}
.app-search-form {
padding: 0 14px;
padding: 8px 14px 0;
.ivu-form-item{
margin-bottom: 8px;
}
.search_reset {
margin-right: 12px;
margin-bottom: 8px;
}
}
.app-search-form-flex {
...
...
app_web/src/widgets/ibzdict-item/main-grid/main-grid-base.vue
浏览文件 @
a049ff63
...
...
@@ -72,6 +72,9 @@
</
template
>
</el-table-column>
</template>
<
template
v-if=
"adaptiveState"
>
<el-table-column></el-table-column>
</
template
>
</el-table>
<row
class=
'grid-pagination'
v-show=
"items.length > 0"
>
<page
class=
'pull-right'
@
on-change=
"pageOnChange($event)"
...
...
@@ -531,7 +534,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {boolean}
* @memberof AppEmbedPicker
*/
protected
isDragendCol
:
boolean
=
tru
e
;
protected
isDragendCol
:
boolean
=
fals
e
;
/**
* 所有列成员
...
...
@@ -1298,6 +1301,17 @@ export default class MainBase extends Vue implements ControlInterface {
return
column
.
show
?
true
:
false
;
}
/**
* 表格列是否自适应布局
*
* @readonly
* @type {boolean}
* @memberof Main
*/
get
adaptiveState
():
boolean
{
return
!
this
.
allColumns
.
find
((
column
:
any
)
=>
column
.
show
&&
Object
.
is
(
column
.
util
,
'STAR'
));
}
/**
* 保存
*
...
...
app_web/src/widgets/ibzdict/default-searchform/default-searchform-base.vue
浏览文件 @
a049ff63
<
template
>
<i-form
:model=
"this.data"
class=
'app-search-form'
ref=
'searchform'
style=
""
>
<input
style=
"display:none;"
/>
<row
>
<i-col
v-show=
"detailsModel.n_ibzdictid_like.visible"
:style=
"
{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12, offset: 0 }">
<app-form-item
name=
'n_ibzdictid_like'
:itemRules=
"this.rules.n_ibzdictid_like"
class=
''
:caption=
"$t('ibzdict.default_searchform.details.n_ibzdictid_like')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.n_ibzdictid_like.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<app-span
:value=
"data.n_ibzdictid_like"
style=
"width:100px;"
></app-span>
</app-form-item>
</i-col>
<i-col
v-show=
"detailsModel.n_ibzdictname_like.visible"
:style=
"
{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12, offset: 0 }">
<app-form-item
name=
'n_ibzdictname_like'
:itemRules=
"this.rules.n_ibzdictname_like"
class=
''
:caption=
"$t('ibzdict.default_searchform.details.n_ibzdictname_like')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.n_ibzdictname_like.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<input-box
v-model=
"data.n_ibzdictname_like"
@
enter=
"onEnter($event)"
:disabled=
"detailsModel.n_ibzdictname_like.disabled"
type=
'text'
style=
"width:100px;"
></input-box>
</app-form-item>
</i-col>
</row>
<row
v-show=
"Object.keys(data).length>0"
>
<i-col
:md=
"
{ span: 4, offset: 20 }" :sm="{ span: 4, offset: 20 }" :lg="{ span: 4, offset: 20 }">
<i-button
class=
'search_reset'
size=
"default"
type=
"primary"
@
click=
"onSearch"
>
{{
$t
(
'app.searchButton.search'
)
}}
</i-button>
<i-button
class=
'search_reset'
size=
"default"
@
click=
"onReset"
>
{{
this
.
$t
(
'app.searchButton.reset'
)
}}
</i-button>
</i-col>
</row>
<input
style=
"display:none;"
/>
<row>
<i-col
span=
"20"
>
<row>
<i-col
v-show=
"detailsModel.n_ibzdictid_like.visible"
:style=
"
{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12, offset: 0 }">
<app-form-item
name=
'n_ibzdictid_like'
:itemRules=
"this.rules.n_ibzdictid_like"
class=
''
:caption=
"$t('ibzdict.default_searchform.details.n_ibzdictid_like')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.n_ibzdictid_like.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<app-span
:value=
"data.n_ibzdictid_like"
style=
"width:100px;"
></app-span>
</app-form-item>
</i-col>
<i-col
v-show=
"detailsModel.n_ibzdictname_like.visible"
:style=
"
{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12, offset: 0 }">
<app-form-item
name=
'n_ibzdictname_like'
:itemRules=
"this.rules.n_ibzdictname_like"
class=
''
:caption=
"$t('ibzdict.default_searchform.details.n_ibzdictname_like')"
uiStyle=
"DEFAULT"
:labelWidth=
"130"
:isShowCaption=
"true"
:error=
"detailsModel.n_ibzdictname_like.error"
:isEmptyCaption=
"false"
labelPos=
"LEFT"
>
<input-box
v-model=
"data.n_ibzdictname_like"
@
enter=
"onEnter($event)"
:disabled=
"detailsModel.n_ibzdictname_like.disabled"
type=
'text'
style=
"width:100px;"
></input-box>
</app-form-item>
</i-col>
</row>
</i-col>
<i-col
span=
"4"
>
<row
v-show=
"Object.keys(data).length>0"
>
<i-button
class=
'search_reset'
size=
"default"
type=
"primary"
@
click=
"onSearch"
>
{{
$t
(
'app.searchButton.search'
)
}}
</i-button>
<i-button
class=
'search_reset'
size=
"default"
@
click=
"onReset"
>
{{
this
.
$t
(
'app.searchButton.reset'
)
}}
</i-button>
</row>
</i-col>
</row>
</i-form>
</
template
>
<
script
lang=
'tsx'
>
...
...
app_web/src/widgets/ibzdict/default-searchform/default-searchform.less
浏览文件 @
a049ff63
...
...
@@ -5,9 +5,13 @@
padding: 14px 0;
}
.app-search-form {
padding: 0 14px;
padding: 8px 14px 0;
.ivu-form-item{
margin-bottom: 8px;
}
.search_reset {
margin-right: 12px;
margin-bottom: 8px;
}
}
.app-search-form-flex {
...
...
app_web/src/widgets/ibzdict/main-grid/main-grid-base.vue
浏览文件 @
a049ff63
...
...
@@ -37,6 +37,9 @@
</
template
>
</el-table-column>
</template>
<
template
v-if=
"adaptiveState"
>
<el-table-column></el-table-column>
</
template
>
</el-table>
<row
class=
'grid-pagination'
v-show=
"items.length > 0"
>
<page
class=
'pull-right'
@
on-change=
"pageOnChange($event)"
...
...
@@ -496,7 +499,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {boolean}
* @memberof AppEmbedPicker
*/
protected
isDragendCol
:
boolean
=
tru
e
;
protected
isDragendCol
:
boolean
=
fals
e
;
/**
* 所有列成员
...
...
@@ -1228,6 +1231,17 @@ export default class MainBase extends Vue implements ControlInterface {
return
column
.
show
?
true
:
false
;
}
/**
* 表格列是否自适应布局
*
* @readonly
* @type {boolean}
* @memberof Main
*/
get
adaptiveState
():
boolean
{
return
!
this
.
allColumns
.
find
((
column
:
any
)
=>
column
.
show
&&
Object
.
is
(
column
.
util
,
'STAR'
));
}
/**
* 保存
*
...
...
ibzdict-app/ibzdict-app-web/pom.xml
浏览文件 @
a049ff63
...
...
@@ -21,11 +21,26 @@
</dependency>
</dependencies>
<profiles>
<profile>
<id>
prod
</id>
<id>
web
</id>
<build>
<resources>
<resource>
<directory>
${basedir}/src/main/webapp
</directory>
<!--注意此次必须要放在此目录下才能被访问到 -->
<targetPath>
META-INF/resources
</targetPath>
<includes>
<include>
**/**
</include>
</includes>
</resource>
<resource>
<directory>
${basedir}/src/main/resources
</directory>
<includes>
<include>
**/**
</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>
org.codehaus.mojo
</groupId>
...
...
@@ -59,49 +74,28 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<finalName>
ibzdict-app-web
</finalName>
<jvmArguments>
-Dfile.encoding=UTF-8
</jvmArguments>
<mainClass>
cn.ibizlab.web.webApplication
</mainClass>
<outputDirectory>
../../
</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>
${basedir}/src/main/webapp
</directory>
<!--注意此次必须要放在此目录下才能被访问到 -->
<targetPath>
META-INF/resources
</targetPath>
<includes>
<include>
**/**
</include>
</includes>
</resource>
<resource>
<directory>
${basedir}/src/main/resources
</directory>
<includes>
<include>
**/**
</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<finalName>
ibzdict-app-web
</finalName>
<jvmArguments>
-Dfile.encoding=UTF-8
</jvmArguments>
<mainClass>
cn.ibizlab.web.webApplication
</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
ibzdict-app/ibzdict-app-web/src/main/java/cn/ibizlab/web/config/webSecurityConfig.java
浏览文件 @
a049ff63
...
...
@@ -38,28 +38,9 @@ public class webSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
AuthorizationTokenFilter
authenticationTokenFilter
;
@Value
(
"${ibiz.jwt.header:Authorization}"
)
private
String
tokenHeader
;
@Value
(
"${ibiz.custompermitpath:custompermit}"
)
private
String
custompermitpath
;
@Value
(
"${ibiz.customanonymouspath:customanonymous}"
)
private
String
customanonymouspath
;
@Value
(
"${ibiz.auth.path:v7/login}"
)
private
String
loginPath
;
@Value
(
"${ibiz.file.uploadpath:ibzutil/upload}"
)
private
String
uploadpath
;
private
final
String
defaultdownloadpath
=
"util/download/{id}"
;
@Value
(
"${ibiz.file.downloadpath:"
+
defaultdownloadpath
+
"}"
)
private
String
downloadpath
;
@Value
(
"${ibiz.file.previewpath:ibzutil/preview}"
)
private
String
previewpath
;
@Autowired
public
void
configureGlobal
(
AuthenticationManagerBuilder
auth
)
throws
Exception
{
auth
...
...
@@ -114,35 +95,8 @@ public class webSecurityConfig extends WebSecurityConfigurerAdapter {
"/**/img/**"
,
"/"
).
permitAll
()
//放行登录请求
.
antMatchers
(
HttpMethod
.
POST
,
"/"
+
loginPath
).
permitAll
()
.
antMatchers
(
"/websocket/**"
).
permitAll
()
// 文件操作
.
antMatchers
(
"/"
+
downloadpath
).
permitAll
()
.
antMatchers
(
"/"
+
uploadpath
).
permitAll
()
.
antMatchers
(
"/"
+
previewpath
+
"/**"
).
permitAll
()
.
antMatchers
(
"/"
+
custompermitpath
+
"/**"
).
permitAll
()
.
antMatchers
(
"/"
+
customanonymouspath
+
"/**"
).
anonymous
()
.
antMatchers
(
"/**/codelist/**"
).
permitAll
()
.
antMatchers
(
"/**/getappdata"
).
permitAll
()
// 系统监控
.
antMatchers
(
"/actuator/**"
).
anonymous
()
// swagger start
.
antMatchers
(
"/swagger-ui.html"
).
anonymous
()
.
antMatchers
(
"/swagger-resources/**"
).
anonymous
()
.
antMatchers
(
"/webjars/**"
).
anonymous
()
.
antMatchers
(
"/*/api-docs"
).
anonymous
()
// swagger end
// 接口限流测试
.
antMatchers
(
"/test/**"
).
anonymous
()
.
antMatchers
(
HttpMethod
.
OPTIONS
,
"/**"
).
anonymous
()
.
antMatchers
(
"/druid/**"
).
permitAll
()
// 所有请求都需要认证
.
anyRequest
().
authenticated
()
// 防止iframe 造成跨域
...
...
ibzdict-app/ibzdict-app-web/src/main/resources/application-web-dev.yml
浏览文件 @
a049ff63
server
:
devmode
:
true
port
:
8080
servlet
:
session
:
cookie
:
name
:
ibzdict-app-web
spring
:
cloud
:
nacos
:
discovery
:
server-addr
:
172.16.102.211:8848
sysapi
:
defaultServiceId
:
ibzdict
defaultStripPrefix
:
false
ribbon
:
ReadTimeout
:
60000
ConnectTimeout
:
60000
application
:
name
:
ibzdict-web
ibzdict-app/ibzdict-app-web/src/main/resources/application-web-prod.yml
浏览文件 @
a049ff63
server
:
devmode
:
true
port
:
8080
servlet
:
session
:
cookie
:
name
:
ibzdict-app-web
spring
:
application
:
name
:
ibzdict-app-web
cloud
:
nacos
:
discovery
:
server-addr
:
172.16.102.211:8848
datasource
:
password
:
'
E6@8@7ce'
username
:
a_A_5ae9eb39a
url
:
jdbc:mysql://172.16.180.232:3306/a_A_5ae9eb39a?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true
driver-class-name
:
com.mysql.jdbc.Driver
filters
:
stat,wall,log4j2
#配置初始化大小/最小/最大
initial-size
:
1
min-idle
:
1
max-active
:
20
#获取连接等待超时时间
max-wait
:
60000
#间隔多久进行一次检测,检测需要关闭的空闲连接
time-between-eviction-runs-millis
:
60000
#一个连接在池中最小生存的时间
min-evictable-idle-time-millis
:
300000
validation-query
:
SELECT 1 FROM DUAL
test-while-idle
:
true
test-on-borrow
:
false
test-on-return
:
false
#打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
pool-prepared-statements
:
false
max-pool-prepared-statement-per-connection-size
:
20
sysapi
:
defaultStripPrefix
:
false
name
:
ibzdict-web
#zuul网关路由设置
zuul
:
routes
:
ibzdictitem
:
path
:
/ibzdictitems/**
serviceId
:
ibzdict-dictapi
stripPrefix
:
${sysapi.defaultStripPrefix}
stripPrefix
:
false
ibzdict
:
path
:
/ibzdicts/**
serviceId
:
ibzdict-dictapi
stripPrefix
:
${sysapi.defaultStripPrefix}
stripPrefix
:
false
sensitive-headers
:
-
Cookie,Set-Cookie,Authorization
ribbon
:
ReadTimeout
:
60000
ConnectTimeout
:
60000
ibzdict-app/ibzdict-app-web/src/main/resources/application.yml
浏览文件 @
a049ff63
spring
:
profiles
:
include
:
web-prod, sys
include
:
sys , web-prod
ibzdict-boot/pom.xml
浏览文件 @
a049ff63
...
...
@@ -31,35 +31,42 @@
</dependency>
</dependencies>
<!--由于boot是通过dependency来关联所有子项目,页面和配置等信息都存在与子项目中,
所以您在对boot进行打包前,需要先将子项目install到maven仓库,以确保boot可以正常引用所有完整的子项目-->
<profiles>
<profile>
<id>
boot
</id>
<build>
<resources>
<resource>
<directory>
${basedir}/src/main/resources
</directory>
<includes>
<include>
**/**
</include>
</includes>
</resource>
</resources>
<build>
<resources>
<resource>
<directory>
${basedir}/src/main/resources
</directory>
<includes>
<include>
**/**
</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<finalName>
ibzdict
</finalName>
<jvmArguments>
-Dfile.encoding=UTF-8
</jvmArguments>
<mainClass>
cn.ibizlab.DevBootApplication
</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<finalName>
ibzdict
</finalName>
<jvmArguments>
-Dfile.encoding=UTF-8
</jvmArguments>
<mainClass>
cn.ibizlab.DevBootApplication
</mainClass>
<outputDirectory>
../
</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
ibzdict-boot/src/main/java/cn/ibizlab/DevBootApplication.java
浏览文件 @
a049ff63
package
cn
.
ibizlab
;
import
java.util.List
;
import
lombok.extern.slf4j.Slf4j
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.builder.SpringApplicationBuilder
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
import
org.springframework.web.method.support.HandlerMethodArgumentResolver
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
;
import
cn.ibizlab.util.helper.UniqueNameGenerator
;
import
org.springframework.boot.SpringApplication
;
@Slf4j
@SpringBootApplication
(
exclude
=
{
})
@Import
({
// cn.ibizlab
})
@EnableDiscoveryClient
@Configuration
@EnableTransactionManagement
public
class
DevBootApplication
extends
WebMvcConfigurerAdapter
{
@SpringBootApplication
public
class
DevBootApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplicationBuilder
builder
=
new
SpringApplicationBuilder
(
DevBootApplication
.
class
);
builder
.
run
(
args
);
SpringApplication
.
run
(
DevBootApplication
.
class
,
args
);
}
}
ibzdict-boot/src/main/java/cn/ibizlab/config/DevBootSecurityConfig.java
0 → 100644
浏览文件 @
a049ff63
package
cn
.
ibizlab
.
config
;
import
cn.ibizlab.util.security.AuthenticationEntryPoint
;
import
cn.ibizlab.util.security.AuthorizationTokenFilter
;
import
cn.ibizlab.util.service.AuthenticationUserService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.security.authentication.AuthenticationManager
;
import
org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
;
import
org.springframework.security.config.annotation.web.builders.HttpSecurity
;
import
org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
;
import
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
;
import
org.springframework.security.config.core.GrantedAuthorityDefaults
;
import
org.springframework.security.config.http.SessionCreationPolicy
;
import
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter
;
@Configuration
@EnableWebSecurity
public
class
DevBootSecurityConfig
extends
WebSecurityConfigurerAdapter
{
@Autowired
private
AuthenticationEntryPoint
unauthorizedHandler
;
@Autowired
private
AuthenticationUserService
userDetailsService
;
/**
* 自定义基于JWT的安全过滤器
*/
@Autowired
AuthorizationTokenFilter
authenticationTokenFilter
;
@Value
(
"${ibiz.auth.path:v7/login}"
)
private
String
loginPath
;
@Autowired
public
void
configureGlobal
(
AuthenticationManagerBuilder
auth
)
throws
Exception
{
auth
.
userDetailsService
(
userDetailsService
)
.
passwordEncoder
(
passwordEncoderBean
());
}
@Bean
GrantedAuthorityDefaults
grantedAuthorityDefaults
()
{
// Remove the ROLE_ prefix
return
new
GrantedAuthorityDefaults
(
""
);
}
@Bean
public
PasswordEncoder
passwordEncoderBean
()
{
return
new
BCryptPasswordEncoder
();
}
@Bean
@Override
public
AuthenticationManager
authenticationManagerBean
()
throws
Exception
{
return
super
.
authenticationManagerBean
();
}
@Override
protected
void
configure
(
HttpSecurity
httpSecurity
)
throws
Exception
{
httpSecurity
// 禁用 CSRF
.
csrf
().
disable
()
// 授权异常
.
exceptionHandling
().
authenticationEntryPoint
(
unauthorizedHandler
).
and
()
// 不创建会话
.
sessionManagement
().
sessionCreationPolicy
(
SessionCreationPolicy
.
STATELESS
).
and
()
// 过滤请求
.
authorizeRequests
()
.
antMatchers
(
HttpMethod
.
GET
,
"/*.html"
,
"/**/*.html"
,
"/**/*.css"
,
"/**/*.js"
,
"/**/*.ico"
,
"/**/assets/**"
,
"/**/css/**"
,
"/**/fonts/**"
,
"/**/js/**"
,
"/**/img/**"
,
"/"
).
permitAll
()
//放行登录请求
.
antMatchers
(
HttpMethod
.
POST
,
"/"
+
loginPath
).
permitAll
()
.
anyRequest
().
authenticated
()
// 防止iframe 造成跨域
.
and
().
headers
().
frameOptions
().
disable
();
httpSecurity
.
addFilterBefore
(
authenticationTokenFilter
,
UsernamePasswordAuthenticationFilter
.
class
);
}
}
ibzdict-boot/src/main/resources/application-dev.yml
浏览文件 @
a049ff63
server
:
port
:
8080
spring
:
application
:
name
:
ibzdict
main
:
allow-bean-definition-overriding
:
true
feign
:
sentinel
:
enabled
:
true
# Logger Config
logging
:
level
:
cn.ibizlab
:
debug
org.springframework.boot.autoconfigure
:
ERROR
client
:
service
:
ibiz
:
wfrootpath
:
ibzdict-boot/src/main/resources/application.yml
浏览文件 @
a049ff63
spring
:
profiles
:
include
:
dev, core, mybatis, sys ,web-
dev
include
:
sys , web-dev, dictapi-dev,
dev
ibzdict-core/src/main/java/cn/ibizlab/core/dict/service/impl/IBZDictItemServiceImpl.java
浏览文件 @
a049ff63
...
...
@@ -19,6 +19,7 @@ import org.springframework.data.domain.PageImpl;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.context.annotation.Lazy
;
import
cn.ibizlab.core.dict.domain.IBZDictItem
;
import
cn.ibizlab.core.dict.filter.IBZDictItemSearchContext
;
import
cn.ibizlab.core.dict.service.IIBZDictItemService
;
...
...
@@ -42,6 +43,7 @@ public class IBZDictItemServiceImpl implements IIBZDictItemService {
@Autowired
private
IBZDictItemRepository
repository
;
@Override
@Transactional
public
IBZDictItem
get
(
String
key
)
{
...
...
@@ -51,8 +53,10 @@ public class IBZDictItemServiceImpl implements IIBZDictItemService {
et
.
setItemid
(
key
);
return
et
;
}
else
else
{
IBZDictItem
et
=
result
.
get
();
return
result
.
get
();
}
}
@Override
...
...
@@ -63,7 +67,9 @@ public class IBZDictItemServiceImpl implements IIBZDictItemService {
@Override
@Transactional
public
boolean
save
(
IBZDictItem
et
)
{
if
(
et
.
getItemid
()==
null
)
et
.
setItemid
((
String
)
et
.
getDefaultKey
());
repository
.
save
(
et
);
CachedBeanCopier
.
copy
(
get
(
et
.
getItemid
()),
et
);
return
true
;
}
...
...
@@ -93,7 +99,9 @@ public class IBZDictItemServiceImpl implements IIBZDictItemService {
@Override
@Transactional
public
boolean
create
(
IBZDictItem
et
)
{
if
(
et
.
getItemid
()==
null
)
et
.
setItemid
((
String
)
et
.
getDefaultKey
());
repository
.
insert
(
et
);
CachedBeanCopier
.
copy
(
get
(
et
.
getItemid
()),
et
);
return
true
;
}
...
...
@@ -106,6 +114,7 @@ public class IBZDictItemServiceImpl implements IIBZDictItemService {
@Transactional
public
boolean
update
(
IBZDictItem
et
)
{
repository
.
save
(
et
);
CachedBeanCopier
.
copy
(
get
(
et
.
getItemid
()),
et
);
return
true
;
}
...
...
ibzdict-core/src/main/java/cn/ibizlab/core/dict/service/impl/IBZDictServiceImpl.java
浏览文件 @
a049ff63
...
...
@@ -19,6 +19,7 @@ import org.springframework.data.domain.PageImpl;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.context.annotation.Lazy
;
import
cn.ibizlab.core.dict.domain.IBZDict
;
import
cn.ibizlab.core.dict.filter.IBZDictSearchContext
;
import
cn.ibizlab.core.dict.service.IIBZDictService
;
...
...
@@ -42,6 +43,10 @@ public class IBZDictServiceImpl implements IIBZDictService {
@Autowired
private
IBZDictRepository
repository
;
@Autowired
@Lazy
private
cn
.
ibizlab
.
core
.
dict
.
service
.
IIBZDictItemService
ibzdictitemService
;
@Override
@Transactional
public
IBZDict
get
(
String
key
)
{
...
...
@@ -51,14 +56,20 @@ public class IBZDictServiceImpl implements IIBZDictService {
et
.
setDictid
(
key
);
return
et
;
}
else
else
{
IBZDict
et
=
result
.
get
();
et
.
setItems
(
ibzdictitemService
.
selectByDictid
(
key
));
return
result
.
get
();
}
}
@Override
@Transactional
public
boolean
create
(
IBZDict
et
)
{
if
(
et
.
getDictid
()==
null
)
et
.
setDictid
((
String
)
et
.
getDefaultKey
());
repository
.
insert
(
et
);
ibzdictitemService
.
saveByDictid
(
et
.
getItems
());
CachedBeanCopier
.
copy
(
get
(
et
.
getDictid
()),
et
);
return
true
;
}
...
...
@@ -81,6 +92,8 @@ public class IBZDictServiceImpl implements IIBZDictService {
@Transactional
public
boolean
update
(
IBZDict
et
)
{
repository
.
save
(
et
);
ibzdictitemService
.
saveByDictid
(
et
.
getItems
());
CachedBeanCopier
.
copy
(
get
(
et
.
getDictid
()),
et
);
return
true
;
}
...
...
@@ -92,6 +105,7 @@ public class IBZDictServiceImpl implements IIBZDictService {
@Override
@Transactional
public
boolean
remove
(
String
key
)
{
ibzdictitemService
.
removeByDictid
(
key
)
;
repository
.
deleteById
(
key
);
return
true
;
}
...
...
@@ -104,7 +118,10 @@ public class IBZDictServiceImpl implements IIBZDictService {
@Override
@Transactional
public
boolean
save
(
IBZDict
et
)
{
if
(
et
.
getDictid
()==
null
)
et
.
setDictid
((
String
)
et
.
getDefaultKey
());
repository
.
save
(
et
);
ibzdictitemService
.
saveByDictid
(
et
.
getItems
());
CachedBeanCopier
.
copy
(
get
(
et
.
getDictid
()),
et
);
return
true
;
}
...
...
ibzdict-core/src/main/java/cn/ibizlab/core/util/config/DroolsAutoConfiguration.java
0 → 100644
浏览文件 @
a049ff63
package
cn
.
ibizlab
.
core
.
util
.
config
;
import
org.kie.api.KieBase
;
import
org.kie.api.KieServices
;
import
org.kie.api.builder.*
;
import
org.kie.api.runtime.KieContainer
;
import
org.kie.api.runtime.KieSession
;
import
org.kie.internal.io.ResourceFactory
;
import
org.kie.spring.KModuleBeanFactoryPostProcessor
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.io.Resource
;
import
org.springframework.core.io.support.PathMatchingResourcePatternResolver
;
import
org.springframework.core.io.support.ResourcePatternResolver
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
java.io.IOException
;
import
java.util.List
;
@Configuration
public
class
DroolsAutoConfiguration
{
private
Log
logger
=
LogFactory
.
getLog
(
DroolsAutoConfiguration
.
class
);
private
static
final
String
RULES_PATH
=
"rules/"
;
@Bean
@ConditionalOnMissingBean
(
KieFileSystem
.
class
)
public
KieFileSystem
kieFileSystem
()
throws
IOException
{
KieFileSystem
kieFileSystem
=
getKieServices
().
newKieFileSystem
();
for
(
Resource
file
:
getRuleFiles
())
{
kieFileSystem
.
write
(
ResourceFactory
.
newUrlResource
(
file
.
getURL
()));
}
return
kieFileSystem
;
}
private
Resource
[]
getRuleFiles
()
throws
IOException
{
ResourcePatternResolver
resourcePatternResolver
=
new
PathMatchingResourcePatternResolver
();
return
resourcePatternResolver
.
getResources
(
"classpath*:"
+
RULES_PATH
+
"**/*.*"
);
}
@Bean
@ConditionalOnMissingBean
(
KieContainer
.
class
)
public
KieContainer
kieContainer
()
throws
IOException
{
final
KieRepository
kieRepository
=
getKieServices
().
getRepository
();
kieRepository
.
addKieModule
(
new
KieModule
()
{
public
ReleaseId
getReleaseId
()
{
return
kieRepository
.
getDefaultReleaseId
();
}
});
KieBuilder
kieBuilder
=
getKieServices
().
newKieBuilder
(
kieFileSystem
());
kieBuilder
.
buildAll
();
if
(
kieBuilder
.
getResults
().
hasMessages
(
new
Message
.
Level
[]
{
Message
.
Level
.
ERROR
})){
List
<
Message
>
errors
=
kieBuilder
.
getResults
().
getMessages
(
new
Message
.
Level
[]
{
Message
.
Level
.
ERROR
});
StringBuilder
stringBuilder
=
new
StringBuilder
(
"Errors:"
);
for
(
Message
msg
:
errors
)
{
stringBuilder
.
append
(
new
StringBuilder
().
append
(
"\n "
).
append
(
prettyBuildMessage
(
msg
)).
toString
());
}
logger
.
error
(
String
.
format
(
"初始化处理逻辑发生异常,异常原因为[%s]"
,
stringBuilder
.
toString
()));
//忽略处理逻辑
getKieServices
().
newKieBuilder
(
getKieServices
().
newKieFileSystem
()).
buildAll
();
}
return
getKieServices
().
newKieContainer
(
kieRepository
.
getDefaultReleaseId
());
}
private
KieServices
getKieServices
()
{
return
KieServices
.
Factory
.
get
();
}
@Bean
@ConditionalOnMissingBean
(
KieBase
.
class
)
public
KieBase
kieBase
()
throws
IOException
{
return
kieContainer
().
getKieBase
();
}
@Bean
@ConditionalOnMissingBean
(
KieSession
.
class
)
public
KieSession
kieSession
()
throws
IOException
{
return
kieContainer
().
newKieSession
();
}
@Bean
@ConditionalOnMissingBean
(
KModuleBeanFactoryPostProcessor
.
class
)
public
KModuleBeanFactoryPostProcessor
kiePostProcessor
()
{
return
new
KModuleBeanFactoryPostProcessor
();
}
/**
* 输出异常信息
* @param msg
* @return
*/
public
static
String
prettyBuildMessage
(
Message
msg
)
{
return
new
StringBuilder
().
append
(
"Message: {id="
).
append
(
msg
.
getId
()).
append
(
", level="
).
append
(
msg
.
getLevel
()).
append
(
", path="
).
append
(
msg
.
getPath
()).
append
(
", line="
).
append
(
msg
.
getLine
())
.
append
(
", column="
).
append
(
msg
.
getColumn
()).
append
(
", text=\""
).
append
(
msg
.
getText
()).
append
(
"\"}"
).
toString
();
}
}
\ No newline at end of file
ibzdict-provider/ibzdict-provider-dictapi/pom.xml
浏览文件 @
a049ff63
...
...
@@ -30,4 +30,41 @@
<artifactId>
springfox-swagger-ui
</artifactId>
</dependency>
</dependencies>
<profiles>
<profile>
<id>
dictapi
</id>
<build>
<resources>
<resource>
<directory>
${basedir}/src/main/resources
</directory>
<includes>
<include>
**/**
</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<finalName>
ibzdict-provider-dictapi
</finalName>
<jvmArguments>
-Dfile.encoding=UTF-8
</jvmArguments>
<mainClass>
cn.ibizlab.dictapi.ibzdictdictapiApplication
</mainClass>
<outputDirectory>
../../
</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
ibzdict-provider/ibzdict-provider-dictapi/src/main/java/cn/ibizlab/dictapi/config/dictapiSecurityConfig.java
浏览文件 @
a049ff63
...
...
@@ -19,7 +19,9 @@ import org.springframework.security.config.http.SessionCreationPolicy;
import
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter
;
import
org.springframework.context.annotation.Profile
;
@Profile
(
"dictapi-prod"
)
@Configuration
@EnableWebSecurity
public
class
dictapiSecurityConfig
extends
WebSecurityConfigurerAdapter
{
...
...
@@ -36,28 +38,6 @@ public class dictapiSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
AuthorizationTokenFilter
authenticationTokenFilter
;
@Value
(
"${ibiz.jwt.header:Authorization}"
)
private
String
tokenHeader
;
@Value
(
"${ibiz.custompermitpath:custompermit}"
)
private
String
custompermitpath
;
@Value
(
"${ibiz.customanonymouspath:customanonymous}"
)
private
String
customanonymouspath
;
@Value
(
"${ibiz.auth.path:v7/login}"
)
private
String
loginPath
;
@Value
(
"${ibiz.file.uploadpath:ibzutil/upload}"
)
private
String
uploadpath
;
private
final
String
defaultdownloadpath
=
"util/download/{id}"
;
@Value
(
"${ibiz.file.downloadpath:"
+
defaultdownloadpath
+
"}"
)
private
String
downloadpath
;
@Value
(
"${ibiz.file.previewpath:ibzutil/preview}"
)
private
String
previewpath
;
@Autowired
public
void
configureGlobal
(
AuthenticationManagerBuilder
auth
)
throws
Exception
{
auth
...
...
@@ -108,7 +88,7 @@ public class dictapiSecurityConfig extends WebSecurityConfigurerAdapter {
"/**/img/**"
,
"/"
).
permitAll
()
//
所有请求都无需
认证
//
服务中暂时只为重构用户身份,不进行身份
认证
.
anyRequest
().
permitAll
()
// 防止iframe 造成跨域
.
and
().
headers
().
frameOptions
().
disable
();
...
...
ibzdict-provider/ibzdict-provider-dictapi/src/main/java/cn/ibizlab/dictapi/rest/IBZDictItemResource.java
浏览文件 @
a049ff63
此差异已折叠。
点击以展开。
ibzdict-provider/ibzdict-provider-dictapi/src/main/java/cn/ibizlab/dictapi/rest/IBZDictResource.java
浏览文件 @
a049ff63
...
...
@@ -51,6 +51,9 @@ public class IBZDictResource {
@Lazy
private
IBZDictMapping
ibzdictMapping
;
@ApiOperation
(
value
=
"Get"
,
tags
=
{
"IBZDict"
},
notes
=
"Get"
)
@RequestMapping
(
method
=
RequestMethod
.
GET
,
value
=
"/ibzdicts/{ibzdict_id}"
)
public
ResponseEntity
<
IBZDictDTO
>
get
(
@PathVariable
(
"ibzdict_id"
)
String
ibzdict_id
)
{
...
...
@@ -59,6 +62,9 @@ public class IBZDictResource {
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
dto
);
}
@ApiOperation
(
value
=
"Create"
,
tags
=
{
"IBZDict"
},
notes
=
"Create"
)
@RequestMapping
(
method
=
RequestMethod
.
POST
,
value
=
"/ibzdicts"
)
@Transactional
...
...
@@ -69,18 +75,34 @@ public class IBZDictResource {
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
dto
);
}
@ApiOperation
(
value
=
"createBatch"
,
tags
=
{
"createBatch"
},
notes
=
"createBatch"
)
@RequestMapping
(
method
=
RequestMethod
.
POST
,
value
=
"/ibzdicts/createbatch"
)
public
ResponseEntity
<
Boolean
>
createBatch
(
@RequestBody
List
<
IBZDictDTO
>
ibzdictdtos
)
{
ibzdictService
.
createBatch
(
ibzdictMapping
.
toDomain
(
ibzdictdtos
));
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
true
);
}
@ApiOperation
(
value
=
"CheckKey"
,
tags
=
{
"IBZDict"
},
notes
=
"CheckKey"
)
@RequestMapping
(
method
=
RequestMethod
.
POST
,
value
=
"/ibzdicts/checkkey"
)
public
ResponseEntity
<
Boolean
>
checkKey
(
@RequestBody
IBZDictDTO
ibzdictdto
)
{
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
ibzdictService
.
checkKey
(
ibzdictMapping
.
toDomain
(
ibzdictdto
)));
}
@ApiOperation
(
value
=
"GetDraft"
,
tags
=
{
"IBZDict"
},
notes
=
"GetDraft"
)
@RequestMapping
(
method
=
RequestMethod
.
GET
,
value
=
"/ibzdicts/getdraft"
)
@Transactional
public
ResponseEntity
<
IBZDictDTO
>
getDraft
()
{
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
ibzdictMapping
.
toDto
(
ibzdictService
.
getDraft
(
new
IBZDict
())));
}
@ApiOperation
(
value
=
"Update"
,
tags
=
{
"IBZDict"
},
notes
=
"Update"
)
@RequestMapping
(
method
=
RequestMethod
.
PUT
,
value
=
"/ibzdicts/{ibzdict_id}"
)
@Transactional
...
...
@@ -92,6 +114,16 @@ public class IBZDictResource {
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
dto
);
}
@ApiOperation
(
value
=
"UpdateBatch"
,
tags
=
{
"UpdateBatch"
},
notes
=
"UpdateBatch"
)
@RequestMapping
(
method
=
RequestMethod
.
POST
,
value
=
"/ibzdicts/updatebatch"
)
public
ResponseEntity
<
Boolean
>
updateBatch
(
@RequestBody
List
<
IBZDictDTO
>
ibzdictdtos
)
{
ibzdictService
.
updateBatch
(
ibzdictMapping
.
toDomain
(
ibzdictdtos
));
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
true
);
}
@ApiOperation
(
value
=
"Remove"
,
tags
=
{
"IBZDict"
},
notes
=
"Remove"
)
@RequestMapping
(
method
=
RequestMethod
.
DELETE
,
value
=
"/ibzdicts/{ibzdict_id}"
)
@Transactional
...
...
@@ -99,13 +131,29 @@ public class IBZDictResource {
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
ibzdictService
.
remove
(
ibzdict_id
));
}
@ApiOperation
(
value
=
"RemoveBatch"
,
tags
=
{
"RemoveBatch"
},
notes
=
"RemoveBatch"
)
@RequestMapping
(
method
=
RequestMethod
.
POST
,
value
=
"/ibzdicts/removebatch"
)
public
ResponseEntity
<
Boolean
>
removeBatch
(
@RequestBody
List
<
String
>
ids
)
{
ibzdictService
.
removeBatch
(
ids
);
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
true
);
}
@ApiOperation
(
value
=
"Save"
,
tags
=
{
"IBZDict"
},
notes
=
"Save"
)
@RequestMapping
(
method
=
RequestMethod
.
POST
,
value
=
"/ibzdicts/
{ibzdict_id}/
save"
)
@RequestMapping
(
method
=
RequestMethod
.
POST
,
value
=
"/ibzdicts/save"
)
public
ResponseEntity
<
Boolean
>
save
(
@RequestBody
IBZDictDTO
ibzdictdto
)
{
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
ibzdictService
.
save
(
ibzdictMapping
.
toDomain
(
ibzdictdto
)));
}
//9
@ApiOperation
(
value
=
"SaveBatch"
,
tags
=
{
"SaveBatch"
},
notes
=
"SaveBatch"
)
@RequestMapping
(
method
=
RequestMethod
.
POST
,
value
=
"/ibzdicts/savebatch"
)
public
ResponseEntity
<
Boolean
>
saveBatch
(
@RequestBody
List
<
IBZDictDTO
>
ibzdictdtos
)
{
ibzdictService
.
saveBatch
(
ibzdictMapping
.
toDomain
(
ibzdictdtos
));
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
true
);
}
@ApiOperation
(
value
=
"fetchDEFAULT"
,
tags
=
{
"IBZDict"
}
,
notes
=
"fetchDEFAULT"
)
@RequestMapping
(
method
=
RequestMethod
.
GET
,
value
=
"/ibzdicts/fetchdefault"
)
public
ResponseEntity
<
List
<
IBZDictDTO
>>
fetchDefault
(
IBZDictSearchContext
context
)
{
...
...
ibzdict-provider/ibzdict-provider-dictapi/src/main/resources/application-dictapi-dev.yml
0 → 100644
浏览文件 @
a049ff63
server
:
port
:
8081
spring
:
application
:
name
:
ibzdict-dictapi
\ No newline at end of file
ibzdict-provider/ibzdict-provider-dictapi/src/main/resources/application-dictapi-prod.yml
0 → 100644
浏览文件 @
a049ff63
server
:
port
:
8081
spring
:
application
:
name
:
ibzdict-dictapi
\ No newline at end of file
ibzdict-provider/ibzdict-provider-dictapi/src/main/resources/application.yml
浏览文件 @
a049ff63
spring
:
profiles
:
include
:
service, core, syscore
# include: dev, mp, druid, redis
include
:
sys , dictapi-prod
ibzdict-util/src/main/java/cn/ibizlab/util/rest/AppController.java
0 → 100644
浏览文件 @
a049ff63
package
cn
.
ibizlab
.
util
.
rest
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
com.alibaba.fastjson.JSONObject
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
@RequestMapping
(
value
=
""
)
public
class
AppController
{
@RequestMapping
(
method
=
RequestMethod
.
GET
,
value
=
"/appdata"
)
public
ResponseEntity
<
JSONObject
>
getAppData
()
{
JSONObject
appData
=
new
JSONObject
()
;
return
ResponseEntity
.
status
(
HttpStatus
.
OK
).
body
(
appData
);
}
}
ibzdict-util/src/main/java/cn/ibizlab/util/rest/AuthenticationController.java
0 → 100644
浏览文件 @
a049ff63
package
cn
.
ibizlab
.
util
.
rest
;
import
cn.ibizlab.util.security.AuthenticationInfo
;
import
cn.ibizlab.util.security.AuthenticationUser
;
import
cn.ibizlab.util.security.AuthorizationLogin
;
import
cn.ibizlab.util.security.AuthTokenUtil
;
import
cn.ibizlab.util.service.IBZUSERService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetailsService
;
import
org.springframework.util.DigestUtils
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
@RestController
@RequestMapping
(
"/"
)
public
class
AuthenticationController
{
@Value
(
"${ibiz.auth.pwencry:false}"
)
private
boolean
pwencry
;
@Value
(
"${ibiz.jwt.header:Authorization}"
)
private
String
tokenHeader
;
@Autowired
private
AuthTokenUtil
jwtTokenUtil
;
@Autowired
@Qualifier
(
"AuthenticationUserService"
)
private
UserDetailsService
userDetailsService
;
@Autowired
private
IBZUSERService
userService
;
@PostMapping
(
value
=
"${ibiz.auth.path:v7/login}"
)
public
ResponseEntity
<
AuthenticationInfo
>
login
(
@Validated
@RequestBody
AuthorizationLogin
authorizationLogin
){
userService
.
resetByUsername
(
authorizationLogin
.
getUsername
());
final
AuthenticationUser
authuserdetail
=
(
AuthenticationUser
)
userDetailsService
.
loadUserByUsername
(
authorizationLogin
.
getUsername
());
String
password
=
authorizationLogin
.
getPassword
();
if
(
pwencry
)
password
=
DigestUtils
.
md5DigestAsHex
(
authorizationLogin
.
getPassword
().
getBytes
());
if
(!
authuserdetail
.
getPassword
().
equals
(
password
)){
throw
new
RuntimeException
(
"用户名密码错误"
);
}
// 生成令牌
final
String
token
=
jwtTokenUtil
.
generateToken
(
authuserdetail
);
// 返回 token
return
ResponseEntity
.
ok
().
body
(
new
AuthenticationInfo
(
token
,
authuserdetail
));
}
@GetMapping
(
value
=
"${ibiz.auth.account:ibizutil/account}"
)
public
ResponseEntity
<
AuthenticationUser
>
getUserInfo
(){
UserDetails
userDetails
=
(
UserDetails
)
SecurityContextHolder
.
getContext
().
getAuthentication
().
getPrincipal
();
AuthenticationUser
authuserdetail
=
new
AuthenticationUser
();
if
(
userDetails
==
null
){
throw
new
RuntimeException
(
"未能获取用户信息"
);
}
else
if
(
userDetails
instanceof
AuthenticationUser
)
{
authuserdetail
=
(
AuthenticationUser
)
userDetails
;
}
else
{
authuserdetail
=
(
AuthenticationUser
)
userDetailsService
.
loadUserByUsername
(
userDetails
.
getUsername
());
}
return
ResponseEntity
.
ok
().
body
(
authuserdetail
);
}
}
ibzdict-util/src/main/resources/application-sys.yml
0 → 100644
浏览文件 @
a049ff63
#nacos配置中心、数据源
spring
:
cloud
:
nacos
:
discovery
:
server-addr
:
172.16.102.211:8848
datasource
:
password
:
'
E6@8@7ce'
username
:
a_A_5ae9eb39a
url
:
jdbc:mysql://172.16.180.232:3306/a_A_5ae9eb39a?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true
driver-class-name
:
com.mysql.jdbc.Driver
filters
:
stat,wall,log4j2
#配置初始化大小/最小/最大
initial-size
:
1
min-idle
:
1
max-active
:
20
#获取连接等待超时时间
max-wait
:
60000
#间隔多久进行一次检测,检测需要关闭的空闲连接
time-between-eviction-runs-millis
:
60000
#一个连接在池中最小生存的时间
min-evictable-idle-time-millis
:
300000
validation-query
:
SELECT 1 FROM DUAL
test-while-idle
:
true
test-on-borrow
:
false
test-on-return
:
false
#打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为false
pool-prepared-statements
:
false
max-pool-prepared-statement-per-connection-size
:
20
#Mybatis-plus配置
mybatis-plus
:
global-config
:
refresh-mapper
:
true
db-config
:
# 全局逻辑已删除默认值
logic-delete-value
:
0
# 全局逻辑未删除默认值
logic-not-delete-value
:
1
mapper-locations
:
classpath*:/mapper/*/*/*.xml
configuration
:
jdbc-type-for-null
:
'
null'
map-underscore-to-camel-case
:
false
#阿里sentinel熔断器
feign
:
sentinel
:
enabled
:
true
#Log配置
logging
:
level
:
cn.ibizlab
:
debug
org.springframework.boot.autoconfigure
:
ERROR
#zuul网关超时设置
ribbon
:
ReadTimeout
:
60000
ConnectTimeout
:
60000
pom.xml
浏览文件 @
a049ff63
...
...
@@ -14,6 +14,7 @@
<groupId>
cn.ibizlab
</groupId>
<artifactId>
ibzdict-dependencies
</artifactId>
<version>
1.0.0.0
</version>
<relativePath>
ibzdict-dependencies/pom.xml
</relativePath>
</parent>
<modules>
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录