Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibzou
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibzou
提交
f4705820
提交
f4705820
编写于
6月 02, 2020
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ibiz4j 发布系统代码
上级
9302eadb
变更
62
显示空白字符变更
内嵌
并排
正在显示
62 个修改的文件
包含
2212 行增加
和
585 行删除
+2212
-585
ibiz-group-picker.vue
...eb/src/components/ibiz-group-picker/ibiz-group-picker.vue
+25
-24
en-US.ts
app_web/src/locale/lang/en-US.ts
+6
-6
zh-CN.ts
app_web/src/locale/lang/zh-CN.ts
+6
-6
ibzdepartment_en_US.ts
...cale/lanres/entities/ibzdepartment/ibzdepartment_en_US.ts
+258
-0
ibzdepartment_zh_CN.ts
...cale/lanres/entities/ibzdepartment/ibzdepartment_zh_CN.ts
+257
-0
ibzdept-member_en_US.ts
...le/lanres/entities/ibzdept-member/ibzdept-member_en_US.ts
+97
-0
ibzdept-member_zh_CN.ts
...le/lanres/entities/ibzdept-member/ibzdept-member_zh_CN.ts
+96
-0
ibzemployee_en_US.ts
...c/locale/lanres/entities/ibzemployee/ibzemployee_en_US.ts
+317
-0
ibzemployee_zh_CN.ts
...c/locale/lanres/entities/ibzemployee/ibzemployee_zh_CN.ts
+316
-0
ibzorganization_en_US.ts
.../lanres/entities/ibzorganization/ibzorganization_en_US.ts
+187
-0
ibzorganization_zh_CN.ts
.../lanres/entities/ibzorganization/ibzorganization_zh_CN.ts
+186
-0
ibzteam-member_en_US.ts
...le/lanres/entities/ibzteam-member/ibzteam-member_en_US.ts
+10
-0
ibzteam-member_zh_CN.ts
...le/lanres/entities/ibzteam-member/ibzteam-member_zh_CN.ts
+9
-0
ibzteam_en_US.ts
app_web/src/locale/lanres/entities/ibzteam/ibzteam_en_US.ts
+7
-0
ibzteam_zh_CN.ts
app_web/src/locale/lanres/entities/ibzteam/ibzteam_zh_CN.ts
+6
-0
ibzdepartment-edit-grid-view-base.vue
...ment-edit-grid-view/ibzdepartment-edit-grid-view-base.vue
+5
-3
ibzdepartment-edit-view-base.vue
.../ibzdepartment-edit-view/ibzdepartment-edit-view-base.vue
+5
-3
ibzdepartment-grid-view-base.vue
.../ibzdepartment-grid-view/ibzdepartment-grid-view-base.vue
+5
-3
ibzdepartment-mpickup-view-base.vue
...partment-mpickup-view/ibzdepartment-mpickup-view-base.vue
+5
-3
ibzdepartment-option-view-base.vue
...department-option-view/ibzdepartment-option-view-base.vue
+5
-3
ibzdepartment-pickup-grid-view-base.vue
...-pickup-grid-view/ibzdepartment-pickup-grid-view-base.vue
+5
-3
ibzdepartment-pickup-view-base.vue
...department-pickup-view/ibzdepartment-pickup-view-base.vue
+5
-3
ibzdepartment-tree-exp-view-base.vue
...rtment-tree-exp-view/ibzdepartment-tree-exp-view-base.vue
+5
-3
ibzdept-member-edit-view-base.vue
...bzdept-member-edit-view/ibzdept-member-edit-view-base.vue
+5
-3
ibzdept-member-grid-view-base.vue
...bzdept-member-grid-view/ibzdept-member-grid-view-base.vue
+5
-3
ibzemployee-change-pwd-view-base.vue
...oyee-change-pwd-view/ibzemployee-change-pwd-view-base.vue
+5
-3
ibzemployee-edit-grid-view-base.vue
...ployee-edit-grid-view/ibzemployee-edit-grid-view-base.vue
+5
-3
ibzemployee-edit-view-base.vue
...s/ou/ibzemployee-edit-view/ibzemployee-edit-view-base.vue
+5
-3
ibzemployee-grid-view-base.vue
...s/ou/ibzemployee-grid-view/ibzemployee-grid-view-base.vue
+5
-3
ibzemployee-mpickup-view-base.vue
...bzemployee-mpickup-view/ibzemployee-mpickup-view-base.vue
+5
-3
ibzemployee-option-view-base.vue
.../ibzemployee-option-view/ibzemployee-option-view-base.vue
+5
-3
ibzemployee-pickup-grid-view-base.vue
...ee-pickup-grid-view/ibzemployee-pickup-grid-view-base.vue
+5
-3
ibzemployee-pickup-view-base.vue
.../ibzemployee-pickup-view/ibzemployee-pickup-view-base.vue
+5
-3
ibzorganization-edit-view-base.vue
...organization-edit-view/ibzorganization-edit-view-base.vue
+5
-3
ibzorganization-grid-view-base.vue
...organization-grid-view/ibzorganization-grid-view-base.vue
+5
-3
ibzorganization-option-view-base.vue
...nization-option-view/ibzorganization-option-view-base.vue
+5
-3
ibzorganization-pickup-grid-view-base.vue
...ickup-grid-view/ibzorganization-pickup-grid-view-base.vue
+5
-3
ibzorganization-pickup-view-base.vue
...nization-pickup-view/ibzorganization-pickup-view-base.vue
+5
-3
ibzorganization-tree-exp-view-base.vue
...tion-tree-exp-view/ibzorganization-tree-exp-view-base.vue
+5
-3
ouindex-view-base.vue
app_web/src/pages/ou/ouindex-view/ouindex-view-base.vue
+5
-3
save-dept-member-logic-base.ts
...eb/src/service/ibzemployee/save-dept-member-logic-base.ts
+33
-5
uiaction-tool.ts
app_web/src/utils/uiaction-tool/uiaction-tool.ts
+1
-1
config.xml
config.xml
+0
-5
Dockerfile
ibzou-app/ibzou-app-web/src/main/docker/Dockerfile
+1
-1
ibzou-app-web.yaml
ibzou-app/ibzou-app-web/src/main/docker/ibzou-app-web.yaml
+6
-13
20200601200530_init_ibzcfg.xml
...ources/liquibase/changelog/20200601200530_init_ibzcfg.xml
+16
-0
ibzou-provider-api.yaml
...bzou-provider-api/src/main/docker/ibzou-provider-api.yaml
+5
-0
CaffeineCacheConfig.java
.../main/java/cn/ibizlab/util/cache/CaffeineCacheConfig.java
+11
-12
RedisCacheConfig.java
...src/main/java/cn/ibizlab/util/cache/RedisCacheConfig.java
+65
-57
CusRedisCache.java
.../main/java/cn/ibizlab/util/cache/cache/CusRedisCache.java
+0
-1
LayeringCache.java
.../main/java/cn/ibizlab/util/cache/cache/LayeringCache.java
+44
-46
CaffeineCacheManager.java
...ibizlab/util/cache/cacheManager/CaffeineCacheManager.java
+25
-44
LayeringCacheManager.java
...ibizlab/util/cache/cacheManager/LayeringCacheManager.java
+42
-42
RedisMessageListener.java
.../cn/ibizlab/util/cache/listener/RedisMessageListener.java
+18
-22
CustomJacksonSerializer.java
.../cn/ibizlab/util/cache/redis/CustomJacksonSerializer.java
+25
-0
CustomizedRedisCache.java
...ava/cn/ibizlab/util/cache/redis/CustomizedRedisCache.java
+1
-12
FastJsonRedisSerializer.java
.../cn/ibizlab/util/cache/redis/FastJsonRedisSerializer.java
+1
-39
KryoRedisSerializer.java
...java/cn/ibizlab/util/cache/redis/KryoRedisSerializer.java
+1
-67
RedisConfig.java
...rc/main/java/cn/ibizlab/util/cache/redis/RedisConfig.java
+1
-61
StringRedisSerializer.java
...va/cn/ibizlab/util/cache/redis/StringRedisSerializer.java
+1
-39
RedisChannelTopic.java
...rc/main/java/cn/ibizlab/util/enums/RedisChannelTopic.java
+2
-2
AuthenticationUser.java
...ain/java/cn/ibizlab/util/security/AuthenticationUser.java
+5
-5
未找到文件。
app_web/src/components/ibiz-group-picker/ibiz-group-picker.vue
浏览文件 @
f4705820
...
...
@@ -4,7 +4,7 @@
<div
v-if=
"showTree"
class=
"ibiz-group-tree"
>
<ibiz-select-tree
:NodesData=
"treeItems"
v-model=
"treeSelectVal"
:treeOnly=
"true"
:defaultChecked=
"true"
@
select=
"treeSelect"
></ibiz-select-tree>
</div>
<div
class=
"ibiz-group-content"
:style=
"
{width:showTree?'calc(100% - 400px)':'100%'}"
>
<div
class=
"ibiz-group-content"
>
<ibiz-group-card
:data=
"cardItems"
text=
"label"
value=
"id"
groupName=
"group"
:multiple=
"multiple"
:defaultSelect=
"cardSelctVal"
@
select=
"groupSelect"
></ibiz-group-card>
</div>
</div>
...
...
@@ -276,14 +276,15 @@ export default class IBizGroupPicker extends Vue {
<
style
lang=
"less"
>
.ibiz-group-picker{
height:100%;
width: 100%;
height: 100%;
.ibiz-group-container {
display: flex;
height: calc(100% - 65px);
.ibiz-group-tree {
width: 4
00px;
min-width: 2
00px;
border-right: 1px solid #ddd;
padding:
0 10px;
padding: 0 34px
0 10px;
overflow: auto;
height: 100%;
}
...
...
app_web/src/locale/lang/en-US.ts
浏览文件 @
f4705820
import
ibzdeptmember_en_US
from
'@locale/lanres/ibzdept-member/ibzdept-member_en_US'
;
import
ibzteammember_en_US
from
'@locale/lanres/ibzteam-member/ibzteam-member_en_US'
;
import
ibzdepartment_en_US
from
'@locale/lanres/ibzdepartment/ibzdepartment_en_US'
;
import
ibzemployee_en_US
from
'@locale/lanres/ibzemployee/ibzemployee_en_US'
;
import
ibzorganization_en_US
from
'@locale/lanres/ibzorganization/ibzorganization_en_US'
;
import
ibzteam_en_US
from
'@locale/lanres/ibzteam/ibzteam_en_US'
;
import
ibzdeptmember_en_US
from
'@locale/lanres/
entities/
ibzdept-member/ibzdept-member_en_US'
;
import
ibzteammember_en_US
from
'@locale/lanres/
entities/
ibzteam-member/ibzteam-member_en_US'
;
import
ibzdepartment_en_US
from
'@locale/lanres/
entities/
ibzdepartment/ibzdepartment_en_US'
;
import
ibzemployee_en_US
from
'@locale/lanres/
entities/
ibzemployee/ibzemployee_en_US'
;
import
ibzorganization_en_US
from
'@locale/lanres/
entities/
ibzorganization/ibzorganization_en_US'
;
import
ibzteam_en_US
from
'@locale/lanres/
entities/
ibzteam/ibzteam_en_US'
;
import
components_en_US
from
'@locale/lanres/components/components_en_US'
;
import
codelist_en_US
from
'@locale/lanres/codelist/codelist_en_US'
;
import
userCustom_en_US
from
'@locale/lanres/userCustom/userCustom_en_US'
;
...
...
app_web/src/locale/lang/zh-CN.ts
浏览文件 @
f4705820
import
ibzdeptmember_zh_CN
from
'@locale/lanres/ibzdept-member/ibzdept-member_zh_CN'
;
import
ibzteammember_zh_CN
from
'@locale/lanres/ibzteam-member/ibzteam-member_zh_CN'
;
import
ibzdepartment_zh_CN
from
'@locale/lanres/ibzdepartment/ibzdepartment_zh_CN'
;
import
ibzemployee_zh_CN
from
'@locale/lanres/ibzemployee/ibzemployee_zh_CN'
;
import
ibzorganization_zh_CN
from
'@locale/lanres/ibzorganization/ibzorganization_zh_CN'
;
import
ibzteam_zh_CN
from
'@locale/lanres/ibzteam/ibzteam_zh_CN'
;
import
ibzdeptmember_zh_CN
from
'@locale/lanres/
entities/
ibzdept-member/ibzdept-member_zh_CN'
;
import
ibzteammember_zh_CN
from
'@locale/lanres/
entities/
ibzteam-member/ibzteam-member_zh_CN'
;
import
ibzdepartment_zh_CN
from
'@locale/lanres/
entities/
ibzdepartment/ibzdepartment_zh_CN'
;
import
ibzemployee_zh_CN
from
'@locale/lanres/
entities/
ibzemployee/ibzemployee_zh_CN'
;
import
ibzorganization_zh_CN
from
'@locale/lanres/
entities/
ibzorganization/ibzorganization_zh_CN'
;
import
ibzteam_zh_CN
from
'@locale/lanres/
entities/
ibzteam/ibzteam_zh_CN'
;
import
components_zh_CN
from
'@locale/lanres/components/components_zh_CN'
;
import
codelist_zh_CN
from
'@locale/lanres/codelist/codelist_zh_CN'
;
import
userCustom_zh_CN
from
'@locale/lanres/userCustom/userCustom_zh_CN'
;
...
...
app_web/src/locale/lanres/entities/ibzdepartment/ibzdepartment_en_US.ts
0 → 100644
浏览文件 @
f4705820
export
default
{
fields
:
{
deptid
:
'部门标识'
,
deptcode
:
'部门代码'
,
deptname
:
'部门名称'
,
orgid
:
'单位'
,
parentdeptid
:
'上级部门'
,
shortname
:
'部门简称'
,
deptlevel
:
'部门级别'
,
showorder
:
'排序'
,
bcode
:
'业务编码'
,
leaderid
:
'分管领导标识'
,
leadername
:
'分管领导'
,
enable
:
'逻辑有效'
,
orgname
:
'单位'
,
parentdeptname
:
'上级部门'
,
createdate
:
'创建时间'
,
updatedate
:
'最后修改时间'
,
},
views
:
{
optionview
:
{
caption
:
"部门"
,
title
:
'部门'
,
},
editview
:
{
caption
:
"部门"
,
title
:
'部门'
,
},
editgridview
:
{
caption
:
"部门"
,
title
:
'部门'
,
},
pickupgridview
:
{
caption
:
"部门"
,
title
:
'部门'
,
},
mpickupview
:
{
caption
:
"部门"
,
title
:
'部门'
,
},
pickupview
:
{
caption
:
"部门"
,
title
:
'部门'
,
},
treeexpview
:
{
caption
:
"人员管理"
,
title
:
'人员管理'
,
},
gridview
:
{
caption
:
"部门"
,
title
:
'部门'
,
},
},
newform_form
:
{
details
:
{
group1
:
"部门基本信息"
,
formpage1
:
"基本信息"
,
srfupdatedate
:
"最后修改时间"
,
srforikey
:
""
,
srfkey
:
"部门标识"
,
srfmajortext
:
"部门名称"
,
srftempmode
:
""
,
srfuf
:
""
,
srfdeid
:
""
,
srfsourcekey
:
""
,
deptcode
:
"部门代码"
,
deptname
:
"部门名称"
,
orgid
:
"单位"
,
orgname
:
"单位"
,
pdeptid
:
"上级部门"
,
pdeptname
:
"上级部门"
,
enable
:
"逻辑有效"
,
deptid
:
"部门标识"
,
},
uiactions
:
{
},
},
main_form
:
{
details
:
{
formpage1
:
"基本信息"
,
srfupdatedate
:
"最后修改时间"
,
srforikey
:
""
,
srfkey
:
"部门标识"
,
srfmajortext
:
"部门名称"
,
srftempmode
:
""
,
srfuf
:
""
,
srfdeid
:
""
,
srfsourcekey
:
""
,
deptid
:
"部门标识"
,
deptcode
:
"部门代码"
,
deptname
:
"部门名称"
,
orgname
:
"单位"
,
pdeptname
:
"上级部门"
,
orgid
:
"单位"
,
pdeptid
:
"上级部门"
,
shortname
:
"部门简称"
,
bcode
:
"业务编码"
,
deptlevel
:
"部门级别"
,
leaderid
:
"分管领导标识"
,
leadername
:
"分管领导"
,
showorder
:
"排序"
,
createdate
:
"创建时间"
,
updatedate
:
"最后修改时间"
,
},
uiactions
:
{
},
},
main_grid
:
{
columns
:
{
deptcode
:
"部门代码"
,
deptname
:
"部门名称"
,
orgname
:
"单位"
,
pdeptname
:
"上级部门"
,
deptlevel
:
"部门级别"
,
shortname
:
"部门简称"
,
bcode
:
"业务编码"
,
leadername
:
"分管领导"
,
showorder
:
"排序"
,
createdate
:
"创建时间"
,
updatedate
:
"最后修改时间"
,
orgid
:
"单位"
,
pdeptid
:
"上级部门"
,
leaderid
:
"分管领导标识"
,
},
uiactions
:
{
},
},
editgrid_grid
:
{
columns
:
{
deptcode
:
"部门代码"
,
deptname
:
"部门名称"
,
orgname
:
"单位"
,
pdeptname
:
"上级部门"
,
shortname
:
"部门简称"
,
deptlevel
:
"部门级别"
,
bcode
:
"业务编码"
,
leadername
:
"分管领导"
,
showorder
:
"排序"
,
createdate
:
"创建时间"
,
updatedate
:
"最后修改时间"
,
leaderid
:
"分管领导标识"
,
orgid
:
"单位"
,
pdeptid
:
"上级部门"
,
},
uiactions
:
{
},
},
default_searchform
:
{
details
:
{
formpage1
:
"常规条件"
,
n_deptcode_like
:
"部门代码(%)"
,
n_deptname_like
:
"部门名称(%)"
,
n_orgid_eq
:
"单位(=)"
,
n_pdeptid_eq
:
"上级部门(=)"
,
n_bcode_like
:
"业务编码(%)"
,
},
uiactions
:
{
},
},
editviewtoolbar_toolbar
:
{
tbitem3
:
{
caption
:
"Save"
,
tip
:
"Save"
,
},
tbitem6
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem7
:
{
caption
:
"Remove And Close"
,
tip
:
"Remove And Close Window"
,
},
tbitem8
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem14
:
{
caption
:
"Copy"
,
tip
:
"Copy {0}"
,
},
},
editgridviewtoolbar_toolbar
:
{
tbitem24
:
{
caption
:
"行编辑"
,
tip
:
"行编辑"
,
},
tbitem25
:
{
caption
:
"新建行"
,
tip
:
"新建行"
,
},
tbitem26
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem8
:
{
caption
:
"Remove"
,
tip
:
"Remove {0}"
,
},
tbitem9
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem19
:
{
caption
:
"Filter"
,
tip
:
"Filter"
,
},
},
gridviewtoolbar_toolbar
:
{
tbitem1_opennewcreateview
:
{
caption
:
"新建"
,
tip
:
"新建"
,
},
tbitem2
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem4
:
{
caption
:
"Edit"
,
tip
:
"Edit {0}"
,
},
tbitem6
:
{
caption
:
"Copy"
,
tip
:
"Copy {0}"
,
},
tbitem7
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem8
:
{
caption
:
"Remove"
,
tip
:
"Remove {0}"
,
},
tbitem9
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem13
:
{
caption
:
"Export"
,
tip
:
"Export {0} Data To Excel"
,
},
tbitem10
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem19
:
{
caption
:
"Filter"
,
tip
:
"Filter"
,
},
},
depttree_treeview
:
{
nodes
:
{
root
:
'默认根节点'
,
},
uiactions
:
{
},
},
};
\ No newline at end of file
app_web/src/locale/lanres/entities/ibzdepartment/ibzdepartment_zh_CN.ts
0 → 100644
浏览文件 @
f4705820
export
default
{
fields
:
{
deptid
:
'部门标识'
,
deptcode
:
'部门代码'
,
deptname
:
'部门名称'
,
orgid
:
'单位'
,
parentdeptid
:
'上级部门'
,
shortname
:
'部门简称'
,
deptlevel
:
'部门级别'
,
showorder
:
'排序'
,
bcode
:
'业务编码'
,
leaderid
:
'分管领导标识'
,
leadername
:
'分管领导'
,
enable
:
'逻辑有效'
,
orgname
:
'单位'
,
parentdeptname
:
'上级部门'
,
createdate
:
'创建时间'
,
updatedate
:
'最后修改时间'
,
},
views
:
{
optionview
:
{
caption
:
'部门'
,
title
:
'部门'
,
},
editview
:
{
caption
:
'部门'
,
title
:
'部门'
,
},
editgridview
:
{
caption
:
'部门'
,
title
:
'部门'
,
},
pickupgridview
:
{
caption
:
'部门'
,
title
:
'部门'
,
},
mpickupview
:
{
caption
:
'部门'
,
title
:
'部门'
,
},
pickupview
:
{
caption
:
'部门'
,
title
:
'部门'
,
},
treeexpview
:
{
caption
:
'人员管理'
,
title
:
'人员管理'
,
},
gridview
:
{
caption
:
'部门'
,
title
:
'部门'
,
},
},
newform_form
:
{
details
:
{
group1
:
'部门基本信息'
,
formpage1
:
'基本信息'
,
srfupdatedate
:
'最后修改时间'
,
srforikey
:
''
,
srfkey
:
'部门标识'
,
srfmajortext
:
'部门名称'
,
srftempmode
:
''
,
srfuf
:
''
,
srfdeid
:
''
,
srfsourcekey
:
''
,
deptcode
:
'部门代码'
,
deptname
:
'部门名称'
,
orgid
:
'单位'
,
orgname
:
'单位'
,
pdeptid
:
'上级部门'
,
pdeptname
:
'上级部门'
,
enable
:
'逻辑有效'
,
deptid
:
'部门标识'
,
},
uiactions
:
{
},
},
main_form
:
{
details
:
{
formpage1
:
'基本信息'
,
srfupdatedate
:
'最后修改时间'
,
srforikey
:
''
,
srfkey
:
'部门标识'
,
srfmajortext
:
'部门名称'
,
srftempmode
:
''
,
srfuf
:
''
,
srfdeid
:
''
,
srfsourcekey
:
''
,
deptid
:
'部门标识'
,
deptcode
:
'部门代码'
,
deptname
:
'部门名称'
,
orgname
:
'单位'
,
pdeptname
:
'上级部门'
,
orgid
:
'单位'
,
pdeptid
:
'上级部门'
,
shortname
:
'部门简称'
,
bcode
:
'业务编码'
,
deptlevel
:
'部门级别'
,
leaderid
:
'分管领导标识'
,
leadername
:
'分管领导'
,
showorder
:
'排序'
,
createdate
:
'创建时间'
,
updatedate
:
'最后修改时间'
,
},
uiactions
:
{
},
},
main_grid
:
{
columns
:
{
deptcode
:
'部门代码'
,
deptname
:
'部门名称'
,
orgname
:
'单位'
,
pdeptname
:
'上级部门'
,
deptlevel
:
'部门级别'
,
shortname
:
'部门简称'
,
bcode
:
'业务编码'
,
leadername
:
'分管领导'
,
showorder
:
'排序'
,
createdate
:
'创建时间'
,
updatedate
:
'最后修改时间'
,
orgid
:
'单位'
,
pdeptid
:
'上级部门'
,
leaderid
:
'分管领导标识'
,
},
uiactions
:
{
},
},
editgrid_grid
:
{
columns
:
{
deptcode
:
'部门代码'
,
deptname
:
'部门名称'
,
orgname
:
'单位'
,
pdeptname
:
'上级部门'
,
shortname
:
'部门简称'
,
deptlevel
:
'部门级别'
,
bcode
:
'业务编码'
,
leadername
:
'分管领导'
,
showorder
:
'排序'
,
createdate
:
'创建时间'
,
updatedate
:
'最后修改时间'
,
leaderid
:
'分管领导标识'
,
orgid
:
'单位'
,
pdeptid
:
'上级部门'
,
},
uiactions
:
{
},
},
default_searchform
:
{
details
:
{
formpage1
:
'常规条件'
,
n_deptcode_like
:
'部门代码(%)'
,
n_deptname_like
:
'部门名称(%)'
,
n_orgid_eq
:
'单位(=)'
,
n_pdeptid_eq
:
'上级部门(=)'
,
n_bcode_like
:
'业务编码(%)'
,
},
uiactions
:
{
},
},
editviewtoolbar_toolbar
:
{
tbitem3
:
{
caption
:
'保存'
,
tip
:
'保存'
,
},
tbitem6
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem7
:
{
caption
:
'删除'
,
tip
:
'删除'
,
},
tbitem8
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem14
:
{
caption
:
'拷贝'
,
tip
:
'拷贝'
,
},
},
editgridviewtoolbar_toolbar
:
{
tbitem24
:
{
caption
:
'行编辑'
,
tip
:
'行编辑'
,
},
tbitem25
:
{
caption
:
'新建行'
,
tip
:
'新建行'
,
},
tbitem26
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem8
:
{
caption
:
'删除'
,
tip
:
'删除'
,
},
tbitem9
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem19
:
{
caption
:
'过滤'
,
tip
:
'过滤'
,
},
},
gridviewtoolbar_toolbar
:
{
tbitem1_opennewcreateview
:
{
caption
:
'新建'
,
tip
:
'新建'
,
},
tbitem2
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem4
:
{
caption
:
'编辑'
,
tip
:
'编辑'
,
},
tbitem6
:
{
caption
:
'拷贝'
,
tip
:
'拷贝'
,
},
tbitem7
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem8
:
{
caption
:
'删除'
,
tip
:
'删除'
,
},
tbitem9
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem13
:
{
caption
:
'导出'
,
tip
:
'导出'
,
},
tbitem10
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem19
:
{
caption
:
'过滤'
,
tip
:
'过滤'
,
},
},
depttree_treeview
:
{
nodes
:
{
root
:
'默认根节点'
,
},
uiactions
:
{
},
},
};
\ No newline at end of file
app_web/src/locale/lanres/entities/ibzdept-member/ibzdept-member_en_US.ts
0 → 100644
浏览文件 @
f4705820
export
default
{
fields
:
{
memberid
:
'标识'
,
deptid
:
'部门标识'
,
deptname
:
'部门名称'
,
userid
:
'用户标识'
,
personname
:
'成员'
,
},
views
:
{
editview
:
{
caption
:
"部门成员"
,
title
:
'部门成员'
,
},
gridview
:
{
caption
:
"部门成员"
,
title
:
'部门成员'
,
},
},
main_form
:
{
details
:
{
group1
:
"部门成员基本信息"
,
formpage1
:
"基本信息"
,
srforikey
:
""
,
srfkey
:
"标识"
,
srfmajortext
:
"成员"
,
srftempmode
:
""
,
srfuf
:
""
,
srfdeid
:
""
,
srfsourcekey
:
""
,
deptname
:
"部门名称"
,
deptid
:
"部门标识"
,
personname
:
"成员"
,
userid
:
"用户标识"
,
memberid
:
"标识"
,
},
uiactions
:
{
},
},
main_grid
:
{
columns
:
{
deptname
:
"部门"
,
personname
:
"成员"
,
deptid
:
"部门标识"
,
},
uiactions
:
{
},
},
gridviewtoolbar_toolbar
:
{
tbitem4
:
{
caption
:
"Edit"
,
tip
:
"Edit {0}"
,
},
tbitem6
:
{
caption
:
"Copy"
,
tip
:
"Copy {0}"
,
},
tbitem7
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem8
:
{
caption
:
"Remove"
,
tip
:
"Remove {0}"
,
},
tbitem9
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem13
:
{
caption
:
"Export"
,
tip
:
"Export {0} Data To Excel"
,
},
},
editviewtoolbar_toolbar
:
{
tbitem3
:
{
caption
:
"Save"
,
tip
:
"Save"
,
},
tbitem6
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem7
:
{
caption
:
"Remove And Close"
,
tip
:
"Remove And Close Window"
,
},
tbitem8
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem14
:
{
caption
:
"Copy"
,
tip
:
"Copy {0}"
,
},
},
};
\ No newline at end of file
app_web/src/locale/lanres/entities/ibzdept-member/ibzdept-member_zh_CN.ts
0 → 100644
浏览文件 @
f4705820
export
default
{
fields
:
{
memberid
:
'标识'
,
deptid
:
'部门标识'
,
deptname
:
'部门名称'
,
userid
:
'用户标识'
,
personname
:
'成员'
,
},
views
:
{
editview
:
{
caption
:
'部门成员'
,
title
:
'部门成员'
,
},
gridview
:
{
caption
:
'部门成员'
,
title
:
'部门成员'
,
},
},
main_form
:
{
details
:
{
group1
:
'部门成员基本信息'
,
formpage1
:
'基本信息'
,
srforikey
:
''
,
srfkey
:
'标识'
,
srfmajortext
:
'成员'
,
srftempmode
:
''
,
srfuf
:
''
,
srfdeid
:
''
,
srfsourcekey
:
''
,
deptname
:
'部门名称'
,
deptid
:
'部门标识'
,
personname
:
'成员'
,
userid
:
'用户标识'
,
memberid
:
'标识'
,
},
uiactions
:
{
},
},
main_grid
:
{
columns
:
{
deptname
:
'部门'
,
personname
:
'成员'
,
deptid
:
'部门标识'
,
},
uiactions
:
{
},
},
gridviewtoolbar_toolbar
:
{
tbitem4
:
{
caption
:
'编辑'
,
tip
:
'编辑'
,
},
tbitem6
:
{
caption
:
'拷贝'
,
tip
:
'拷贝'
,
},
tbitem7
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem8
:
{
caption
:
'删除'
,
tip
:
'删除'
,
},
tbitem9
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem13
:
{
caption
:
'导出'
,
tip
:
'导出'
,
},
},
editviewtoolbar_toolbar
:
{
tbitem3
:
{
caption
:
'保存'
,
tip
:
'保存'
,
},
tbitem6
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem7
:
{
caption
:
'删除'
,
tip
:
'删除'
,
},
tbitem8
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem14
:
{
caption
:
'拷贝'
,
tip
:
'拷贝'
,
},
},
};
\ No newline at end of file
app_web/src/locale/lanres/entities/ibzemployee/ibzemployee_en_US.ts
0 → 100644
浏览文件 @
f4705820
export
default
{
fields
:
{
userid
:
'用户标识'
,
username
:
'用户全局名'
,
personname
:
'姓名'
,
usercode
:
'用户工号'
,
loginname
:
'登录名'
,
password
:
'密码'
,
domains
:
'区属'
,
mdeptid
:
'主部门'
,
mdeptcode
:
'主部门代码'
,
mdeptname
:
'主部门名称'
,
bcode
:
'业务编码'
,
postid
:
'岗位标识'
,
postcode
:
'岗位代码'
,
postname
:
'岗位名称'
,
orgid
:
'单位'
,
orgcode
:
'单位代码'
,
orgname
:
'单位名称'
,
nickname
:
'昵称别名'
,
sex
:
'性别'
,
certcode
:
'证件号码'
,
phone
:
'联系方式'
,
birthday
:
'出生日期'
,
email
:
'邮件'
,
avatar
:
'社交账号'
,
addr
:
'地址'
,
usericon
:
'照片'
,
ipaddr
:
'ip地址'
,
theme
:
'样式'
,
lang
:
'语言'
,
fontsize
:
'字号'
,
memo
:
'备注'
,
reserver
:
'保留'
,
showorder
:
'排序'
,
enable
:
'逻辑有效'
,
createdate
:
'创建时间'
,
updatedate
:
'最后修改时间'
,
},
views
:
{
editgridview
:
{
caption
:
"人员"
,
title
:
'人员'
,
},
editview
:
{
caption
:
"人员"
,
title
:
'人员'
,
},
gridview
:
{
caption
:
"人员"
,
title
:
'人员'
,
},
mpickupview
:
{
caption
:
"人员"
,
title
:
'人员'
,
},
optionview
:
{
caption
:
"人员"
,
title
:
'人员'
,
},
changepwdview
:
{
caption
:
"人员"
,
title
:
'人员'
,
},
pickupview
:
{
caption
:
"人员"
,
title
:
'人员'
,
},
pickupgridview
:
{
caption
:
"人员"
,
title
:
'人员'
,
},
},
main_form
:
{
details
:
{
grouppanel1
:
"分组面板"
,
grouppanel2
:
"分组面板"
,
druipart1
:
"部门"
,
group1
:
"人员基本信息"
,
formpage1
:
"基本信息"
,
srfupdatedate
:
"最后修改时间"
,
srforikey
:
""
,
srfkey
:
"用户标识"
,
srfmajortext
:
"姓名"
,
srftempmode
:
""
,
srfuf
:
""
,
srfdeid
:
""
,
srfsourcekey
:
""
,
usercode
:
"用户工号"
,
personname
:
"姓名"
,
loginname
:
"登录名"
,
orgid
:
"单位"
,
orgname
:
"单位"
,
mdeptid
:
"主部门"
,
mdeptname
:
"部门"
,
mdeptcode
:
"主部门代码"
,
orgcode
:
"单位代码"
,
bcode
:
"业务编码"
,
nickname
:
"昵称别名"
,
sex
:
"性别"
,
birthday
:
"出生日期"
,
certcode
:
"证件号码"
,
phone
:
"联系方式"
,
avatar
:
"社交账号"
,
email
:
"邮件"
,
ipaddr
:
"ip地址"
,
showorder
:
"排序"
,
addr
:
"地址"
,
memo
:
"备注"
,
theme
:
"样式"
,
lang
:
"语言"
,
fontsize
:
"字号"
,
reserver
:
"保留"
,
usericon
:
"照片"
,
userid
:
"用户标识"
,
},
uiactions
:
{
},
},
newform_form
:
{
details
:
{
group1
:
"人员基本信息"
,
formpage1
:
"基本信息"
,
srfupdatedate
:
"最后修改时间"
,
srforikey
:
""
,
srfkey
:
"用户标识"
,
srfmajortext
:
"姓名"
,
srftempmode
:
""
,
srfuf
:
""
,
srfdeid
:
""
,
srfsourcekey
:
""
,
usercode
:
"用户工号"
,
personname
:
"姓名"
,
loginname
:
"登录名"
,
orgname
:
"单位"
,
orgid
:
"单位"
,
orgcode
:
"单位代码"
,
mdeptname
:
"部门"
,
mdeptcode
:
"主部门代码"
,
mdeptid
:
"主部门"
,
enable
:
"逻辑有效"
,
bcode
:
"业务编码"
,
userid
:
"用户标识"
,
},
uiactions
:
{
},
},
changepw_form
:
{
details
:
{
group1
:
"密码信息"
,
formpage1
:
"基本信息"
,
srfupdatedate
:
"最后修改时间"
,
srforikey
:
""
,
srfkey
:
"用户标识"
,
srfmajortext
:
"姓名"
,
srftempmode
:
""
,
srfuf
:
""
,
srfdeid
:
""
,
srfsourcekey
:
""
,
oldpasswd
:
"原始密码"
,
newpasswd
:
"新密码"
,
cfmpasswd
:
"新密码确认"
,
userid
:
"用户标识"
,
},
uiactions
:
{
},
},
editgrid_grid
:
{
columns
:
{
usercode
:
"用户工号"
,
personname
:
"姓名"
,
loginname
:
"登录名"
,
orgcode
:
"单位代码"
,
orgname
:
"单位名称"
,
mdeptcode
:
"主部门代码"
,
mdeptname
:
"主部门名称"
,
sex
:
"性别"
,
phone
:
"联系方式"
,
ipaddr
:
"ip地址"
,
showorder
:
"排序"
,
},
uiactions
:
{
},
},
main_grid
:
{
columns
:
{
usercode
:
"用户工号"
,
personname
:
"姓名"
,
loginname
:
"登录名"
,
orgcode
:
"单位代码"
,
orgname
:
"单位名称"
,
mdeptcode
:
"主部门代码"
,
mdeptname
:
"主部门名称"
,
sex
:
"性别"
,
phone
:
"联系方式"
,
ipaddr
:
"ip地址"
,
showorder
:
"排序"
,
},
uiactions
:
{
},
},
default_searchform
:
{
details
:
{
formpage1
:
"常规条件"
,
n_usercode_like
:
"工号"
,
n_personname_like
:
"姓名"
,
n_mdeptname_like
:
"部门"
,
},
uiactions
:
{
},
},
editgridviewtoolbar_toolbar
:
{
tbitem24
:
{
caption
:
"行编辑"
,
tip
:
"行编辑"
,
},
tbitem25
:
{
caption
:
"新建行"
,
tip
:
"新建行"
,
},
tbitem26
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem8
:
{
caption
:
"Remove"
,
tip
:
"Remove {0}"
,
},
tbitem9
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem19
:
{
caption
:
"Filter"
,
tip
:
"Filter"
,
},
},
editviewtoolbar_toolbar
:
{
tbitem3
:
{
caption
:
"Save"
,
tip
:
"Save"
,
},
tbitem6
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem7
:
{
caption
:
"Remove And Close"
,
tip
:
"Remove And Close Window"
,
},
tbitem8
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem14
:
{
caption
:
"Copy"
,
tip
:
"Copy {0}"
,
},
},
gridviewtoolbar_toolbar
:
{
tbitem1_opennewcreateview
:
{
caption
:
"新建"
,
tip
:
"新建"
,
},
tbitem2
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem4
:
{
caption
:
"Edit"
,
tip
:
"Edit {0}"
,
},
tbitem6
:
{
caption
:
"Copy"
,
tip
:
"Copy {0}"
,
},
tbitem7
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem8
:
{
caption
:
"Remove"
,
tip
:
"Remove {0}"
,
},
tbitem9
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem13
:
{
caption
:
"Export"
,
tip
:
"Export {0} Data To Excel"
,
},
tbitem10
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem14_initpwd
:
{
caption
:
"初始化密码"
,
tip
:
"初始化密码"
,
},
tbitem15
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem19
:
{
caption
:
"Filter"
,
tip
:
"Filter"
,
},
},
changepwdviewtoolbar_toolbar
:
{
tbitem1
:
{
caption
:
"Save"
,
tip
:
"Save"
,
},
},
};
\ No newline at end of file
app_web/src/locale/lanres/entities/ibzemployee/ibzemployee_zh_CN.ts
0 → 100644
浏览文件 @
f4705820
export
default
{
fields
:
{
userid
:
'用户标识'
,
username
:
'用户全局名'
,
personname
:
'姓名'
,
usercode
:
'用户工号'
,
loginname
:
'登录名'
,
password
:
'密码'
,
domains
:
'区属'
,
mdeptid
:
'主部门'
,
mdeptcode
:
'主部门代码'
,
mdeptname
:
'主部门名称'
,
bcode
:
'业务编码'
,
postid
:
'岗位标识'
,
postcode
:
'岗位代码'
,
postname
:
'岗位名称'
,
orgid
:
'单位'
,
orgcode
:
'单位代码'
,
orgname
:
'单位名称'
,
nickname
:
'昵称别名'
,
sex
:
'性别'
,
certcode
:
'证件号码'
,
phone
:
'联系方式'
,
birthday
:
'出生日期'
,
email
:
'邮件'
,
avatar
:
'社交账号'
,
addr
:
'地址'
,
usericon
:
'照片'
,
ipaddr
:
'ip地址'
,
theme
:
'样式'
,
lang
:
'语言'
,
fontsize
:
'字号'
,
memo
:
'备注'
,
reserver
:
'保留'
,
showorder
:
'排序'
,
enable
:
'逻辑有效'
,
createdate
:
'创建时间'
,
updatedate
:
'最后修改时间'
,
},
views
:
{
editgridview
:
{
caption
:
'人员'
,
title
:
'人员'
,
},
editview
:
{
caption
:
'人员'
,
title
:
'人员'
,
},
gridview
:
{
caption
:
'人员'
,
title
:
'人员'
,
},
mpickupview
:
{
caption
:
'人员'
,
title
:
'人员'
,
},
optionview
:
{
caption
:
'人员'
,
title
:
'人员'
,
},
changepwdview
:
{
caption
:
'人员'
,
title
:
'人员'
,
},
pickupview
:
{
caption
:
'人员'
,
title
:
'人员'
,
},
pickupgridview
:
{
caption
:
'人员'
,
title
:
'人员'
,
},
},
main_form
:
{
details
:
{
grouppanel1
:
'分组面板'
,
grouppanel2
:
'分组面板'
,
druipart1
:
'部门'
,
group1
:
'人员基本信息'
,
formpage1
:
'基本信息'
,
srfupdatedate
:
'最后修改时间'
,
srforikey
:
''
,
srfkey
:
'用户标识'
,
srfmajortext
:
'姓名'
,
srftempmode
:
''
,
srfuf
:
''
,
srfdeid
:
''
,
srfsourcekey
:
''
,
usercode
:
'用户工号'
,
personname
:
'姓名'
,
loginname
:
'登录名'
,
orgid
:
'单位'
,
orgname
:
'单位'
,
mdeptid
:
'主部门'
,
mdeptname
:
'部门'
,
mdeptcode
:
'主部门代码'
,
orgcode
:
'单位代码'
,
bcode
:
'业务编码'
,
nickname
:
'昵称别名'
,
sex
:
'性别'
,
birthday
:
'出生日期'
,
certcode
:
'证件号码'
,
phone
:
'联系方式'
,
avatar
:
'社交账号'
,
email
:
'邮件'
,
ipaddr
:
'ip地址'
,
showorder
:
'排序'
,
addr
:
'地址'
,
memo
:
'备注'
,
theme
:
'样式'
,
lang
:
'语言'
,
fontsize
:
'字号'
,
reserver
:
'保留'
,
usericon
:
'照片'
,
userid
:
'用户标识'
,
},
uiactions
:
{
},
},
newform_form
:
{
details
:
{
group1
:
'人员基本信息'
,
formpage1
:
'基本信息'
,
srfupdatedate
:
'最后修改时间'
,
srforikey
:
''
,
srfkey
:
'用户标识'
,
srfmajortext
:
'姓名'
,
srftempmode
:
''
,
srfuf
:
''
,
srfdeid
:
''
,
srfsourcekey
:
''
,
usercode
:
'用户工号'
,
personname
:
'姓名'
,
loginname
:
'登录名'
,
orgname
:
'单位'
,
orgid
:
'单位'
,
orgcode
:
'单位代码'
,
mdeptname
:
'部门'
,
mdeptcode
:
'主部门代码'
,
mdeptid
:
'主部门'
,
enable
:
'逻辑有效'
,
bcode
:
'业务编码'
,
userid
:
'用户标识'
,
},
uiactions
:
{
},
},
changepw_form
:
{
details
:
{
group1
:
'密码信息'
,
formpage1
:
'基本信息'
,
srfupdatedate
:
'最后修改时间'
,
srforikey
:
''
,
srfkey
:
'用户标识'
,
srfmajortext
:
'姓名'
,
srftempmode
:
''
,
srfuf
:
''
,
srfdeid
:
''
,
srfsourcekey
:
''
,
oldpasswd
:
'原始密码'
,
newpasswd
:
'新密码'
,
cfmpasswd
:
'新密码确认'
,
userid
:
'用户标识'
,
},
uiactions
:
{
},
},
editgrid_grid
:
{
columns
:
{
usercode
:
'用户工号'
,
personname
:
'姓名'
,
loginname
:
'登录名'
,
orgcode
:
'单位代码'
,
orgname
:
'单位名称'
,
mdeptcode
:
'主部门代码'
,
mdeptname
:
'主部门名称'
,
sex
:
'性别'
,
phone
:
'联系方式'
,
ipaddr
:
'ip地址'
,
showorder
:
'排序'
,
},
uiactions
:
{
},
},
main_grid
:
{
columns
:
{
usercode
:
'用户工号'
,
personname
:
'姓名'
,
loginname
:
'登录名'
,
orgcode
:
'单位代码'
,
orgname
:
'单位名称'
,
mdeptcode
:
'主部门代码'
,
mdeptname
:
'主部门名称'
,
sex
:
'性别'
,
phone
:
'联系方式'
,
ipaddr
:
'ip地址'
,
showorder
:
'排序'
,
},
uiactions
:
{
},
},
default_searchform
:
{
details
:
{
formpage1
:
'常规条件'
,
n_usercode_like
:
'工号'
,
n_personname_like
:
'姓名'
,
n_mdeptname_like
:
'部门'
,
},
uiactions
:
{
},
},
editgridviewtoolbar_toolbar
:
{
tbitem24
:
{
caption
:
'行编辑'
,
tip
:
'行编辑'
,
},
tbitem25
:
{
caption
:
'新建行'
,
tip
:
'新建行'
,
},
tbitem26
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem8
:
{
caption
:
'删除'
,
tip
:
'删除'
,
},
tbitem9
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem19
:
{
caption
:
'过滤'
,
tip
:
'过滤'
,
},
},
editviewtoolbar_toolbar
:
{
tbitem3
:
{
caption
:
'保存'
,
tip
:
'保存'
,
},
tbitem6
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem7
:
{
caption
:
'删除'
,
tip
:
'删除'
,
},
tbitem8
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem14
:
{
caption
:
'拷贝'
,
tip
:
'拷贝'
,
},
},
gridviewtoolbar_toolbar
:
{
tbitem1_opennewcreateview
:
{
caption
:
'新建'
,
tip
:
'新建'
,
},
tbitem2
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem4
:
{
caption
:
'编辑'
,
tip
:
'编辑'
,
},
tbitem6
:
{
caption
:
'拷贝'
,
tip
:
'拷贝'
,
},
tbitem7
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem8
:
{
caption
:
'删除'
,
tip
:
'删除'
,
},
tbitem9
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem13
:
{
caption
:
'导出'
,
tip
:
'导出'
,
},
tbitem10
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem14_initpwd
:
{
caption
:
'初始化密码'
,
tip
:
'初始化密码'
,
},
tbitem15
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem19
:
{
caption
:
'过滤'
,
tip
:
'过滤'
,
},
},
changepwdviewtoolbar_toolbar
:
{
tbitem1
:
{
caption
:
'保存'
,
tip
:
'保存'
,
},
},
};
\ No newline at end of file
app_web/src/locale/lanres/entities/ibzorganization/ibzorganization_en_US.ts
0 → 100644
浏览文件 @
f4705820
export
default
{
fields
:
{
orgid
:
'单位标识'
,
orgcode
:
'单位代码'
,
orgname
:
'名称'
,
parentorgid
:
'上级单位'
,
shortname
:
'单位简称'
,
orglevel
:
'单位级别'
,
showorder
:
'排序'
,
parentorgname
:
'上级单位'
,
enable
:
'逻辑有效'
,
createdate
:
'创建时间'
,
updatedate
:
'最后修改时间'
,
},
views
:
{
editview
:
{
caption
:
"单位机构"
,
title
:
'单位机构'
,
},
treeexpview
:
{
caption
:
"部门管理"
,
title
:
'部门管理'
,
},
pickupgridview
:
{
caption
:
"单位机构"
,
title
:
'单位机构'
,
},
optionview
:
{
caption
:
"单位机构"
,
title
:
'单位机构'
,
},
pickupview
:
{
caption
:
"单位机构"
,
title
:
'单位机构'
,
},
gridview
:
{
caption
:
"单位机构"
,
title
:
'单位机构'
,
},
},
main_form
:
{
details
:
{
formpage1
:
"基本信息"
,
srfupdatedate
:
"最后修改时间"
,
srforikey
:
""
,
srfkey
:
"单位标识"
,
srfmajortext
:
"名称"
,
srftempmode
:
""
,
srfuf
:
""
,
srfdeid
:
""
,
srfsourcekey
:
""
,
orgid
:
"单位标识"
,
orgcode
:
"单位代码"
,
orgname
:
"名称"
,
porgname
:
"上级单位"
,
orglevel
:
"单位级别"
,
shortname
:
"单位简称"
,
showorder
:
"排序"
,
porgid
:
"上级单位"
,
createdate
:
"创建时间"
,
updatedate
:
"最后修改时间"
,
},
uiactions
:
{
},
},
newform_form
:
{
details
:
{
group1
:
"单位机构基本信息"
,
formpage1
:
"基本信息"
,
srfupdatedate
:
"最后修改时间"
,
srforikey
:
""
,
srfkey
:
"单位标识"
,
srfmajortext
:
"名称"
,
srftempmode
:
""
,
srfuf
:
""
,
srfdeid
:
""
,
srfsourcekey
:
""
,
orgcode
:
"单位代码"
,
orgname
:
"名称"
,
porgname
:
"上级单位"
,
porgid
:
"上级单位"
,
enable
:
"逻辑有效"
,
orgid
:
"单位标识"
,
},
uiactions
:
{
},
},
main_grid
:
{
columns
:
{
orgid
:
"单位标识"
,
orgcode
:
"单位代码"
,
orgname
:
"名称"
,
orglevel
:
"单位级别"
,
shortname
:
"单位简称"
,
porgname
:
"上级单位"
,
porgid
:
"上级单位"
,
showorder
:
"排序"
,
createdate
:
"创建时间"
,
updatedate
:
"最后修改时间"
,
},
uiactions
:
{
},
},
default_searchform
:
{
details
:
{
formpage1
:
"常规条件"
,
orgcode
:
"单位代码(文本左包含(%#))"
,
n_orgname_like
:
"名称(%)"
,
n_porgid_eq
:
"上级单位(=)"
,
porgname
:
"上级单位(等于(=))"
,
},
uiactions
:
{
},
},
editviewtoolbar_toolbar
:
{
tbitem3
:
{
caption
:
"Save"
,
tip
:
"Save"
,
},
tbitem6
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem7
:
{
caption
:
"Remove And Close"
,
tip
:
"Remove And Close Window"
,
},
tbitem8
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem14
:
{
caption
:
"Copy"
,
tip
:
"Copy {0}"
,
},
},
gridviewtoolbar_toolbar
:
{
tbitem1_opennewcreateview
:
{
caption
:
"新建"
,
tip
:
"新建"
,
},
tbitem2
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem4
:
{
caption
:
"Edit"
,
tip
:
"Edit {0}"
,
},
tbitem6
:
{
caption
:
"Copy"
,
tip
:
"Copy {0}"
,
},
tbitem7
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem8
:
{
caption
:
"Remove"
,
tip
:
"Remove {0}"
,
},
tbitem9
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem13
:
{
caption
:
"Export"
,
tip
:
"Export {0} Data To Excel"
,
},
tbitem10
:
{
caption
:
"-"
,
tip
:
""
,
},
tbitem19
:
{
caption
:
"Filter"
,
tip
:
"Filter"
,
},
},
orgtree_treeview
:
{
nodes
:
{
root
:
'默认根节点'
,
},
uiactions
:
{
},
},
};
\ No newline at end of file
app_web/src/locale/lanres/entities/ibzorganization/ibzorganization_zh_CN.ts
0 → 100644
浏览文件 @
f4705820
export
default
{
fields
:
{
orgid
:
'单位标识'
,
orgcode
:
'单位代码'
,
orgname
:
'名称'
,
parentorgid
:
'上级单位'
,
shortname
:
'单位简称'
,
orglevel
:
'单位级别'
,
showorder
:
'排序'
,
parentorgname
:
'上级单位'
,
enable
:
'逻辑有效'
,
createdate
:
'创建时间'
,
updatedate
:
'最后修改时间'
,
},
views
:
{
editview
:
{
caption
:
'单位机构'
,
title
:
'单位机构'
,
},
treeexpview
:
{
caption
:
'部门管理'
,
title
:
'部门管理'
,
},
pickupgridview
:
{
caption
:
'单位机构'
,
title
:
'单位机构'
,
},
optionview
:
{
caption
:
'单位机构'
,
title
:
'单位机构'
,
},
pickupview
:
{
caption
:
'单位机构'
,
title
:
'单位机构'
,
},
gridview
:
{
caption
:
'单位机构'
,
title
:
'单位机构'
,
},
},
main_form
:
{
details
:
{
formpage1
:
'基本信息'
,
srfupdatedate
:
'最后修改时间'
,
srforikey
:
''
,
srfkey
:
'单位标识'
,
srfmajortext
:
'名称'
,
srftempmode
:
''
,
srfuf
:
''
,
srfdeid
:
''
,
srfsourcekey
:
''
,
orgid
:
'单位标识'
,
orgcode
:
'单位代码'
,
orgname
:
'名称'
,
porgname
:
'上级单位'
,
orglevel
:
'单位级别'
,
shortname
:
'单位简称'
,
showorder
:
'排序'
,
porgid
:
'上级单位'
,
createdate
:
'创建时间'
,
updatedate
:
'最后修改时间'
,
},
uiactions
:
{
},
},
newform_form
:
{
details
:
{
group1
:
'单位机构基本信息'
,
formpage1
:
'基本信息'
,
srfupdatedate
:
'最后修改时间'
,
srforikey
:
''
,
srfkey
:
'单位标识'
,
srfmajortext
:
'名称'
,
srftempmode
:
''
,
srfuf
:
''
,
srfdeid
:
''
,
srfsourcekey
:
''
,
orgcode
:
'单位代码'
,
orgname
:
'名称'
,
porgname
:
'上级单位'
,
porgid
:
'上级单位'
,
enable
:
'逻辑有效'
,
orgid
:
'单位标识'
,
},
uiactions
:
{
},
},
main_grid
:
{
columns
:
{
orgid
:
'单位标识'
,
orgcode
:
'单位代码'
,
orgname
:
'名称'
,
orglevel
:
'单位级别'
,
shortname
:
'单位简称'
,
porgname
:
'上级单位'
,
porgid
:
'上级单位'
,
showorder
:
'排序'
,
createdate
:
'创建时间'
,
updatedate
:
'最后修改时间'
,
},
uiactions
:
{
},
},
default_searchform
:
{
details
:
{
formpage1
:
'常规条件'
,
orgcode
:
'单位代码(文本左包含(%#))'
,
n_orgname_like
:
'名称(%)'
,
n_porgid_eq
:
'上级单位(=)'
,
porgname
:
'上级单位(等于(=))'
,
},
uiactions
:
{
},
},
editviewtoolbar_toolbar
:
{
tbitem3
:
{
caption
:
'保存'
,
tip
:
'保存'
,
},
tbitem6
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem7
:
{
caption
:
'删除'
,
tip
:
'删除'
,
},
tbitem8
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem14
:
{
caption
:
'拷贝'
,
tip
:
'拷贝'
,
},
},
gridviewtoolbar_toolbar
:
{
tbitem1_opennewcreateview
:
{
caption
:
'新建'
,
tip
:
'新建'
,
},
tbitem2
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem4
:
{
caption
:
'编辑'
,
tip
:
'编辑'
,
},
tbitem6
:
{
caption
:
'拷贝'
,
tip
:
'拷贝'
,
},
tbitem7
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem8
:
{
caption
:
'删除'
,
tip
:
'删除'
,
},
tbitem9
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem13
:
{
caption
:
'导出'
,
tip
:
'导出'
,
},
tbitem10
:
{
caption
:
'-'
,
tip
:
''
,
},
tbitem19
:
{
caption
:
'过滤'
,
tip
:
'过滤'
,
},
},
orgtree_treeview
:
{
nodes
:
{
root
:
'默认根节点'
,
},
uiactions
:
{
},
},
};
\ No newline at end of file
app_web/src/locale/lanres/entities/ibzteam-member/ibzteam-member_en_US.ts
0 → 100644
浏览文件 @
f4705820
export
default
{
fields
:
{
teammemberid
:
'组成员标识'
,
teamid
:
'组标识'
,
teamname
:
'组名称'
,
userid
:
'用户标识'
,
personname
:
'姓名'
,
},
};
\ No newline at end of file
app_web/src/locale/lanres/entities/ibzteam-member/ibzteam-member_zh_CN.ts
0 → 100644
浏览文件 @
f4705820
export
default
{
fields
:
{
teammemberid
:
'组成员标识'
,
teamid
:
'组标识'
,
teamname
:
'组名称'
,
userid
:
'用户标识'
,
personname
:
'姓名'
,
},
};
\ No newline at end of file
app_web/src/locale/lanres/entities/ibzteam/ibzteam_en_US.ts
0 → 100644
浏览文件 @
f4705820
export
default
{
fields
:
{
teamid
:
'组标识'
,
teamname
:
'组名称'
,
},
};
\ No newline at end of file
app_web/src/locale/lanres/entities/ibzteam/ibzteam_zh_CN.ts
0 → 100644
浏览文件 @
f4705820
export
default
{
fields
:
{
teamid
:
'组标识'
,
teamname
:
'组名称'
,
},
};
\ No newline at end of file
app_web/src/pages/ou/ibzdepartment-edit-grid-view/ibzdepartment-edit-grid-view-base.vue
浏览文件 @
f4705820
...
...
@@ -229,10 +229,12 @@ export default class IBZDepartmentEditGridViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzdepartment-edit-view/ibzdepartment-edit-view-base.vue
浏览文件 @
f4705820
...
...
@@ -202,10 +202,12 @@ export default class IBZDepartmentEditViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzdepartment-grid-view/ibzdepartment-grid-view-base.vue
浏览文件 @
f4705820
...
...
@@ -241,10 +241,12 @@ export default class IBZDepartmentGridViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzdepartment-mpickup-view/ibzdepartment-mpickup-view-base.vue
浏览文件 @
f4705820
...
...
@@ -203,10 +203,12 @@ export default class IBZDepartmentMPickupViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzdepartment-option-view/ibzdepartment-option-view-base.vue
浏览文件 @
f4705820
...
...
@@ -174,10 +174,12 @@ export default class IBZDepartmentOptionViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzdepartment-pickup-grid-view/ibzdepartment-pickup-grid-view-base.vue
浏览文件 @
f4705820
...
...
@@ -182,10 +182,12 @@ export default class IBZDepartmentPickupGridViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzdepartment-pickup-view/ibzdepartment-pickup-view-base.vue
浏览文件 @
f4705820
...
...
@@ -170,10 +170,12 @@ export default class IBZDepartmentPickupViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzdepartment-tree-exp-view/ibzdepartment-tree-exp-view-base.vue
浏览文件 @
f4705820
...
...
@@ -164,10 +164,12 @@ export default class IBZDepartmentTreeExpViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzdept-member-edit-view/ibzdept-member-edit-view-base.vue
浏览文件 @
f4705820
...
...
@@ -202,10 +202,12 @@ export default class IBZDeptMemberEditViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzdept-member-grid-view/ibzdept-member-grid-view-base.vue
浏览文件 @
f4705820
...
...
@@ -209,10 +209,12 @@ export default class IBZDeptMemberGridViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzemployee-change-pwd-view/ibzemployee-change-pwd-view-base.vue
浏览文件 @
f4705820
...
...
@@ -188,10 +188,12 @@ export default class IBZEmployeeChangePwdViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzemployee-edit-grid-view/ibzemployee-edit-grid-view-base.vue
浏览文件 @
f4705820
...
...
@@ -232,10 +232,12 @@ export default class IBZEmployeeEditGridViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzemployee-edit-view/ibzemployee-edit-view-base.vue
浏览文件 @
f4705820
...
...
@@ -202,10 +202,12 @@ export default class IBZEmployeeEditViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzemployee-grid-view/ibzemployee-grid-view-base.vue
浏览文件 @
f4705820
...
...
@@ -248,10 +248,12 @@ export default class IBZEmployeeGridViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzemployee-mpickup-view/ibzemployee-mpickup-view-base.vue
浏览文件 @
f4705820
...
...
@@ -203,10 +203,12 @@ export default class IBZEmployeeMPickupViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzemployee-option-view/ibzemployee-option-view-base.vue
浏览文件 @
f4705820
...
...
@@ -174,10 +174,12 @@ export default class IBZEmployeeOptionViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzemployee-pickup-grid-view/ibzemployee-pickup-grid-view-base.vue
浏览文件 @
f4705820
...
...
@@ -182,10 +182,12 @@ export default class IBZEmployeePickupGridViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzemployee-pickup-view/ibzemployee-pickup-view-base.vue
浏览文件 @
f4705820
...
...
@@ -170,10 +170,12 @@ export default class IBZEmployeePickupViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzorganization-edit-view/ibzorganization-edit-view-base.vue
浏览文件 @
f4705820
...
...
@@ -202,10 +202,12 @@ export default class IBZOrganizationEditViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzorganization-grid-view/ibzorganization-grid-view-base.vue
浏览文件 @
f4705820
...
...
@@ -244,10 +244,12 @@ export default class IBZOrganizationGridViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzorganization-option-view/ibzorganization-option-view-base.vue
浏览文件 @
f4705820
...
...
@@ -174,10 +174,12 @@ export default class IBZOrganizationOptionViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzorganization-pickup-grid-view/ibzorganization-pickup-grid-view-base.vue
浏览文件 @
f4705820
...
...
@@ -182,10 +182,12 @@ export default class IBZOrganizationPickupGridViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzorganization-pickup-view/ibzorganization-pickup-view-base.vue
浏览文件 @
f4705820
...
...
@@ -170,10 +170,12 @@ export default class IBZOrganizationPickupViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ibzorganization-tree-exp-view/ibzorganization-tree-exp-view-base.vue
浏览文件 @
f4705820
...
...
@@ -164,10 +164,12 @@ export default class IBZOrganizationTreeExpViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/pages/ou/ouindex-view/ouindex-view-base.vue
浏览文件 @
f4705820
...
...
@@ -176,10 +176,12 @@ export default class OUIndexViewBase extends Vue {
onViewData
(
newVal
:
any
,
oldVal
:
any
)
{
const
_this
:
any
=
this
;
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
engine
)
{
this
.
$nextTick
(()
=>
{
_this
.
parseViewParam
();
_this
.
engine
.
load
();
}
});
}
}
/**
...
...
app_web/src/service/ibzemployee/save-dept-member-logic-base.ts
浏览文件 @
f4705820
...
...
@@ -31,6 +31,13 @@ export default class SaveDeptMemberLogicBase {
*/
private
defaultParamName
:
string
=
"Default"
;
/**
* 参数集合
*
* @memberof SaveDeptMemberLogicBase
*/
private
paramsMap
:
Map
<
string
,
any
>
=
new
Map
();
/**
* Creates an instance of SaveDeptMemberLogicBase.
*
...
...
@@ -38,7 +45,18 @@ export default class SaveDeptMemberLogicBase {
* @memberof SaveDeptMemberLogicBase
*/
constructor
(
opts
:
any
=
{})
{
this
.
initParams
(
opts
);
}
/**
* 初始化参数集合
*
* @param {*} [opts={}]
* @memberof SaveDeptMemberLogicBase
*/
public
initParams
(
opts
:
any
){
this
.
paramsMap
.
set
(
'Default'
,
opts
);
this
.
paramsMap
.
set
(
'member'
,{});
}
...
...
@@ -98,10 +116,20 @@ export default class SaveDeptMemberLogicBase {
*/
private
async
executePrepareparam1
(
context
:
any
,
params
:
any
,
isloading
:
boolean
){
// 准备参数节点
Object
.
assign
(
params
,{
deptid
:
params
.
mdeptid
});
Object
.
assign
(
context
,{
ibzdeptmember
:
params
.
mdeptid
?
params
.
mdeptid
:
null
});
Object
.
assign
(
params
,{
userid
:
params
.
userid
});
Object
.
assign
(
context
,{
ibzdeptmember
:
params
.
userid
?
params
.
userid
:
null
});
console
.
log
(
this
.
paramsMap
);
let
tempSrcParam0
:
any
=
this
.
paramsMap
.
get
(
'Default'
);
let
tempDstParam0Context
:
any
=
this
.
paramsMap
.
get
(
'member'
).
context
;
let
tempDstParam0Data
:
any
=
this
.
paramsMap
.
get
(
'member'
).
data
;
Object
.
assign
(
tempDstParam0Data
,{
DEPTID
:
tempSrcParam0Data
[
'MDEPTID'
]});
this
.
paramsMap
.
set
(
'member'
,{
data
:
tempDstParam0Data
,
context
:
tempDstParam0Context
});
console
.
log
(
this
.
paramsMap
);
console
.
log
(
this
.
paramsMap
);
let
tempSrcParam1
:
any
=
this
.
paramsMap
.
get
(
'Default'
);
let
tempDstParam1Context
:
any
=
this
.
paramsMap
.
get
(
'member'
).
context
;
let
tempDstParam1Data
:
any
=
this
.
paramsMap
.
get
(
'member'
).
data
;
Object
.
assign
(
tempDstParam1Data
,{
USERID
:
tempSrcParam1Data
[
'USERID'
]});
this
.
paramsMap
.
set
(
'member'
,{
data
:
tempDstParam1Data
,
context
:
tempDstParam1Context
});
console
.
log
(
this
.
paramsMap
);
if
(
this
.
compute1Cond
(
params
)){
return
this
.
executeDeaction1
(
context
,
params
,
isloading
);
}
...
...
app_web/src/utils/uiaction-tool/uiaction-tool.ts
浏览文件 @
f4705820
...
...
@@ -79,7 +79,7 @@ export class UIActionTool {
});
}
if
(
values
.
length
!==
noPropertyNum
){
Object
.
assign
(
_data
,
{
[
name
]:
values
.
length
>
0
?
values
.
join
(
'
;
'
)
:
value
});
Object
.
assign
(
_data
,
{
[
name
]:
values
.
length
>
0
?
values
.
join
(
'
,
'
)
:
value
});
}
});
}
...
...
config.xml
浏览文件 @
f4705820
...
...
@@ -37,11 +37,6 @@
git clone -b master $para2 ibzou/
export NODE_OPTIONS=--max-old-space-size=4096
cd ibzou/
mvn clean package -Pweb
cd ibzou-app/ibzou-app-web
mvn -Pweb docker:build
mvn -Pweb docker:push
docker -H $para1 stack deploy --compose-file=src/main/docker/ibzou-app-web.yaml ibzlab-rt --with-registry-auth
</command>
</hudson.tasks.Shell>
</builders>
...
...
ibzou-app/ibzou-app-web/src/main/docker/Dockerfile
浏览文件 @
f4705820
...
...
@@ -9,6 +9,6 @@ CMD echo "The application will start in ${IBIZ_SLEEP}s..." && \
sleep ${IBIZ_SLEEP} && \
java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /ibzou-app-web.jar
EXPOSE
30001
EXPOSE
8080
ADD
ibzou-app-web.jar /ibzou-app-web.jar
ibzou-app/ibzou-app-web/src/main/docker/ibzou-app-web.yaml
浏览文件 @
f4705820
...
...
@@ -3,22 +3,15 @@ services:
ibzou-app-web
:
image
:
registry.cn-shanghai.aliyuncs.com/ibizsys/ibzou-app-web:latest
ports
:
-
"
30001:30001
"
-
"
8080:8080
"
networks
:
-
agent_network
environment
:
-
SPRING_CLOUD_NACOS_DISCOVERY_IP=172.16.180.237
-
SERVER_PORT=30001
-
SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=172.16.102.211:8848
-
SPRING_REDIS_HOST=172.16.100.243
-
SPRING_REDIS_PORT=6379
-
SPRING_REDIS_DATABASE=0
-
SPRING_DATASOURCE_USERNAME=a_A_5d9d78509
-
SPRING_DATASOURCE_PASSWORD=@6dEfb3@
-
SPRING_DATASOURCE_URL=jdbc:mysql://172.16.180.232:3306/a_A_5d9d78509?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true
-
SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.jdbc.Driver
-
SPRING_DATASOURCE_DEFAULTSCHEMA=a_A_5d9d78509
deploy
:
resources
:
limits
:
memory
:
800M
reservations
:
memory
:
400M
mode
:
replicated
replicas
:
1
...
...
ibzou-core/src/main/resources/liquibase/changelog/20200601200530_init_ibzcfg.xml
0 → 100644
浏览文件 @
f4705820
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog
xmlns=
"http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext=
"http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.9.xsd"
>
<changeSet
author=
"Think (generated)"
id=
"1591012776347-1"
>
<createTable
remarks=
"配置"
tableName=
"IBZCFG"
>
<column
name=
"CFGID"
remarks=
"配置标识"
type=
"VARCHAR(100)"
>
<constraints
primaryKey=
"true"
/>
</column>
<column
name=
"SYSTEMID"
remarks=
"系统标识"
type=
"VARCHAR(100)"
/>
<column
name=
"CFGTYPE"
remarks=
"配置类型"
type=
"VARCHAR(100)"
/>
<column
name=
"TARGETTYPE"
remarks=
"引用对象"
type=
"VARCHAR(100)"
/>
<column
name=
"USERID"
remarks=
"用户标识"
type=
"VARCHAR(100)"
/>
<column
name=
"CFG"
remarks=
"配置"
type=
"MEDIUMTEXT"
/>
<column
name=
"UPDATEDATE"
remarks=
"更新时间"
type=
"datetime"
/>
</createTable>
</changeSet>
</databaseChangeLog>
ibzou-provider/ibzou-provider-api/src/main/docker/ibzou-provider-api.yaml
浏览文件 @
f4705820
...
...
@@ -7,6 +7,11 @@ services:
networks
:
-
agent_network
deploy
:
resources
:
limits
:
memory
:
800M
reservations
:
memory
:
400M
mode
:
replicated
replicas
:
1
...
...
ibzou-util/src/main/java/cn/ibizlab/util/cache/CaffeineCacheConfig.java
浏览文件 @
f4705820
package
cn
.
ibizlab
.
util
.
cache
;
import
com.github.benmanes.caffeine.cache.CaffeineSpec
;
import
cn.ibizlab.util.cache.cacheManager.CaffeineCacheManager
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.cache.CacheProperties
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnExpression
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
...
...
@@ -12,6 +10,7 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.util.StringUtils
;
import
cn.ibizlab.util.cache.cacheManager.CaffeineCacheManager
;
/**
* Caffeine缓存配置类
...
...
@@ -22,19 +21,19 @@ import org.springframework.util.StringUtils;
@ConditionalOnExpression
(
"'${ibiz.cacheLevel:None}'.equals('L1')"
)
public
class
CaffeineCacheConfig
{
@Autowired
private
CacheProperties
cacheProperties
;
@Autowired
private
CaffeineCacheManager
caffeineCacheManager
;
/**
* Caffeine配置:设置过期时间
* @return
*/
@Bean
@Primary
public
CacheManager
cacheManager
()
{
String
specification
=
cacheProperties
.
getCaffeine
().
getSpec
();
if
(
StringUtils
.
hasText
(
specification
))
{
caffeineCacheManager
.
setCaffeineSpec
(
CaffeineSpec
.
parse
(
specification
));
public
CacheManager
cacheManager
(
CacheProperties
cacheProperties
)
{
CaffeineCacheManager
caffeineCacheManager
=
new
CaffeineCacheManager
();
String
strCacheConfig
=
cacheProperties
.
getCaffeine
().
getSpec
();
if
(
StringUtils
.
hasText
(
strCacheConfig
))
{
caffeineCacheManager
.
setCaffeineCacheConfig
(
CaffeineSpec
.
parse
(
strCacheConfig
));
}
return
caffeineCacheManager
;
}
}
\ No newline at end of file
ibzou-util/src/main/java/cn/ibizlab/util/cache/RedisCacheConfig.java
浏览文件 @
f4705820
package
cn
.
ibizlab
.
util
.
cache
;
import
com.alibaba.fastjson.parser.ParserConfig
;
import
com.fasterxml.jackson.annotation.JsonAutoDetect
;
import
com.fasterxml.jackson.annotation.PropertyAccessor
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.github.benmanes.caffeine.cache.CaffeineSpec
;
import
cn.ibizlab.util.cache.cacheManager.LayeringCacheManager
;
import
cn.ibizlab.util.cache.redis.KryoRedisSerializer
;
import
cn.ibizlab.util.cache.redis.StringRedisSerializer
;
import
cn.ibizlab.util.enums.RedisChannelTopic
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.autoconfigure.cache.CacheProperties
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnExpression
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
...
...
@@ -19,14 +14,19 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.data.redis.cache.RedisCacheConfiguration
;
import
org.springframework.data.redis.cache.RedisCacheManager
;
import
org.springframework.data.redis.cache.RedisCacheWriter
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.listener.RedisMessageListenerContainer
;
import
org.springframework.data.redis.listener.adapter.MessageListenerAdapter
;
import
org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer
;
import
org.springframework.data.redis.serializer.RedisSerializationContext
;
import
org.springframework.data.redis.serializer.StringRedisSerializer
;
import
org.springframework.util.StringUtils
;
import
java.time.Duration
;
import
cn.ibizlab.util.cache.cacheManager.LayeringCacheManager
;
import
cn.ibizlab.util.cache.listener.RedisMessageListener
;
import
cn.ibizlab.util.cache.redis.CustomJacksonSerializer
;
import
cn.ibizlab.util.enums.RedisChannelTopic
;
/**
* 缓存配置类
...
...
@@ -39,83 +39,91 @@ import org.springframework.util.StringUtils;
@ConditionalOnExpression
(
"'${ibiz.cacheLevel:None}'.equals('L2')"
)
public
class
RedisCacheConfig
{
@Autowired
private
RedisCacheWriter
redisCacheWriter
;
@Autowired
private
RedisCacheConfiguration
configuration
;
@Autowired
LayeringCacheManager
layeringCacheManager
;
@Autowired
private
CacheProperties
cacheProperties
;
@Bean
public
RedisCacheManager
redisCacheManager
(
RedisConnectionFactory
connectionFactory
)
{
return
RedisCacheManager
.
create
(
connectionFactory
);
}
@Value
(
"${spring.cache.redis.time-to-live:3600}"
)
private
long
timeToLive
;
/**
* 分层缓存管理器
* @param redisConnectionFactory
* @param cacheProperties
* @return
*/
@Bean
public
RedisCacheWriter
redisCacheWriter
(
RedisConnectionFactory
connectionFactory
){
RedisCacheWriter
redisCacheWriter
=
RedisCacheWriter
.
nonLockingRedisCacheWriter
(
connectionFactory
);
return
redisCacheWriter
;
@Primary
public
CacheManager
cacheManager
(
RedisConnectionFactory
redisConnectionFactory
,
CacheProperties
cacheProperties
){
LayeringCacheManager
layeringCacheManager
=
new
LayeringCacheManager
(
redisCacheWriter
(
redisConnectionFactory
),
redisCacheConfiguration
(),
redisTemplate
(
redisConnectionFactory
));
String
strCacheConfig
=
cacheProperties
.
getCaffeine
().
getSpec
();
if
(
StringUtils
.
hasText
(
strCacheConfig
))
{
layeringCacheManager
.
setCaffeineCacheConfig
(
CaffeineSpec
.
parse
(
strCacheConfig
));
}
return
layeringCacheManager
;
}
/**
* 重写Redis序列化方式,使用Json方式:
* 当我们的数据存储到Redis的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的。RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer。
* Spring Data JPA为我们提供了下面的Serializer:
* GenericToStringSerializer、Jackson2JsonRedisSerializer、JacksonJsonRedisSerializer、JdkSerializationRedisSerializer、OxmSerializer、StringRedisSerializer。
* 在此我们将自己配置RedisTemplate并定义Serializer。
*
* @param redisConnectionFactory
* redis配置:设置过期时间及序列化方式
* @return
*/
@Bean
public
RedisTemplate
<
String
,
Object
>
redisTemplate
(
RedisConnectionFactory
redisConnectionFactory
)
{
RedisTemplate
<
String
,
Object
>
redisTemplate
=
new
RedisTemplate
<>();
redisTemplate
.
setConnectionFactory
(
redisConnectionFactory
);
Jackson2JsonRedisSerializer
<
Object
>
jackson2JsonRedisSerializer
=
new
Jackson2JsonRedisSerializer
<
Object
>(
Object
.
class
);
public
RedisCacheConfiguration
redisCacheConfiguration
(){
CustomJacksonSerializer
jackson2JsonRedisSerializer
=
new
CustomJacksonSerializer
(
Object
.
class
);
ObjectMapper
om
=
new
ObjectMapper
();
om
.
setVisibility
(
PropertyAccessor
.
ALL
,
JsonAutoDetect
.
Visibility
.
ANY
);
om
.
enableDefaultTyping
(
ObjectMapper
.
DefaultTyping
.
NON_FINAL
);
jackson2JsonRedisSerializer
.
setObjectMapper
(
om
);
ParserConfig
.
getGlobalInstance
().
setAutoTypeSupport
(
true
);
KryoRedisSerializer
<
Object
>
kryoRedisSerializer
=
new
KryoRedisSerializer
<>(
Object
.
class
);
redisTemplate
.
setValueSerializer
(
kryoRedisSerializer
);
// 设置值(value)的序列化采用KryoRedisSerializer。
redisTemplate
.
setHashValueSerializer
(
kryoRedisSerializer
);
redisTemplate
.
setKeySerializer
(
new
StringRedisSerializer
());
// 设置键(key)的序列化采用StringRedisSerializer。
redisTemplate
.
setHashKeySerializer
(
new
StringRedisSerializer
());
redisTemplate
.
afterPropertiesSet
();
return
redisTemplate
;
RedisCacheConfiguration
configuration
=
RedisCacheConfiguration
.
defaultCacheConfig
()
.
entryTtl
(
Duration
.
ofSeconds
(
timeToLive
))
.
serializeKeysWith
(
RedisSerializationContext
.
SerializationPair
.
fromSerializer
(
new
StringRedisSerializer
()))
.
serializeValuesWith
(
RedisSerializationContext
.
SerializationPair
.
fromSerializer
(
jackson2JsonRedisSerializer
))
.
disableCachingNullValues
();
return
configuration
;
}
/**
* 创建redis缓存
* @param connectionFactory
* @return
*/
@Bean
@Primary
public
CacheManager
cacheManager
()
{
setCaffeineCacheConfig
(
layeringCacheManager
);
//Caffeine缓存设置
layeringCacheManager
.
setRedisCacheWriter
(
redisCacheWriter
);
layeringCacheManager
.
setRedisConfiguration
(
configuration
);
return
layeringCacheManager
;
public
RedisCacheWriter
redisCacheWriter
(
RedisConnectionFactory
connectionFactory
){
RedisCacheWriter
redisCacheWriter
=
RedisCacheWriter
.
nonLockingRedisCacheWriter
(
connectionFactory
);
return
redisCacheWriter
;
}
private
void
setCaffeineCacheConfig
(
LayeringCacheManager
layeringCacheManager
)
{
String
specification
=
cacheProperties
.
getCaffeine
().
getSpec
();
if
(
StringUtils
.
hasText
(
specification
))
{
layeringCacheManager
.
setCaffeineSpec
(
CaffeineSpec
.
parse
(
specification
));
}
/**
* 发送redis广播
* @param factory
* @return
*/
@Bean
public
RedisTemplate
<
String
,
Object
>
redisTemplate
(
RedisConnectionFactory
factory
)
{
RedisTemplate
<
String
,
Object
>
template
=
new
RedisTemplate
<>();
template
.
setConnectionFactory
(
factory
);
CustomJacksonSerializer
jacksonSerial
=
new
CustomJacksonSerializer
(
Object
.
class
);
ObjectMapper
om
=
new
ObjectMapper
();
om
.
setVisibility
(
PropertyAccessor
.
ALL
,
JsonAutoDetect
.
Visibility
.
ANY
);
jacksonSerial
.
setObjectMapper
(
om
);
template
.
setValueSerializer
(
jacksonSerial
);
template
.
setKeySerializer
(
new
StringRedisSerializer
());
template
.
setHashKeySerializer
(
new
StringRedisSerializer
());
template
.
setHashValueSerializer
(
jacksonSerial
);
template
.
afterPropertiesSet
();
return
template
;
}
/**
* 监听redis指定频道
* @param redisConnectionFactory
* @param messageListener
* @param cacheManager
* @param redisTemplate
* @return
*/
@Bean
RedisMessageListenerContainer
redisContainer
(
RedisConnectionFactory
redisConnectionFactory
,
MessageListenerAdapter
messageListener
)
{
final
RedisMessageListenerContainer
container
=
new
RedisMessageListenerContainer
();
RedisMessageListenerContainer
redisContainer
(
RedisConnectionFactory
redisConnectionFactory
,
CacheManager
cacheManager
,
RedisTemplate
redisTemplate
)
{
RedisMessageListenerContainer
container
=
new
RedisMessageListenerContainer
();
MessageListenerAdapter
messageListener
=
new
RedisMessageListener
(
cacheManager
,
redisTemplate
);
container
.
setConnectionFactory
(
redisConnectionFactory
);
container
.
addMessageListener
(
messageListener
,
RedisChannelTopic
.
REDIS_CACHE_DELETE_TOPIC
.
getChannelTopic
());
container
.
addMessageListener
(
messageListener
,
RedisChannelTopic
.
REDIS_CACHE_CLEAR_TOPIC
.
getChannelTopic
());
return
container
;
}
}
\ No newline at end of file
ibzou-util/src/main/java/cn/ibizlab/util/cache/cache/CusRedisCache.java
浏览文件 @
f4705820
...
...
@@ -12,5 +12,4 @@ public class CusRedisCache extends RedisCache {
public
CusRedisCache
(
String
name
,
RedisCacheWriter
redisCacheWriter
,
RedisCacheConfiguration
configuration
)
{
super
(
name
,
redisCacheWriter
,
configuration
);
}
}
ibzou-util/src/main/java/cn/ibizlab/util/cache/cache/LayeringCache.java
浏览文件 @
f4705820
package
cn
.
ibizlab
.
util
.
cache
.
cache
;
import
cn.ibizlab.util.cache.listener.RedisPublisher
;
import
cn.ibizlab.util.enums.RedisChannelTopic
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.cache.caffeine.CaffeineCache
;
import
org.springframework.cache.support.AbstractValueAdaptingCache
;
import
org.springframework.cache.support.NullValue
;
import
org.springframework.data.redis.cache.RedisCache
;
import
org.springframework.data.redis.cache.RedisCacheConfiguration
;
import
org.springframework.data.redis.cache.RedisCacheWriter
;
import
org.springframework.data.redis.core.RedisOperations
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.concurrent.Callable
;
import
cn.ibizlab.util.cache.listener.RedisPublisher
;
import
cn.ibizlab.util.enums.RedisChannelTopic
;
/**
* 缓存分层类
* 1级缓存为caffeine
* 2级缓存为redis
*/
@Slf4j
public
class
LayeringCache
extends
AbstractValueAdaptingCache
{
Logger
logger
=
LoggerFactory
.
getLogger
(
LayeringCache
.
class
);
/**
* 缓存的名称
*/
private
final
String
n
ame
;
private
String
cacheN
ame
;
/**
*
redis
缓存
*
Caffeine
缓存
*/
private
RedisCache
redis
Cache
;
private
CaffeineCache
caffeine
Cache
;
/**
*
Caffeine
缓存
*
redis
缓存
*/
private
final
CaffeineCache
caffeine
Cache
;
private
RedisCache
redis
Cache
;
/**
* redis消息发布
*/
RedisOperations
<?
extends
Object
,
?
extends
Object
>
redisOperations
;
public
LayeringCache
(
String
name
,
RedisOperations
redisOperations
,
com
.
github
.
benmanes
.
caffeine
.
cache
.
Cache
<
Object
,
Object
>
caffeineCache
,
RedisCacheWriter
redisCacheWriter
,
RedisCacheConfiguration
configuration
)
{
public
LayeringCache
(
String
cacheName
,
CaffeineCache
caffeineCache
,
RedisCache
redisCache
,
RedisOperations
redisOperations
)
{
super
(
true
);
this
.
name
=
n
ame
;
this
.
redisCache
=
new
CusRedisCache
(
name
,
redisCacheWriter
,
configuration
)
;
this
.
caffeineCache
=
new
CaffeineCache
(
name
,
caffeineCache
,
true
)
;
this
.
cacheName
=
cacheN
ame
;
this
.
caffeineCache
=
caffeineCache
;
this
.
redisCache
=
redisCache
;
this
.
redisOperations
=
redisOperations
;
}
@Override
public
String
getName
()
{
return
this
.
n
ame
;
return
this
.
cacheN
ame
;
}
@Override
...
...
@@ -61,28 +57,24 @@ public class LayeringCache extends AbstractValueAdaptingCache {
@Override
public
ValueWrapper
get
(
Object
key
)
{
// 查询一级缓存
ValueWrapper
wrapper
=
caffeineCache
.
get
(
key
);
log
ger
.
debug
(
"查询一级缓存 key:{},value:{}"
,
key
,
wrapper
);
log
.
debug
(
"查询一级缓存 key:{},value:{}"
,
key
,
wrapper
);
if
(
wrapper
==
null
)
{
// 查询二级缓存
wrapper
=
redisCache
.
get
(
key
);
caffeineCache
.
put
(
key
,
wrapper
==
null
?
null
:
wrapper
.
get
());
log
ger
.
debug
(
"查询二级缓存,并将数据放到一级缓存。 key:{}"
,
key
);
log
.
debug
(
"查询二级缓存,并将数据放到一级缓存。 key:{}"
,
key
);
}
return
wrapper
;
}
@Override
public
<
T
>
T
get
(
Object
key
,
Class
<
T
>
type
)
{
// 查询一级缓存
T
value
=
caffeineCache
.
get
(
key
,
type
);
log
ger
.
debug
(
"查询一级缓存 key:{}"
,
key
);
log
.
debug
(
"查询一级缓存 key:{}"
,
key
);
if
(
value
==
null
)
{
// 查询二级缓存
value
=
redisCache
.
get
(
key
,
type
);
caffeineCache
.
put
(
key
,
value
);
log
ger
.
debug
(
"查询二级缓存,并将数据放到一级缓存。 key:{}"
,
key
);
log
.
debug
(
"查询二级缓存,并将数据放到一级缓存。 key:{}"
,
key
);
}
return
value
;
}
...
...
@@ -90,11 +82,9 @@ public class LayeringCache extends AbstractValueAdaptingCache {
@SuppressWarnings
(
"unchecked"
)
@Override
public
<
T
>
T
get
(
Object
key
,
Callable
<
T
>
valueLoader
)
{
// 查询一级缓存,如果一级缓存没有值则调用getForSecondaryCache(k, valueLoader)查询二级缓存
T
value
=
(
T
)
caffeineCache
.
getNativeCache
().
get
(
key
,
k
->
getSecondCache
(
k
,
valueLoader
));
T
value
=
(
T
)
caffeineCache
.
getNativeCache
().
get
(
key
,
k
->
getSecondCacheValue
(
k
,
valueLoader
));
if
(
value
==
null
)
{
// 直接查询二级缓存
value
=
(
T
)
getSecondCache
(
key
,
valueLoader
);
value
=
(
T
)
getSecondCacheValue
(
key
,
valueLoader
);
}
if
(
value
instanceof
NullValue
)
{
return
null
;
...
...
@@ -119,11 +109,11 @@ public class LayeringCache extends AbstractValueAdaptingCache {
redisCache
.
evict
(
key
);
//清除redis中的二级缓存
caffeineCache
.
evict
(
key
);
//清除本机一级缓存
Map
<
String
,
Object
>
message
=
new
HashMap
<>();
message
.
put
(
"cacheName"
,
n
ame
);
message
.
put
(
"cacheName"
,
cacheN
ame
);
message
.
put
(
"key"
,
key
);
RedisPublisher
redisPublisher
=
new
RedisPublisher
(
redisOperations
,
RedisChannelTopic
.
REDIS_CACHE_DELETE_TOPIC
.
getChannelTopic
());
// 创建redis发布者
redisPublisher
.
publisher
(
message
);
//发布消息,清除其它集群机器中的一级缓存
log
ger
.
debug
(
String
.
format
(
"清除二级缓存数据[%s]"
,
key
));
log
.
debug
(
String
.
format
(
"清除二级缓存数据[%s]"
,
key
));
}
@Override
...
...
@@ -131,7 +121,7 @@ public class LayeringCache extends AbstractValueAdaptingCache {
redisCache
.
clear
();
//清除redis中的二级缓存
caffeineCache
.
clear
();
//清除本机一级缓存
Map
<
String
,
Object
>
message
=
new
HashMap
<>();
message
.
put
(
"cacheName"
,
n
ame
);
message
.
put
(
"cacheName"
,
cacheN
ame
);
RedisPublisher
redisPublisher
=
new
RedisPublisher
(
redisOperations
,
RedisChannelTopic
.
REDIS_CACHE_CLEAR_TOPIC
.
getChannelTopic
());
// 创建redis发布者
redisPublisher
.
publisher
(
message
);
//发布消息,清除其它集群机器中的一级缓存
}
...
...
@@ -139,31 +129,39 @@ public class LayeringCache extends AbstractValueAdaptingCache {
@Override
protected
Object
lookup
(
Object
key
)
{
Object
value
=
caffeineCache
.
get
(
key
);
log
ger
.
debug
(
"查询一级缓存 key:{}"
,
key
);
log
.
debug
(
"查询一级缓存 key:{}"
,
key
);
if
(
value
==
null
)
{
value
=
redisCache
.
get
(
key
);
log
ger
.
debug
(
"查询二级缓存 key:{}"
,
key
);
log
.
debug
(
"查询二级缓存 key:{}"
,
key
);
}
return
value
;
}
/**
* 查询二级缓存
* @param key
* @param valueLoader
* 获取caffeine缓存
* @return
*/
private
<
T
>
Object
getSecondCache
(
Object
key
,
Callable
<
T
>
valueLoader
)
{
T
value
=
redisCache
.
get
(
key
,
valueLoader
);
logger
.
debug
(
"查询二级缓存 key:{}"
,
key
);
return
toStoreValue
(
value
);
public
CaffeineCache
getFirstCache
()
{
return
this
.
caffeineCache
;
}
/**
* 获取
caffeine
缓存
* 获取
redis
缓存
* @return
*/
public
CaffeineCache
getFirstCache
()
{
return
this
.
caffeineCache
;
public
RedisCache
getSecondCache
()
{
return
this
.
redisCache
;
}
/**
* 查询二级缓存
* @param key
* @param valueLoader
* @return
*/
private
<
T
>
Object
getSecondCacheValue
(
Object
key
,
Callable
<
T
>
valueLoader
)
{
T
value
=
redisCache
.
get
(
key
,
valueLoader
);
log
.
debug
(
"查询二级缓存 key:{}"
,
key
);
return
toStoreValue
(
value
);
}
}
ibzou-util/src/main/java/cn/ibizlab/util/cache/cacheManager/CaffeineCacheManager.java
浏览文件 @
f4705820
package
cn
.
ibizlab
.
util
.
cache
.
cacheManager
;
import
lombok.Data
;
import
com.github.benmanes.caffeine.cache.Caffeine
;
import
com.github.benmanes.caffeine.cache.CaffeineSpec
;
import
lombok.Data
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnExpression
;
import
org.springframework.cache.Cache
;
import
org.springframework.cache.CacheManager
;
import
org.springframework.cache.caffeine.CaffeineCache
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.ObjectUtils
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentMap
;
import
java.util.concurrent.TimeUnit
;
...
...
@@ -21,37 +17,31 @@ import java.util.concurrent.TimeUnit;
* Caffeine本地缓存
*/
@Data
@Component
@ConditionalOnExpression
(
"'${ibiz.cacheLevel:None}'.equals('L1')"
)
public
class
CaffeineCacheManager
implements
CacheManager
{
private
static
final
int
DEFAULT_EXPIRE_AFTER_WRITE
=
1
;
private
static
final
int
DEFAULT_INITIAL_CAPACITY
=
5
;
private
static
final
int
DEFAULT_MAXIMUM_SIZE
=
1_000
;
private
final
ConcurrentMap
<
String
,
Cache
>
cacheMap
=
new
ConcurrentHashMap
<
String
,
Cache
>(
16
);
/**
* 缓存默认设置
*/
private
static
final
int
default_expire_after_write
=
1
;
private
static
final
int
default_initial_capacity
=
5
;
private
static
final
int
default_maximum_size
=
1_000
;
private
Caffeine
<
Object
,
Object
>
cacheBuilder
=
Caffeine
.
newBuilder
()
.
expireAfterAccess
(
DEFAULT_EXPIRE_AFTER_WRITE
,
TimeUnit
.
HOURS
)
.
initialCapacity
(
DEFAULT_INITIAL_CAPACITY
)
.
maximumSize
(
DEFAULT_MAXIMUM_SIZE
);
.
expireAfterAccess
(
default_expire_after_write
,
TimeUnit
.
HOURS
)
.
initialCapacity
(
default_initial_capacity
)
.
maximumSize
(
default_maximum_size
);
/**
* 获取缓存对象
* @param
n
ame
* @param
cacheN
ame
* @return
*/
@Override
public
Cache
getCache
(
String
n
ame
)
{
Cache
cache
=
this
.
cacheMap
.
get
(
n
ame
);
public
Cache
getCache
(
String
cacheN
ame
)
{
Cache
cache
=
this
.
cacheMap
.
get
(
cacheN
ame
);
if
(
cache
==
null
)
{
synchronized
(
this
.
cacheMap
)
{
cache
=
this
.
cacheMap
.
get
(
n
ame
);
cache
=
this
.
cacheMap
.
get
(
cacheN
ame
);
if
(
cache
==
null
)
{
cache
=
createCache
(
n
ame
);
this
.
cacheMap
.
put
(
n
ame
,
cache
);
cache
=
createCache
(
cacheN
ame
);
this
.
cacheMap
.
put
(
cacheN
ame
,
cache
);
}
}
}
...
...
@@ -59,41 +49,32 @@ public class CaffeineCacheManager implements CacheManager {
}
/**
* 获取缓存名
* 创建缓存
* @param cacheName
* @return
*/
@Override
public
Collection
<
String
>
getCacheNames
()
{
return
Collections
.
unmodifiableSet
(
this
.
cacheMap
.
keySet
());
protected
Cache
createCache
(
String
cacheName
)
{
return
new
CaffeineCache
(
cacheName
,
this
.
cacheBuilder
.
build
(),
true
);
}
/**
* 创建缓存
* @param name
* 获取缓存名
* @return
*/
protected
Cache
createCache
(
String
name
)
{
return
new
CaffeineCache
(
name
,
this
.
cacheBuilder
.
build
(),
true
);
@Override
public
Collection
<
String
>
getCacheNames
()
{
return
Collections
.
unmodifiableSet
(
this
.
cacheMap
.
keySet
());
}
/**
* 缓存配置[缓存容量大小、时长等]
* @param caffeine
Spec
* @param caffeine
CacheConfig
*/
public
void
setCaffeine
Spec
(
CaffeineSpec
caffeineSpec
)
{
Caffeine
<
Object
,
Object
>
cacheBuilder
=
Caffeine
.
from
(
caffeine
Spec
);
public
void
setCaffeine
CacheConfig
(
CaffeineSpec
caffeineCacheConfig
)
{
Caffeine
<
Object
,
Object
>
cacheBuilder
=
Caffeine
.
from
(
caffeine
CacheConfig
);
if
(!
ObjectUtils
.
nullSafeEquals
(
this
.
cacheBuilder
,
cacheBuilder
))
{
this
.
cacheBuilder
=
cacheBuilder
;
refreshKnownCaches
();
}
}
/**
* 使用该CacheManager的当前状态重新创建已知的缓存。
*/
private
void
refreshKnownCaches
()
{
for
(
Map
.
Entry
<
String
,
Cache
>
entry
:
this
.
cacheMap
.
entrySet
())
{
entry
.
setValue
(
createCache
(
entry
.
getKey
()));
}
}
}
ibzou-util/src/main/java/cn/ibizlab/util/cache/cacheManager/LayeringCacheManager.java
浏览文件 @
f4705820
package
cn
.
ibizlab
.
util
.
cache
.
cacheManager
;
import
lombok.Data
;
import
com.github.benmanes.caffeine.cache.Caffeine
;
import
com.github.benmanes.caffeine.cache.CaffeineSpec
;
import
lombok.Data
;
import
cn.ibizlab.util.cache.cache.LayeringCache
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnExpression
;
import
org.springframework.cache.Cache
;
import
org.springframework.cache.CacheManager
;
import
org.springframework.cache.caffeine.CaffeineCache
;
import
org.springframework.data.redis.cache.RedisCacheConfiguration
;
import
org.springframework.data.redis.cache.RedisCacheWriter
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.ObjectUtils
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentMap
;
import
java.util.concurrent.TimeUnit
;
import
cn.ibizlab.util.cache.cache.CusRedisCache
;
import
cn.ibizlab.util.cache.cache.LayeringCache
;
/**
* 缓存分层
类
* 缓存分层
* 1级缓存为caffeine
* 2级缓存为redis
*/
@Data
@Component
@ConditionalOnExpression
(
"'${ibiz.cacheLevel:None}'.equals('L2')"
)
public
class
LayeringCacheManager
implements
CacheManager
{
private
static
final
int
DEFAULT_EXPIRE_AFTER_WRITE
=
1
;
private
static
final
int
DEFAULT_INITIAL_CAPACITY
=
5
;
private
static
final
int
DEFAULT_MAXIMUM_SIZE
=
1_000
;
private
final
ConcurrentMap
<
String
,
Cache
>
cacheMap
=
new
ConcurrentHashMap
<
String
,
Cache
>(
16
);
public
RedisCacheWriter
redisCacheWriter
;
public
RedisCacheConfiguration
redisConfiguration
;
@Autowired
public
RedisTemplate
<
String
,
Object
>
redisTemplate
;
/**
* 缓存默认设置
*/
private
static
final
int
default_expire_after_write
=
1
;
private
static
final
int
default_initial_capacity
=
5
;
private
static
final
int
default_maximum_size
=
1_000
;
private
Caffeine
<
Object
,
Object
>
cacheBuilder
=
Caffeine
.
newBuilder
()
.
expireAfterAccess
(
DEFAULT_EXPIRE_AFTER_WRITE
,
TimeUnit
.
HOURS
)
.
initialCapacity
(
DEFAULT_INITIAL_CAPACITY
)
.
maximumSize
(
DEFAULT_MAXIMUM_SIZE
);
.
expireAfterAccess
(
default_expire_after_write
,
TimeUnit
.
HOURS
)
.
initialCapacity
(
default_initial_capacity
)
.
maximumSize
(
default_maximum_size
);
private
RedisCacheWriter
redisCacheWriter
;
private
RedisCacheConfiguration
redisConfiguration
;
private
RedisTemplate
<
String
,
Object
>
redisTemplate
;
public
LayeringCacheManager
(
RedisCacheWriter
redisCacheWriter
,
RedisCacheConfiguration
redisConfiguration
,
RedisTemplate
<
String
,
Object
>
redisTemplate
){
this
.
redisCacheWriter
=
redisCacheWriter
;
this
.
redisConfiguration
=
redisConfiguration
;
this
.
redisTemplate
=
redisTemplate
;
}
/**
* 获取缓存对象
* @param
n
ame
* @param
cacheN
ame
* @return
*/
@Override
public
Cache
getCache
(
String
n
ame
)
{
Cache
cache
=
this
.
cacheMap
.
get
(
n
ame
);
public
Cache
getCache
(
String
cacheN
ame
)
{
Cache
cache
=
this
.
cacheMap
.
get
(
cacheN
ame
);
if
(
cache
==
null
)
{
synchronized
(
this
.
cacheMap
)
{
cache
=
this
.
cacheMap
.
get
(
n
ame
);
cache
=
this
.
cacheMap
.
get
(
cacheN
ame
);
if
(
cache
==
null
)
{
cache
=
createCache
(
n
ame
);
this
.
cacheMap
.
put
(
n
ame
,
cache
);
cache
=
createCache
(
cacheN
ame
);
this
.
cacheMap
.
put
(
cacheN
ame
,
cache
);
}
}
}
return
cache
;
}
/**
* 获取集合中的缓存
* @return
*/
@Override
public
Collection
<
String
>
getCacheNames
()
{
return
Collections
.
unmodifiableSet
(
this
.
cacheMap
.
keySet
());
}
protected
Cache
createCache
(
String
name
)
{
return
new
LayeringCache
(
name
,
redisTemplate
,
this
.
cacheBuilder
.
build
(),
redisCacheWriter
,
redisConfiguration
);
}
/**
* 使用该CacheManager的当前状态重新创建已知的缓存
* 创建缓存
* @param cacheName
* @return
*/
private
void
refreshKnownCaches
()
{
for
(
Map
.
Entry
<
String
,
Cache
>
entry
:
this
.
cacheMap
.
entrySet
())
{
entry
.
setValue
(
createCache
(
entry
.
getKey
()));
}
protected
Cache
createCache
(
String
cacheName
)
{
return
new
LayeringCache
(
cacheName
,
new
CaffeineCache
(
cacheName
,
this
.
cacheBuilder
.
build
(),
true
),
new
CusRedisCache
(
cacheName
,
redisCacheWriter
,
redisConfiguration
),
redisTemplate
);
}
public
void
setCaffeineSpec
(
CaffeineSpec
caffeineSpec
)
{
Caffeine
<
Object
,
Object
>
cacheBuilder
=
Caffeine
.
from
(
caffeineSpec
);
/**
* 缓存配置[缓存容量大小、时长等]
* @param caffeineCacheConfig
*/
public
void
setCaffeineCacheConfig
(
CaffeineSpec
caffeineCacheConfig
)
{
Caffeine
<
Object
,
Object
>
cacheBuilder
=
Caffeine
.
from
(
caffeineCacheConfig
);
if
(!
ObjectUtils
.
nullSafeEquals
(
this
.
cacheBuilder
,
cacheBuilder
))
{
this
.
cacheBuilder
=
cacheBuilder
;
refreshKnownCaches
();
}
}
}
ibzou-util/src/main/java/cn/ibizlab/util/cache/listener/RedisMessageListener.java
浏览文件 @
f4705820
package
cn
.
ibizlab
.
util
.
cache
.
listener
;
import
cn.ibizlab.util.cache.cache.LayeringCache
;
import
cn.ibizlab.util.enums.RedisChannelTopic
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnExpression
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.cache.Cache
;
import
org.springframework.cache.CacheManager
;
import
org.springframework.data.redis.connection.Message
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.listener.adapter.MessageListenerAdapter
;
import
org.springframework.data.redis.serializer.RedisSerializer
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.StringUtils
;
import
java.util.Map
;
import
cn.ibizlab.util.cache.cache.LayeringCache
;
import
cn.ibizlab.util.enums.RedisChannelTopic
;
/**
* redis消息的订阅者
*/
@Component
@ConditionalOnExpression
(
"'${ibiz.cacheLevel:None}'.equals('L2')"
)
@Slf4j
public
class
RedisMessageListener
extends
MessageListenerAdapter
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
RedisPublisher
.
class
);
@Autowired
CacheManager
cacheManager
;
@Autowired
RedisTemplate
redisTemplate
;
private
CacheManager
cacheManager
;
private
RedisTemplate
redisTemplate
;
public
RedisMessageListener
(
CacheManager
cacheManager
,
RedisTemplate
redisTemplate
){
this
.
cacheManager
=
cacheManager
;
this
.
redisTemplate
=
redisTemplate
;
}
@Override
public
void
onMessage
(
Message
message
,
byte
[]
pattern
)
{
super
.
onMessage
(
message
,
pattern
);
RedisChannelTopic
channelTopic
=
RedisChannelTopic
.
getChannelTopicEnum
(
new
String
(
message
.
getChannel
()));
Map
<
String
,
Object
>
map
=
null
;
RedisSerializer
serializer
=
redisTemplate
.
getValueSerializer
();
...
...
@@ -41,10 +35,10 @@ public class RedisMessageListener extends MessageListenerAdapter {
map
=
(
Map
<
String
,
Object
>)
result
;
}
if
(
StringUtils
.
isEmpty
(
map
)||
(!
map
.
containsKey
(
"cacheName"
))||
(!
map
.
containsKey
(
"key"
))){
log
ger
.
debug
(
"解析缓存数据失败,无法获取指定值!"
);
log
.
debug
(
"解析缓存数据失败,无法获取指定值!"
);
return
;
}
log
ger
.
debug
(
"redis消息订阅者接收到频道【{}】发布的消息。消息内容:{}"
,
channelTopic
.
getChannelTopicStr
(),
result
.
toString
());
log
.
debug
(
"redis消息订阅者接收到频道【{}】发布的消息。消息内容:{}"
,
channelTopic
.
getChannelTopicStr
(),
result
.
toString
());
String
cacheName
=
(
String
)
map
.
get
(
"cacheName"
);
Object
key
=
map
.
get
(
"key"
);
Cache
cache
=
cacheManager
.
getCache
(
cacheName
);
// 根据缓存名称获取多级缓存
...
...
@@ -52,14 +46,16 @@ public class RedisMessageListener extends MessageListenerAdapter {
switch
(
channelTopic
)
{
case
REDIS_CACHE_DELETE_TOPIC:
// 获取一级缓存,并删除一级缓存数据
((
LayeringCache
)
cache
).
getFirstCache
().
evict
(
key
);
logger
.
debug
(
"删除一级缓存{}数据,key:{},"
,
cacheName
,
key
.
toString
());
((
LayeringCache
)
cache
).
getSecondCache
().
evict
(
key
);
log
.
debug
(
"同步删除缓存{}数据,key:{},"
,
cacheName
,
key
.
toString
());
break
;
case
REDIS_CACHE_CLEAR_TOPIC:
// 获取一级缓存,并删除一级缓存数据
((
LayeringCache
)
cache
).
getFirstCache
().
clear
();
logger
.
debug
(
"清除一级缓存{}数据"
,
cacheName
);
((
LayeringCache
)
cache
).
getSecondCache
().
clear
();
log
.
debug
(
"同步清除缓存{}数据"
,
cacheName
);
break
;
default
:
log
ger
.
debug
(
"接收到没有定义的订阅消息频道数据"
);
log
.
debug
(
"接收到没有定义的订阅消息频道数据"
);
break
;
}
}
...
...
ibzou-util/src/main/java/cn/ibizlab/util/cache/redis/CustomJacksonSerializer.java
0 → 100644
浏览文件 @
f4705820
package
cn
.
ibizlab
.
util
.
cache
.
redis
;
import
cn.ibizlab.util.security.AuthenticationUser
;
import
org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer
;
import
org.springframework.data.redis.serializer.SerializationException
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
public
class
CustomJacksonSerializer
<
T
>
extends
Jackson2JsonRedisSerializer
<
T
>
{
public
static
final
String
DEFAULT_PACKAGE
=
"[\\w+\\.]+\\.AuthenticationUser"
;
public
static
final
String
USER_PACKAGE
=
AuthenticationUser
.
class
.
getName
();
public
CustomJacksonSerializer
(
Class
type
)
{
super
(
type
);
}
@Override
public
T
deserialize
(
byte
[]
bytes
)
throws
SerializationException
{
String
serializerContent
=
new
String
(
bytes
,
DEFAULT_CHARSET
);
Matcher
matcher
=
Pattern
.
compile
(
DEFAULT_PACKAGE
).
matcher
(
serializerContent
);
return
matcher
.
find
()?
super
.
deserialize
(
serializerContent
.
replaceAll
(
DEFAULT_PACKAGE
,
USER_PACKAGE
).
getBytes
()):
super
.
deserialize
(
bytes
);
}
}
ibzou-util/src/main/java/cn/ibizlab/util/cache/redis/CustomizedRedisCache.java
浏览文件 @
f4705820
package
cn
.
ibizlab
.
util
.
cache
.
redis
;
import
org.springframework.data.redis.cache.RedisCache
;
import
org.springframework.data.redis.cache.RedisCacheConfiguration
;
import
org.springframework.data.redis.cache.RedisCacheWriter
;
/**
* 自定义的redis缓存
*/
public
class
CustomizedRedisCache
extends
RedisCache
{
public
CustomizedRedisCache
(
String
name
,
RedisCacheWriter
redisCacheWriter
,
RedisCacheConfiguration
configuration
)
{
super
(
name
,
redisCacheWriter
,
configuration
);
}
public
class
CustomizedRedisCache
{
}
ibzou-util/src/main/java/cn/ibizlab/util/cache/redis/FastJsonRedisSerializer.java
浏览文件 @
f4705820
package
cn
.
ibizlab
.
util
.
cache
.
redis
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.serializer.SerializerFeature
;
import
org.springframework.data.redis.serializer.RedisSerializer
;
import
org.springframework.data.redis.serializer.SerializationException
;
import
java.nio.charset.Charset
;
/**
* Value 序列化
*
* @author /
* @param <T>
*/
public
class
FastJsonRedisSerializer
<
T
>
implements
RedisSerializer
<
T
>
public
class
FastJsonRedisSerializer
{
public
static
final
Charset
DEFAULT_CHARSET
=
Charset
.
forName
(
"UTF-8"
);
private
Class
<
T
>
clazz
;
public
FastJsonRedisSerializer
(
Class
<
T
>
clazz
)
{
super
();
this
.
clazz
=
clazz
;
}
@Override
public
byte
[]
serialize
(
T
t
)
throws
SerializationException
{
if
(
t
==
null
)
{
return
new
byte
[
0
];
}
return
JSON
.
toJSONString
(
t
,
SerializerFeature
.
WriteClassName
).
getBytes
(
DEFAULT_CHARSET
);
}
@Override
public
T
deserialize
(
byte
[]
bytes
)
throws
SerializationException
{
if
(
bytes
==
null
||
bytes
.
length
<=
0
)
{
return
null
;
}
String
str
=
new
String
(
bytes
,
DEFAULT_CHARSET
);
return
(
T
)
JSON
.
parseObject
(
str
,
clazz
);
}
}
ibzou-util/src/main/java/cn/ibizlab/util/cache/redis/KryoRedisSerializer.java
浏览文件 @
f4705820
package
cn
.
ibizlab
.
util
.
cache
.
redis
;
import
com.esotericsoftware.kryo.Kryo
;
import
com.esotericsoftware.kryo.io.Input
;
import
com.esotericsoftware.kryo.io.Output
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.data.redis.serializer.RedisSerializer
;
import
org.springframework.data.redis.serializer.SerializationException
;
public
class
KryoRedisSerializer
{
import
java.io.ByteArrayOutputStream
;
/**
* @param <T>
* 序列化/反序列化工具类
*/
public
class
KryoRedisSerializer
<
T
>
implements
RedisSerializer
<
T
>
{
Logger
logger
=
LoggerFactory
.
getLogger
(
KryoRedisSerializer
.
class
);
public
static
final
byte
[]
EMPTY_BYTE_ARRAY
=
new
byte
[
0
];
private
static
final
ThreadLocal
<
Kryo
>
kryos
=
ThreadLocal
.
withInitial
(
Kryo:
:
new
);
private
Class
<
T
>
clazz
;
public
KryoRedisSerializer
(
Class
<
T
>
clazz
)
{
super
();
this
.
clazz
=
clazz
;
}
@Override
public
byte
[]
serialize
(
T
t
)
throws
SerializationException
{
if
(
t
==
null
)
{
return
EMPTY_BYTE_ARRAY
;
}
Kryo
kryo
=
kryos
.
get
();
kryo
.
setReferences
(
false
);
kryo
.
register
(
clazz
);
try
(
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
Output
output
=
new
Output
(
baos
))
{
kryo
.
writeClassAndObject
(
output
,
t
);
output
.
flush
();
return
baos
.
toByteArray
();
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
EMPTY_BYTE_ARRAY
;
}
@Override
public
T
deserialize
(
byte
[]
bytes
)
throws
SerializationException
{
if
(
bytes
==
null
||
bytes
.
length
<=
0
)
{
return
null
;
}
Kryo
kryo
=
kryos
.
get
();
kryo
.
setReferences
(
false
);
kryo
.
register
(
clazz
);
try
(
Input
input
=
new
Input
(
bytes
))
{
return
(
T
)
kryo
.
readClassAndObject
(
input
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
}
return
null
;
}
}
\ No newline at end of file
ibzou-util/src/main/java/cn/ibizlab/util/cache/redis/RedisConfig.java
浏览文件 @
f4705820
package
cn
.
ibizlab
.
util
.
cache
.
redis
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.parser.ParserConfig
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.data.redis.RedisProperties
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.cache.annotation.CachingConfigurerSupport
;
import
org.springframework.cache.annotation.EnableCaching
;
import
org.springframework.cache.interceptor.KeyGenerator
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.cache.RedisCacheConfiguration
;
import
org.springframework.data.redis.core.RedisOperations
;
import
org.springframework.data.redis.serializer.RedisSerializationContext
;
import
java.time.Duration
;
public
class
RedisConfig
{
@Slf4j
@Configuration
@ConditionalOnClass
(
RedisOperations
.
class
)
@EnableConfigurationProperties
(
RedisProperties
.
class
)
public
class
RedisConfig
extends
CachingConfigurerSupport
{
@Value
(
"${spring.cache.redis.time-to-live:3600}"
)
private
long
timetolive
;
/**
* 设置 redis 数据默认过期时间,默认1天
* 设置@cacheable 序列化方式
* @return
*/
@Bean
public
RedisCacheConfiguration
redisCacheConfiguration
(){
FastJsonRedisSerializer
<
Object
>
fastJsonRedisSerializer
=
new
FastJsonRedisSerializer
<>(
Object
.
class
);
RedisCacheConfiguration
configuration
=
RedisCacheConfiguration
.
defaultCacheConfig
();
ParserConfig
.
getGlobalInstance
().
setAutoTypeSupport
(
true
);
configuration
=
configuration
.
serializeValuesWith
(
RedisSerializationContext
.
SerializationPair
.
fromSerializer
(
fastJsonRedisSerializer
)).
entryTtl
(
Duration
.
ofSeconds
(
timetolive
));
return
configuration
;
}
/**
* 自定义缓存key生成策略
* 使用方法 @Cacheable(keyGenerator="keyGenerator")
* @return
*/
@Bean
@Override
public
KeyGenerator
keyGenerator
()
{
return
(
target
,
method
,
params
)
->
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
target
.
getClass
().
getName
());
sb
.
append
(
method
.
getName
());
for
(
Object
obj
:
params
)
{
// 由于参数可能不同, hashCode肯定不一样, 缓存的key也需要不一样
sb
.
append
(
JSON
.
toJSONString
(
obj
).
hashCode
());
}
return
sb
.
toString
();
};
}
}
\ No newline at end of file
ibzou-util/src/main/java/cn/ibizlab/util/cache/redis/StringRedisSerializer.java
浏览文件 @
f4705820
package
cn
.
ibizlab
.
util
.
cache
.
redis
;
import
com.alibaba.fastjson.JSON
;
import
org.springframework.data.redis.serializer.RedisSerializer
;
import
org.springframework.util.Assert
;
public
class
StringRedisSerializer
{
import
java.nio.charset.Charset
;
/**
* 必须重写序列化器,否则@Cacheable注解的key会报类型转换错误
*/
public
class
StringRedisSerializer
implements
RedisSerializer
<
Object
>
{
private
final
Charset
charset
;
private
final
String
target
=
"\""
;
private
final
String
replacement
=
""
;
public
StringRedisSerializer
()
{
this
(
Charset
.
forName
(
"UTF8"
));
}
public
StringRedisSerializer
(
Charset
charset
)
{
Assert
.
notNull
(
charset
,
"Charset must not be null!"
);
this
.
charset
=
charset
;
}
@Override
public
String
deserialize
(
byte
[]
bytes
)
{
return
(
bytes
==
null
?
null
:
new
String
(
bytes
,
charset
));
}
@Override
public
byte
[]
serialize
(
Object
object
)
{
String
string
=
JSON
.
toJSONString
(
object
);
if
(
string
==
null
)
{
return
null
;
}
string
=
string
.
replace
(
target
,
replacement
);
return
string
.
getBytes
(
charset
);
}
}
ibzou-util/src/main/java/cn/ibizlab/util/enums/RedisChannelTopic.java
浏览文件 @
f4705820
...
...
@@ -5,8 +5,8 @@ import org.springframework.data.redis.listener.ChannelTopic;
* redis频道
*/
public
enum
RedisChannelTopic
{
REDIS_CACHE_DELETE_TOPIC
(
"redis:cache:delete:topic"
,
"删除redis缓存消息频道"
),
REDIS_CACHE_CLEAR_TOPIC
(
"redis:cache:clear:topic"
,
"清空redis缓存消息频道"
);
REDIS_CACHE_DELETE_TOPIC
(
"redis:cache:delete:topic
1
"
,
"删除redis缓存消息频道"
),
REDIS_CACHE_CLEAR_TOPIC
(
"redis:cache:clear:topic
2
"
,
"清空redis缓存消息频道"
);
String
channelTopic
;
String
label
;
...
...
ibzou-util/src/main/java/cn/ibizlab/util/security/AuthenticationUser.java
浏览文件 @
f4705820
...
...
@@ -143,7 +143,8 @@ public class AuthenticationUser implements UserDetails
return
new
HashMap
<>();
}
public
Collection
<
GrantedAuthority
>
getAuthorities
()
{
public
void
setPermissionList
(
JSONObject
permissionList
)
{
this
.
permissionList
=
permissionList
;
if
(
authorities
==
null
&&
permissionList
!=
null
){
if
(
permissionList
.
getJSONArray
(
"authorities"
)!=
null
){
authorities
=
new
ArrayList
<>();
...
...
@@ -151,6 +152,5 @@ public class AuthenticationUser implements UserDetails
forEach
(
item
->
authorities
.
add
(
new
SimpleGrantedAuthority
(
String
.
valueOf
(
item
))));
}
}
return
authorities
;
}
}
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录