Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MaxKey单点登录官方(MaxKeyTop)
MaxKey
提交
a44022b6
MaxKey
项目概览
MaxKey单点登录官方(MaxKeyTop)
/
MaxKey
8 个月 前同步成功
通知
75
Star
3
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
MaxKey
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a44022b6
编写于
11月 12, 2020
作者:
MaxKey单点登录官方
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
v 2.3.0 GA
上级
2928bff2
变更
22
隐藏空白更改
内联
并排
Showing
22 changed file
with
473 addition
and
103 deletion
+473
-103
README.md
README.md
+1
-1
ReleaseNotes.txt
ReleaseNotes.txt
+19
-11
gradle.properties
gradle.properties
+1
-1
maxkey-core/src/main/java/org/maxkey/domain/ExcelImport.java
maxkey-core/src/main/java/org/maxkey/domain/ExcelImport.java
+11
-0
maxkey-core/src/main/java/org/maxkey/domain/Organizations.java
...y-core/src/main/java/org/maxkey/domain/Organizations.java
+12
-0
maxkey-persistence/src/main/java/org/maxkey/persistence/service/OrganizationsService.java
.../org/maxkey/persistence/service/OrganizationsService.java
+198
-1
maxkey-persistence/src/main/java/org/maxkey/persistence/service/UserInfoService.java
.../java/org/maxkey/persistence/service/UserInfoService.java
+62
-52
maxkey-persistence/src/test/resources/application.properties
maxkey-persistence/src/test/resources/application.properties
+12
-12
maxkey-protocols/maxkey-protocol-tokenbased/src/main/java/org/maxkey/authz/token/endpoint/adapter/TokenBasedJWTAdapter.java
...ey/authz/token/endpoint/adapter/TokenBasedJWTAdapter.java
+1
-1
maxkey-protocols/maxkey-protocol-tokenbased/src/main/java/org/maxkey/authz/token/endpoint/adapter/TokenBasedJWTHS256Adapter.java
...thz/token/endpoint/adapter/TokenBasedJWTHS256Adapter.java
+1
-1
maxkey-web-manage/src/main/java/org/maxkey/web/contorller/OrganizationsController.java
...va/org/maxkey/web/contorller/OrganizationsController.java
+16
-1
maxkey-web-manage/src/main/java/org/maxkey/web/contorller/UserInfoController.java
...in/java/org/maxkey/web/contorller/UserInfoController.java
+0
-12
maxkey-web-manage/src/main/resources/messages/message.properties
...web-manage/src/main/resources/messages/message.properties
+11
-0
maxkey-web-manage/src/main/resources/messages/message_en.properties
...-manage/src/main/resources/messages/message_en.properties
+13
-1
maxkey-web-manage/src/main/resources/messages/message_zh_CN.properties
...nage/src/main/resources/messages/message_zh_CN.properties
+11
-0
maxkey-web-manage/src/main/resources/static/template/excel/Orgs_Import_Template.xlsx
...resources/static/template/excel/Orgs_Import_Template.xlsx
+0
-0
maxkey-web-manage/src/main/resources/static/template/excel/Users_Import_Template.xlsx
...esources/static/template/excel/Users_Import_Template.xlsx
+0
-0
maxkey-web-manage/src/main/resources/templates/views/orgs/orgsImport.ftl
...ge/src/main/resources/templates/views/orgs/orgsImport.ftl
+67
-0
maxkey-web-manage/src/main/resources/templates/views/orgs/orgsList.ftl
...nage/src/main/resources/templates/views/orgs/orgsList.ftl
+5
-1
maxkey-web-manage/src/main/resources/templates/views/userinfo/userUpdate.ftl
...rc/main/resources/templates/views/userinfo/userUpdate.ftl
+7
-2
maxkey-web-manage/src/main/resources/templates/views/userinfo/usersImport.ftl
...c/main/resources/templates/views/userinfo/usersImport.ftl
+22
-3
maxkey-web-manage/src/main/resources/templates/views/userinfo/usersList.ftl
...src/main/resources/templates/views/userinfo/usersList.ftl
+3
-3
未找到文件。
README.md
浏览文件 @
a44022b6
...
...
@@ -89,7 +89,7 @@
当前版本百度网盘下载,
<a
href=
"https://maxkey.top/zh/download.html"
target=
"_blank"
>
历史版本
</a>
| 版本 | 日期 | 下载地址 | 提取码 |
| --------| :----- | :---- | :----: |
| v 2.
2.0 GA | 2020/09/24 |
<a
href=
"https://pan.baidu.com/s/1gtgELidq1F-GwvmxKbY_oA"
target=
"_blank"
>
链接下载
</a>
|
**0y9o
**
|
| v 2.
3.0 GA | 2020/11/11 |
<a
href=
"https://pan.baidu.com/s/17jAatKNlM6L649992kEMBQ"
target=
"_blank"
>
链接下载
</a>
|
**h3zw
**
|
# Roadmap
...
...
ReleaseNotes.txt
浏览文件 @
a44022b6
MaxKey v 2.3.0 GA 2020/11/
**
MaxKey v 2.3.0 GA 2020/11/
12
*(MAXKEY-200901) 基于spring session的集群会话共享功能
*(MAXKEY-200902) 单点注销功能,应用可以配置为NONE/BACK_CHANNEL/FRONT_CHANNEL三种方式,支持CAS/SAML/Default
*(MAXKEY-200903) 用户在线实时更新功能
*(MAXKEY-200904) 批量Excel用户导入功能
*(MAXKEY-200905) 用户注册功能
*(MAXKEY-200906) 用户状态修改
*(MAXKEY-200907) 用户详情显示问题
*(MAXKEY-200908) 应用修改时数字大于4为长度格式化问题
*(MAXKEY-200904) 定制用户模板,实现批量Excel用户导入功能
*(MAXKEY-200905) 定制机构模板,实现批量Excel机构导入功能
*(MAXKEY-200906) 用户注册功能
*(MAXKEY-200907) 用户状态修改
*(MAXKEY-200908) 用户详情显示问题
*(MAXKEY-200909) 应用修改时数字大于4为长度格式化问题
*(MAXKEY-200910) 注销后,点击重新登陆跳转问题
*(MAXKEY-200911) 增加SP登录跳转功能,支持knox的认证
*(MAXKEY-200912) 构建脚本的优化和更新
*(MAXKEY-200913) 权限控制 RoleAdministrators
*(MAXKEY-200913)
管理员
权限控制 RoleAdministrators
*(MAXKEY-200914) 社交账号登录优化
*(MAXKEY-200915) 列表界面中未”选择“情况下,弹出界面错误
*(MAXKEY-200916) jib(docker) 支持 ,感谢https://github.com/alanland
*(MAXKEY-200916) 登录过程的优化
*(MAXKEY-200917) 认证的优化,支持@Principal的注入
*(MAXKEY-200918) 应用单点登录时,用户访问权限控制
*(MAXKEY-200920) 依赖jar引用、更新和升级
*(MAXKEY-200917) 登录过程的优化
*(MAXKEY-200918) 认证的优化,支持@Principal的注入
*(MAXKEY-200919) 应用单点登录时,用户访问权限控制
*(MAXKEY-200920) maxkey-mgt 项目配置文件的验证码启用不启用配置未生效
*(MAXKEY-200921) 登录图标改进
*(MAXKEY-200922) 官方网站的优化
*(MAXKEY-200923) 依赖jar引用、更新和升级
druid 1.2.1
JustAuth 1.15.8
simple-http 1.0.3
spring-session 2.3.1.RELEASE
druid-spring-boot-starter 1.2.1
xmlbeans 3.0.1
commons-compress 1.20
poi 4.1.2
commons-collections4 4.4
MaxKey v 2.2.0 GA 2020/09/24
*(MAXKEY-200801) 官方网站内容调整,初步增加英文版支持,增加新闻、合作伙伴及与CAS等开源产品对比
...
...
gradle.properties
浏览文件 @
a44022b6
group
=
maxkey.top
version
=
2.
2
.0.RELEASE
version
=
2.
3
.0.RELEASE
vendor
=
https://www.maxkey.top
author
=
shimingxy
#Version For use jar
...
...
maxkey-core/src/main/java/org/maxkey/domain/ExcelImport.java
浏览文件 @
a44022b6
...
...
@@ -44,6 +44,9 @@ public class ExcelImport extends JpaBaseDomain {
@JsonIgnore
protected
MultipartFile
excelFile
;
String
updateExist
;
public
ExcelImport
()
{
super
();
...
...
@@ -57,6 +60,14 @@ public class ExcelImport extends JpaBaseDomain {
this
.
id
=
id
;
}
public
String
getUpdateExist
()
{
return
updateExist
;
}
public
void
setUpdateExist
(
String
updateExist
)
{
this
.
updateExist
=
updateExist
;
}
public
MultipartFile
getExcelFile
()
{
return
excelFile
;
}
...
...
maxkey-core/src/main/java/org/maxkey/domain/Organizations.java
浏览文件 @
a44022b6
...
...
@@ -80,6 +80,8 @@ public class Organizations extends JpaBaseDomain implements Serializable {
private
String
sortIndex
;
@Column
private
String
description
;
private
String
status
;
public
Organizations
()
{
// TODO Auto-generated constructor stub
...
...
@@ -286,6 +288,16 @@ public class Organizations extends JpaBaseDomain implements Serializable {
public
void
setSortIndex
(
String
sortIndex
)
{
this
.
sortIndex
=
sortIndex
;
}
public
String
getStatus
()
{
return
status
;
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
}
@Override
public
String
toString
()
{
...
...
maxkey-persistence/src/main/java/org/maxkey/persistence/service/OrganizationsService.java
浏览文件 @
a44022b6
...
...
@@ -17,7 +17,22 @@
package
org.maxkey.persistence.service
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.TreeSet
;
import
java.util.stream.Collectors
;
import
org.apache.mybatis.jpa.persistence.JpaBaseService
;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook
;
import
org.apache.poi.ss.usermodel.Cell
;
import
org.apache.poi.ss.usermodel.CellType
;
import
org.apache.poi.ss.usermodel.Row
;
import
org.apache.poi.ss.usermodel.Sheet
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.maxkey.domain.Organizations
;
import
org.maxkey.identity.kafka.KafkaIdentityAction
;
import
org.maxkey.identity.kafka.KafkaIdentityTopic
;
...
...
@@ -25,6 +40,10 @@ import org.maxkey.identity.kafka.KafkaProvisioningService;
import
org.maxkey.persistence.mapper.OrganizationsMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.web.multipart.MultipartFile
;
import
com.google.common.collect.Lists
;
@Service
public
class
OrganizationsService
extends
JpaBaseService
<
Organizations
>{
...
...
@@ -71,5 +90,183 @@ public class OrganizationsService extends JpaBaseService<Organizations>{
}
return
false
;
}
public
boolean
importing
(
MultipartFile
file
)
{
if
(
file
==
null
){
return
false
;
}
InputStream
is
=
null
;
Workbook
wb
=
null
;
List
<
Organizations
>
orgsList
=
null
;
try
{
is
=
file
.
getInputStream
();
String
xls
=
".xls"
;
String
xlsx
=
".xlsx"
;
int
columnSize
=
46
;
orgsList
=
Lists
.
newArrayList
();
if
(
file
.
getOriginalFilename
().
toLowerCase
().
endsWith
(
xls
))
{
wb
=
new
HSSFWorkbook
(
is
);
}
else
if
(
file
.
getOriginalFilename
().
toLowerCase
().
endsWith
(
xlsx
))
{
wb
=
new
XSSFWorkbook
(
is
);
}
else
{
throw
new
RuntimeException
(
"maxKey用户导入没有Excel类型"
);
}
int
sheetSize
=
wb
.
getNumberOfSheets
();
//遍历sheet页
for
(
int
i
=
0
;
i
<
sheetSize
;
i
++)
{
Sheet
sheet
=
wb
.
getSheetAt
(
i
);
int
rowSize
=
sheet
.
getLastRowNum
()
+
1
;
//遍历行
for
(
int
j
=
1
;
j
<
rowSize
;
j
++)
{
Row
row
=
sheet
.
getRow
(
j
);
//略过空行和前3行
if
(
row
==
null
||
j
<
3
)
{
continue
;
}
else
{
//其他行是数据行
Organizations
organization
=
new
Organizations
();
for
(
int
k
=
0
;
k
<
columnSize
;
k
++)
{
if
(
k
==
0
)
{
// 上级编码
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setParentId
(
getValue
(
cell
));
}
else
if
(
k
==
1
)
{
// 上级名称
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setParentName
(
getValue
(
cell
));
}
else
if
(
k
==
2
)
{
// 机构编码
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setId
(
getValue
(
cell
));
}
else
if
(
k
==
3
)
{
// 机构名称
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setName
(
getValue
(
cell
));
}
else
if
(
k
==
4
)
{
// 机构全称
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setFullName
(
getValue
(
cell
));
}
else
if
(
k
==
5
)
{
// 编码路径
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setCodePath
(
getValue
(
cell
));
}
else
if
(
k
==
6
)
{
// 名称路径
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setNamePath
(
getValue
(
cell
));
}
else
if
(
k
==
7
)
{
// 机构类型
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setType
(
getValue
(
cell
));
}
else
if
(
k
==
8
)
{
// 所属分支机构
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setDivision
(
getValue
(
cell
));
}
else
if
(
k
==
9
)
{
// 级别
Cell
cell
=
row
.
getCell
(
k
);
String
level
=
getValue
(
cell
);
organization
.
setLevel
(
level
.
equals
(
""
)
?
"1"
:
level
);
}
else
if
(
k
==
10
)
{
// 排序
Cell
cell
=
row
.
getCell
(
k
);
String
sortIndex
=
getValue
(
cell
);
organization
.
setSortIndex
(
sortIndex
.
equals
(
""
)
?
"1"
:
sortIndex
);
}
else
if
(
k
==
11
)
{
// 联系人
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setContact
(
getValue
(
cell
));
}
else
if
(
k
==
12
)
{
// 联系电话
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setPhone
(
getValue
(
cell
));
}
else
if
(
k
==
13
)
{
// 邮箱
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setEmail
(
getValue
(
cell
));
}
else
if
(
k
==
14
)
{
// 传真
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setFax
(
getValue
(
cell
));
}
else
if
(
k
==
24
)
{
// 工作-国家
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setCountry
(
getValue
(
cell
));
}
else
if
(
k
==
25
)
{
// 工作-省
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setRegion
(
getValue
(
cell
));
}
else
if
(
k
==
26
)
{
// 工作-城市
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setLocality
(
getValue
(
cell
));
}
else
if
(
k
==
27
)
{
// 工作-地址
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setLocality
(
getValue
(
cell
));
}
else
if
(
k
==
28
)
{
// 邮编
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setPostalCode
(
getValue
(
cell
));
}
else
if
(
k
==
29
)
{
// 详细描述
Cell
cell
=
row
.
getCell
(
k
);
organization
.
setDescription
(
getValue
(
cell
));
}
}
organization
.
setStatus
(
"1"
);
orgsList
.
add
(
organization
);
}
}
}
// 数据去重
if
(
CollectionUtils
.
isEmpty
(
orgsList
)){
orgsList
=
orgsList
.
stream
().
collect
(
Collectors
.
collectingAndThen
(
Collectors
.
toCollection
(()
->
new
TreeSet
<>(
Comparator
.
comparing
(
o
->
o
.
getId
()))),
ArrayList:
:
new
));
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
is
!=
null
)
{
try
{
is
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
if
(
wb
!=
null
)
{
try
{
wb
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
return
batchInsert
(
orgsList
);
}
/**
* 根据数据格式返回数据
*
* @param cell
* @return
*/
public
static
String
getValue
(
Cell
cell
)
{
if
(
cell
==
null
)
{
return
""
;
}
else
if
(
cell
.
getCellType
()
==
CellType
.
BOOLEAN
)
{
return
String
.
valueOf
(
cell
.
getBooleanCellValue
());
}
else
if
(
cell
.
getCellType
()
==
CellType
.
NUMERIC
)
{
cell
.
setBlank
();
return
String
.
valueOf
(
cell
.
getStringCellValue
().
trim
());
}
else
{
return
String
.
valueOf
(
cell
.
getStringCellValue
().
trim
());
}
}
}
maxkey-persistence/src/main/java/org/maxkey/persistence/service/UserInfoService.java
浏览文件 @
a44022b6
...
...
@@ -90,7 +90,6 @@ public class UserInfoService extends JpaBaseService<UserInfo> {
*/
@Override
public
UserInfoMapper
getMapper
()
{
// TODO Auto-generated method stub
return
(
UserInfoMapper
)
super
.
getMapper
();
}
...
...
@@ -357,10 +356,11 @@ public class UserInfoService extends JpaBaseService<UserInfo> {
return
false
;
}
InputStream
is
=
null
;
Workbook
wb
=
null
;
List
<
UserInfo
>
userInfoList
=
null
;
try
{
is
=
file
.
getInputStream
();
Workbook
wb
;
String
xls
=
".xls"
;
String
xlsx
=
".xlsx"
;
int
columnSize
=
46
;
...
...
@@ -382,15 +382,14 @@ public class UserInfoService extends JpaBaseService<UserInfo> {
//遍历行
for
(
int
j
=
1
;
j
<
rowSize
;
j
++)
{
Row
row
=
sheet
.
getRow
(
j
);
//略过空行和
第一
行
if
(
row
==
null
||
j
<
2
)
{
//略过空行和
前3
行
if
(
row
==
null
||
j
<
3
)
{
continue
;
}
else
{
//其他行是数据行
UserInfo
userInfo
=
new
UserInfo
();
userInfo
.
setCreatedDate
(
DateUtils
.
formatDateTime
(
new
Date
()));
int
rangeType
=
-
1
;
for
(
int
k
=
0
;
k
<
columnSize
;
k
++)
{
if
(
k
==
0
)
{
// 登录账号
...
...
@@ -401,61 +400,62 @@ public class UserInfoService extends JpaBaseService<UserInfo> {
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setPassword
(
getValue
(
cell
));
}
else
if
(
k
==
2
)
{
// 员工编码
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setEmployeeNumber
(
getValue
(
cell
));
}
else
if
(
k
==
3
)
{
// 用户类型
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setUserType
(
getValue
(
cell
));
}
else
if
(
k
==
4
)
{
// 用户名
// 用户显示
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setDisplayName
(
getValue
(
cell
));
}
else
if
(
k
==
5
)
{
}
else
if
(
k
==
3
)
{
// 姓
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setFamilyName
(
getValue
(
cell
));
}
else
if
(
k
==
6
)
{
}
else
if
(
k
==
4
)
{
// 名
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setGivenName
(
getValue
(
cell
));
}
else
if
(
k
==
7
)
{
}
else
if
(
k
==
5
)
{
// 中间名
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setMiddleName
(
getValue
(
cell
));
}
else
if
(
k
==
8
)
{
}
else
if
(
k
==
6
)
{
// 昵称
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setNickName
(
getValue
(
cell
));
}
else
if
(
k
==
9
)
{
}
else
if
(
k
==
7
)
{
// 性别
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setGender
(
Integer
.
valueOf
(
getValue
(
cell
)));
}
else
if
(
k
==
10
)
{
// AD域账号
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setWindowsAccount
(
getValue
(
cell
));
}
else
if
(
k
==
11
)
{
// 出生日期
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setBirthDate
(
getValue
(
cell
));
}
else
if
(
k
==
12
)
{
String
gender
=
getValue
(
cell
);
userInfo
.
setGender
(
gender
.
equals
(
""
)?
1
:
Integer
.
valueOf
(
getValue
(
cell
)));
}
else
if
(
k
==
8
)
{
// 语言偏好
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setPreferredLanguage
(
getValue
(
cell
));
}
else
if
(
k
==
13
)
{
}
else
if
(
k
==
9
)
{
// 时区
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setTimeZone
(
getValue
(
cell
));
}
else
if
(
k
==
14
)
{
}
else
if
(
k
==
10
)
{
// 用户类型
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setUserType
(
getValue
(
cell
));
}
else
if
(
k
==
11
)
{
// 员工编码
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setEmployeeNumber
(
getValue
(
cell
));
}
else
if
(
k
==
12
)
{
// AD域账号
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setWindowsAccount
(
getValue
(
cell
));
}
else
if
(
k
==
13
)
{
// 所属机构
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setOrganization
(
getValue
(
cell
));
}
else
if
(
k
==
1
5
)
{
}
else
if
(
k
==
1
4
)
{
// 分支机构
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setDivision
(
getValue
(
cell
));
}
else
if
(
k
==
15
)
{
// 部门编号
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setDepartmentId
(
getValue
(
cell
));
}
else
if
(
k
==
16
)
{
// 部门名称
Cell
cell
=
row
.
getCell
(
k
);
...
...
@@ -528,54 +528,58 @@ public class UserInfoService extends JpaBaseService<UserInfo> {
// 证件号码
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setIdCardNo
(
getValue
(
cell
));
}
else
if
(
k
==
34
)
{
}
else
if
(
k
==
34
)
{
// 出生日期
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setBirthDate
(
getValue
(
cell
));
}
else
if
(
k
==
35
)
{
// 婚姻状态 todo 现在数据字段类型是 tinyint
// Cell cell = row.getCell(k);
// userInfo.setMarried(getValue(cell));
}
else
if
(
k
==
3
5
)
{
}
else
if
(
k
==
3
6
)
{
// 开始工作时间
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setStartWorkDate
(
getValue
(
cell
));
}
else
if
(
k
==
36
)
{
}
else
if
(
k
==
37
)
{
// 个人主页
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setWebSite
(
getValue
(
cell
));
}
else
if
(
k
==
38
)
{
// 即时通讯
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setDefineIm
(
getValue
(
cell
));
}
else
if
(
k
==
39
)
{
// 国家
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setHomeCountry
(
getValue
(
cell
));
}
else
if
(
k
==
37
)
{
}
else
if
(
k
==
40
)
{
// 省
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setHomeRegion
(
getValue
(
cell
));
}
else
if
(
k
==
38
)
{
}
else
if
(
k
==
41
)
{
// 城市
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setHomeLocality
(
getValue
(
cell
));
}
else
if
(
k
==
39
)
{
}
else
if
(
k
==
42
)
{
// 家庭地址
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setHomeStreetAddress
(
getValue
(
cell
));
}
else
if
(
k
==
4
0
)
{
}
else
if
(
k
==
4
3
)
{
// 家庭邮编
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setHomePostalCode
(
getValue
(
cell
));
}
else
if
(
k
==
4
1
)
{
}
else
if
(
k
==
4
4
)
{
// 家庭传真
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setHomeFax
(
getValue
(
cell
));
}
else
if
(
k
==
4
2
)
{
}
else
if
(
k
==
4
5
)
{
// 家庭电话
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setHomePhoneNumber
(
getValue
(
cell
));
}
else
if
(
k
==
4
3
)
{
}
else
if
(
k
==
4
6
)
{
// 家庭邮箱
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setHomeEmail
(
getValue
(
cell
));
}
else
if
(
k
==
44
)
{
// 个人主页
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setWebSite
(
getValue
(
cell
));
}
else
if
(
k
==
45
)
{
// 即时通讯
Cell
cell
=
row
.
getCell
(
k
);
userInfo
.
setDefineIm
(
getValue
(
cell
));
}
}
userInfo
.
setStatus
(
1
);
...
...
@@ -595,7 +599,13 @@ public class UserInfoService extends JpaBaseService<UserInfo> {
try
{
is
.
close
();
}
catch
(
IOException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
}
if
(
wb
!=
null
)
{
try
{
wb
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
...
...
@@ -617,7 +627,7 @@ public class UserInfoService extends JpaBaseService<UserInfo> {
}
else
if
(
cell
.
getCellType
()
==
CellType
.
BOOLEAN
)
{
return
String
.
valueOf
(
cell
.
getBooleanCellValue
());
}
else
if
(
cell
.
getCellType
()
==
CellType
.
NUMERIC
)
{
cell
.
set
CellType
(
CellType
.
STRING
);
cell
.
set
Blank
(
);
return
String
.
valueOf
(
cell
.
getStringCellValue
().
trim
());
}
else
{
return
String
.
valueOf
(
cell
.
getStringCellValue
().
trim
());
...
...
maxkey-persistence/src/test/resources/application.properties
浏览文件 @
a44022b6
...
...
@@ -24,7 +24,7 @@ spring.servlet.multipart.max-file-size=4194304
#server.servlet.encoding.force=true
#datasource
spring.datasource.username
=
root
spring.datasource.password
=
root
spring.datasource.password
=
maxkey
spring.datasource.url
=
jdbc:mysql://localhost/maxkey?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.driver-class-name
=
com.mysql.cj.jdbc.Driver
spring.datasource.type
=
com.alibaba.druid.pool.DruidDataSource
...
...
@@ -69,24 +69,24 @@ spring.messages.encoding=UTF-8
spring.main.banner-mode
=
log
spring.main.allow-bean-definition-overriding
=
true
###########
【Kafka集群】
###########
###########
\u3010Kafka\u96c6\u7fa4\u3011
###########
spring.kafka.bootstrap-servers
=
localhost:9092
###########
【初始化生产者配置】
###########
#
重试次数
###########
\u3010\u521d\u59cb\u5316\u751f\u4ea7\u8005\u914d\u7f6e\u3011
###########
#
\u91cd\u8bd5\u6b21\u6570
spring.kafka.producer.retries
=
0
#
应答级别:多少个分区副本备份完成时向生产者发送ack确认(可选0、1、
all/-1)
#
\u5e94\u7b54\u7ea7\u522b:\u591a\u5c11\u4e2a\u5206\u533a\u526f\u672c\u5907\u4efd\u5b8c\u6210\u65f6\u5411\u751f\u4ea7\u8005\u53d1\u9001ack\u786e\u8ba4(\u53ef\u90090\u30011\u3001
all/-1)
spring.kafka.producer.acks
=
1
#
批量大小
#
\u6279\u91cf\u5927\u5c0f
spring.kafka.producer.batch-size
=
16384
#
提交延时
#
\u63d0\u4ea4\u5ef6\u65f6
spring.kafka.producer.properties.linger.ms
=
0
#
当生产端积累的消息达到batch-size或接收到消息linger.ms后,生产者就会将消息提交给
kafka
# linger.ms
为0表示每接收到一条消息就提交给kafka,这时候batch-size其实就没用了
#
\u5f53\u751f\u4ea7\u7aef\u79ef\u7d2f\u7684\u6d88\u606f\u8fbe\u5230batch-size\u6216\u63a5\u6536\u5230\u6d88\u606flinger.ms\u540e,\u751f\u4ea7\u8005\u5c31\u4f1a\u5c06\u6d88\u606f\u63d0\u4ea4\u7ed9
kafka
# linger.ms
\u4e3a0\u8868\u793a\u6bcf\u63a5\u6536\u5230\u4e00\u6761\u6d88\u606f\u5c31\u63d0\u4ea4\u7ed9kafka,\u8fd9\u65f6\u5019batch-size\u5176\u5b9e\u5c31\u6ca1\u7528\u4e86
#
生产端缓冲区大小
#
\u751f\u4ea7\u7aef\u7f13\u51b2\u533a\u5927\u5c0f
spring.kafka.producer.buffer-memory
=
33554432
# Kafka
提供的序列化和反序列化类
# Kafka
\u63d0\u4f9b\u7684\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u7c7b
spring.kafka.producer.key-serializer
=
org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer
=
org.apache.kafka.common.serialization.StringSerializer
#
自定义分区器
#
\u81ea\u5b9a\u4e49\u5206\u533a\u5668
# spring.kafka.producer.properties.partitioner.class=com.felix.kafka.producer.CustomizePartitioner
maxkey-protocols/maxkey-protocol-tokenbased/src/main/java/org/maxkey/authz/token/endpoint/adapter/TokenBasedJWTAdapter.java
浏览文件 @
a44022b6
...
...
@@ -69,7 +69,7 @@ public class TokenBasedJWTAdapter extends AbstractAuthorizeAdapter {
.
claim
(
"user_id"
,
userInfo
.
getId
())
.
claim
(
"external_id"
,
userInfo
.
getId
())
.
claim
(
"locale"
,
userInfo
.
getLocale
())
.
claim
(
WebConstants
.
ONLINE_TICKET_NAME
,
authentication
.
getOnlineTicket
())
.
claim
(
WebConstants
.
ONLINE_TICKET_NAME
,
authentication
.
getOnlineTicket
()
.
getTicketId
()
)
.
claim
(
"kid"
,
jwtSignerService
.
getDefaultSignerKeyId
())
.
build
();
...
...
maxkey-protocols/maxkey-protocol-tokenbased/src/main/java/org/maxkey/authz/token/endpoint/adapter/TokenBasedJWTHS256Adapter.java
浏览文件 @
a44022b6
...
...
@@ -69,7 +69,7 @@ public class TokenBasedJWTHS256Adapter extends AbstractAuthorizeAdapter {
.
claim
(
"email"
,
userInfo
.
getWorkEmail
())
.
claim
(
"name"
,
userInfo
.
getUsername
())
.
claim
(
"user_id"
,
userInfo
.
getId
())
.
claim
(
WebConstants
.
ONLINE_TICKET_NAME
,
authentication
.
getOnlineTicket
())
.
claim
(
WebConstants
.
ONLINE_TICKET_NAME
,
authentication
.
getOnlineTicket
()
.
getTicketId
()
)
.
claim
(
"external_id"
,
userInfo
.
getId
())
.
claim
(
"locale"
,
userInfo
.
getLocale
())
.
claim
(
"kid"
,
"SYMMETRIC-KEY"
)
...
...
maxkey-web-manage/src/main/java/org/maxkey/web/contorller/OrganizationsController.java
浏览文件 @
a44022b6
...
...
@@ -21,13 +21,17 @@ import java.util.HashMap;
import
java.util.List
;
import
org.apache.mybatis.jpa.persistence.JpaPageResults
;
import
org.maxkey.constants.ConstantsOperateMessage
;
import
org.maxkey.domain.ExcelImport
;
import
org.maxkey.domain.Organizations
;
import
org.maxkey.persistence.service.OrganizationsService
;
import
org.maxkey.web.WebContext
;
import
org.maxkey.web.component.TreeNode
;
import
org.maxkey.web.component.TreeNodeList
;
import
org.maxkey.web.message.Message
;
import
org.maxkey.web.message.MessageScope
;
import
org.maxkey.web.message.MessageType
;
import
org.maxkey.web.message.OperateType
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -195,7 +199,18 @@ public class OrganizationsController {
public
ModelAndView
orgUsersList
()
{
return
new
ModelAndView
(
"orgs/orgUsersList"
);
}
@RequestMapping
(
value
=
"/import"
)
public
ModelAndView
importing
(
@ModelAttribute
(
"excelImportFile"
)
ExcelImport
excelImportFile
)
{
ModelAndView
modelAndView
=
new
ModelAndView
(
"/orgs/orgsImport"
);
if
(
excelImportFile
.
getExcelFile
()
!=
null
&&
!
excelImportFile
.
getExcelFile
().
isEmpty
()
&&
organizationsService
.
importing
(
excelImportFile
.
getExcelFile
()))
{
new
Message
(
WebContext
.
getI18nValue
(
ConstantsOperateMessage
.
INSERT_SUCCESS
),
null
,
MessageType
.
success
,
OperateType
.
add
,
MessageScope
.
DB
);
}
else
{
new
Message
(
WebContext
.
getI18nValue
(
ConstantsOperateMessage
.
INSERT_ERROR
),
MessageType
.
error
);
}
return
modelAndView
;
}
...
...
maxkey-web-manage/src/main/java/org/maxkey/web/contorller/UserInfoController.java
浏览文件 @
a44022b6
...
...
@@ -272,18 +272,6 @@ public class UserInfoController {
}
}
@ResponseBody
@RequestMapping
(
value
=
"/changeUserinfoStatus"
)
public
Message
changeUserinfoStatus
(
@ModelAttribute
(
"userInfo"
)
UserInfo
userInfo
)
{
_logger
.
debug
(
userInfo
.
getId
());
if
(
userInfoService
.
update
(
userInfo
))
{
return
new
Message
(
WebContext
.
getI18nValue
(
ConstantsOperateMessage
.
UPDATE_SUCCESS
),
MessageType
.
success
);
}
else
{
return
new
Message
(
WebContext
.
getI18nValue
(
ConstantsOperateMessage
.
UPDATE_ERROR
),
MessageType
.
error
);
}
}
@RequestMapping
(
value
=
"/import"
)
public
ModelAndView
importing
(
@ModelAttribute
(
"excelImportFile"
)
ExcelImport
excelImportFile
)
{
ModelAndView
modelAndView
=
new
ModelAndView
(
"/userinfo/usersImport"
);
...
...
maxkey-web-manage/src/main/resources/messages/message.properties
浏览文件 @
a44022b6
...
...
@@ -50,6 +50,8 @@ common.text.status.invalid=\u65e0\u6548
common.text.status.expired
=
\u
8fc7
\u
671f
common.text.status.delete
=
\u5220\u9664
common.text.description
=
\u
63cf
\u
8ff0
common.text.yes
=
\u
662f
common.text.no
=
\u5426
main.rpt.newuser
=
\u
5f53
\u6708\u
65b0
\u7528\u6237
main.rpt.activeuser
=
\u
672c
\u6708\u
6d3b
\u
8dc3
\u7528\u6237
...
...
@@ -447,6 +449,7 @@ button.text.delete.member=\u5220\u9664\u6210\u5458
button.text.generate
=
\u
751f
\u6210
button.text.view
=
\u
67e5
\u
770b
button.text.hidden
=
\u9690\u
85cf
button.text.import
=
\u
5bfc
\u5165
log.loginhistory.id
=
\u
7f16
\u
53f7
log.loginhistory.sessionId
=
\u
4f1a
\u
8bdd
...
...
@@ -487,6 +490,14 @@ message.action.update.success=\u66f4\u65b0\u64cd\u4f5c\u6210\u529f
message.action.update.error
=
\u
66f4
\u
65b0
\u
64cd
\u
4f5c
\u5931\u
8d25
message.action.delete.success
=
\u5220\u9664\u
64cd
\u
4f5c
\u6210\u
529f
message.action.delete.error
=
\u5220\u9664\u
64cd
\u
4f5c
\u5931\u
8d25
message.action.import.success
=
\u6279\u
91cf
\u
5bfc
\u5165\u6210\u
529f
message.action.import.error
=
\u6279\u
91cf
\u
5bfc
\u5165\u5931\u
8d25
import.title
=
\u6279\u
91cf
\u
5bfc
\u5165\u6570\u
636e
import.file.select
=
\u9009\u
62e9
\u
5bfc
\u5165\u6587\u
4ef6
import.template.download
=
\u
4e0b
\u
8f7d
\u
6a21
\u
677f
import.update.exist
=
\u
66f4
\u
65b0
\u
5b58
\u5728\u6570\u
636e
import.tip
=
\u
63d0
\u
793a
\u
ff1a
\u
4ec5
\u5141\u
8bb8
\u
5bfc
\u5165\u
201cxls
\u
201d
\u6216\u8005\u
201cxlsx
\u
201d
\u
683c
\u
5f0f
\u7684\u6587\u
4ef6
navs.system
=
\u
7cfb
\u
7edf
navs.home
=
\u9996\u9875
...
...
maxkey-web-manage/src/main/resources/messages/message_en.properties
浏览文件 @
a44022b6
...
...
@@ -50,6 +50,8 @@ common.text.status.invalid=invalid
common.text.status.expired
=
expired
common.text.status.delete
=
delete
common.text.description
=
description
common.text.yes
=
yes
common.text.no
=
no
main.rpt.newuser
=
New Users/Month
...
...
@@ -441,11 +443,12 @@ button.text.search=Search
button.text.expandsearch
=
Expand
button.text.collapsesearch
=
Collapse
button.text.cancel
=
Cancel
button.text.add.member
=
D
dd member
button.text.add.member
=
A
dd member
button.text.delete.member
=
Delete member
button.text.generate
=
Generate
button.text.view
=
View
button.text.hidden
=
Hidden
button.text.import
=
Import
log.loginhistory.id
=
id
...
...
@@ -487,6 +490,15 @@ message.action.update.success=Update Success
message.action.update.error
=
Update Error
message.action.delete.success
=
Delete Success
message.action.delete.error
=
Delete Error
message.action.import.success
=
Import Success
message.action.import.error
=
Import Error
import.title
=
Batch Import Data
import.file.select
=
Import File
import.template.download
=
Download Template
import.update.exist
=
Update Exist Data
import.tip
=
Tip
\u
ff1aolny Import
\u
201cxls
\u
201d or
\u
201cxlsx
\u
201d file
\u3002
navs.system
=
System
navs.home
=
Home
...
...
maxkey-web-manage/src/main/resources/messages/message_zh_CN.properties
浏览文件 @
a44022b6
...
...
@@ -50,6 +50,8 @@ common.text.status.invalid=\u65e0\u6548
common.text.status.expired
=
\u
8fc7
\u
671f
common.text.status.delete
=
\u5220\u9664
common.text.description
=
\u
63cf
\u
8ff0
common.text.yes
=
\u
662f
common.text.no
=
\u5426
main.rpt.newuser
=
\u
5f53
\u6708\u
65b0
\u7528\u6237
main.rpt.activeuser
=
\u
672c
\u6708\u
6d3b
\u
8dc3
\u7528\u6237
...
...
@@ -447,6 +449,7 @@ button.text.delete.member=\u5220\u9664\u6210\u5458
button.text.generate
=
\u
751f
\u6210
button.text.view
=
\u
67e5
\u
770b
button.text.hidden
=
\u9690\u
85cf
button.text.import
=
\u
5bfc
\u5165
log.loginhistory.id
=
\u
7f16
\u
53f7
log.loginhistory.sessionId
=
\u
4f1a
\u
8bdd
...
...
@@ -487,6 +490,14 @@ message.action.update.success=\u66f4\u65b0\u64cd\u4f5c\u6210\u529f
message.action.update.error
=
\u
66f4
\u
65b0
\u
64cd
\u
4f5c
\u5931\u
8d25
message.action.delete.success
=
\u5220\u9664\u
64cd
\u
4f5c
\u6210\u
529f
message.action.delete.error
=
\u5220\u9664\u
64cd
\u
4f5c
\u5931\u
8d25
message.action.import.success
=
\u6279\u
91cf
\u
5bfc
\u5165\u6210\u
529f
message.action.import.error
=
\u6279\u
91cf
\u
5bfc
\u5165\u5931\u
8d25
import.title
=
\u6279\u
91cf
\u
5bfc
\u5165\u6570\u
636e
import.file.select
=
\u9009\u
62e9
\u
5bfc
\u5165\u6587\u
4ef6
import.template.download
=
\u
4e0b
\u
8f7d
\u
6a21
\u
677f
import.update.exist
=
\u
66f4
\u
65b0
\u
5b58
\u5728\u6570\u
636e
import.tip
=
\u
63d0
\u
793a
\u
ff1a
\u
4ec5
\u5141\u
8bb8
\u
5bfc
\u5165\u
201cxls
\u
201d
\u6216\u8005\u
201cxlsx
\u
201d
\u
683c
\u
5f0f
\u7684\u6587\u
4ef6
navs.system
=
\u
7cfb
\u
7edf
navs.home
=
\u9996\u9875
...
...
maxkey-web-manage/src/main/resources/static/template/excel/Orgs_Import_Template.xlsx
0 → 100644
浏览文件 @
a44022b6
文件已添加
maxkey-web-manage/src/main/resources/static/template/excel/Users_Import_Template.xlsx
0 → 100644
浏览文件 @
a44022b6
文件已添加
maxkey-web-manage/src/main/resources/templates/views/
userinfo/changeUserinfoStatus
.ftl
→
maxkey-web-manage/src/main/resources/templates/views/
orgs/orgsImport
.ftl
浏览文件 @
a44022b6
...
...
@@ -20,40 +20,43 @@
</head>
<body>
<form
id=
"actionForm"
method=
"post"
type=
"label"
autoclose=
"true"
action=
"<@base/>/userinfo/changeUserinfoStatus"
class=
"needs-validation"
novalidate
>
<form
enctype=
"multipart/form-data"
method=
"post"
type=
"label"
autoclose=
"true"
action=
"<@base/>/orgs/import"
class=
"needs-validation"
novalidate
>
<table
class=
"table table-bordered"
>
<tbody>
<tr>
<th
><
@
locale
code=
"userinfo.displayName"
/>
:
</th>
<th
nowrap=
"nowrap"
><
@
locale
code=
"import.file.select"
/>
</th>
<td>
<input
readonly
type=
"hidden"
id=
"id"
name=
"id"
class=
"required"
title=
""
value=
"${model.id}"
/>
<input
readonly
type=
"text"
id=
"displayName"
name=
"displayName"
class=
"form-control"
title=
""
value=
"${model.displayName}"
/>
<input
class=
"form-control"
type=
"file"
id=
"excelFile"
name=
"excelFile"
/>
</td>
</tr>
<tr>
<th><
@
locale
code=
"userinfo.username"
/>
:
</th>
<td>
<input
readonly
type=
"text"
id=
"username"
name=
"username"
class=
"form-control"
title=
""
value=
"${model.username}"
/>
<td
colspan=
"2"
>
<a
href=
"<@base/>/static/template/excel/Users_Import_Template.xlsx"
><
@
locale
code=
"import.template.download"
/></>
</td>
</tr>
<tr>
<th><
@
locale
code=
"
userinfo.status"
/>
:
</th>
<th><
@
locale
code=
"
import.update.exist"
/>
</th>
<td>
<select
name=
"status"
id=
"status"
class=
"form-control"
>
<option
value=
"1"
<
#if
1==
model.status
>
selected
</
#
if>
>
<
@
locale
code=
"userinfo.status.active"
/></option>
<option
value=
"2"
<
#if
2==
model.status
>
selected
</
#
if>
>
<
@
locale
code=
"userinfo.status.withdrawn"
/></option>
<option
value=
"3"
<
#if
3==
model.status
>
selected
</
#
if>
>
<
@
locale
code=
"userinfo.status.inactive"
/></option>
<option
value=
"4"
<
#if
4==
model.status
>
selected
</
#
if>
>
<
@
locale
code=
"userinfo.status.retiree"
/></option>
</select>
<select
name=
"updateExist"
id=
"updateExist"
class=
"form-control"
>
<option
value=
"no"
selected
>
<
@
locale
code=
"common.text.no"
/></option>
<option
value=
"yes"
>
<
@
locale
code=
"common.text.yes"
/>
</option>
</select>
</td>
</tr>
<tr>
<th
colspan=
"2"
style=
"color: red;"
>
<
@
locale
code=
"import.tip"
/>
</th>
</tr>
<tr>
<td
colspan=
"2"
class=
"center"
>
<input
id=
"_method"
type=
"hidden"
name=
"_method"
value=
"post"
/>
<input
class=
"button btn btn-primary mr-3"
style=
"width:100px"
type=
"submit"
id=
"submitBtn"
value=
"<@locale code="
button.text.save
"
/>
"/>
<input
class=
"button btn btn-primary mr-3"
style=
"width:100px"
type=
"submit"
id=
"submitBtn"
value=
"<@locale code="
button.text.import
"
/>
"/>
<input
class=
"button btn btn-primary mr-3"
style=
"width:100px"
type=
"button"
id=
"closeBtn"
value=
"<@locale code="
common.alert.closeText
"
/>
"/>
</td>
</tr>
...
...
maxkey-web-manage/src/main/resources/templates/views/orgs/orgsList.ftl
浏览文件 @
a44022b6
...
...
@@ -183,7 +183,11 @@ $(function () {
</form>
</td>
<td
colspan=
"2"
>
<div
id=
"tool_box_right"
>
<div
id=
"tool_box_right"
>
<input
class=
"button btn btn-success mr-3 window"
id=
"usersImportBtn"
type=
"button"
value=
"<@locale code="
button.text.import
"
/>
"
wurl="
<
@
base
/>
/orgs/import" wwidth="400px" wheight="250px" />
<input
class=
"button btn btn-success mr-3"
id=
"addBtn"
type=
"button"
value=
"<@locale code="
button.text.add
"
/>
"
wurl="
<
@
base
/>
/orgs/forwardAdd"
wwidth="620"
...
...
maxkey-web-manage/src/main/resources/templates/views/userinfo/userUpdate.ftl
浏览文件 @
a44022b6
...
...
@@ -50,9 +50,14 @@
<input
type=
"hidden"
id=
"id"
name=
"id"
value=
"${model.id!"
"}"
/>
<input
class=
"form-control"
type=
"text"
id=
"username"
name=
"username"
title=
""
value=
"${model.username!"
"}"
/>
</td>
<td
style=
"width:15%;"
><
@
locale
code=
"
login.text.password
"
/>
:
</td>
<td
style=
"width:15%;"
><
@
locale
code=
"
userinfo.status
"
/>
:
</td>
<td
style=
"width:35%;"
>
<input
class=
"form-control"
type=
"password"
id=
"password"
name=
"password"
title=
""
value=
""
/>
<select
name=
"status"
id=
"status"
class=
"form-control"
>
<option
value=
"1"
<
#if
1==
model.status
>
selected
</
#
if>
>
<
@
locale
code=
"userinfo.status.active"
/></option>
<option
value=
"2"
<
#if
2==
model.status
>
selected
</
#
if>
>
<
@
locale
code=
"userinfo.status.withdrawn"
/></option>
<option
value=
"3"
<
#if
3==
model.status
>
selected
</
#
if>
>
<
@
locale
code=
"userinfo.status.inactive"
/></option>
<option
value=
"4"
<
#if
4==
model.status
>
selected
</
#
if>
>
<
@
locale
code=
"userinfo.status.retiree"
/></option>
</select>
</td>
</tr>
<tr>
...
...
maxkey-web-manage/src/main/resources/templates/views/userinfo/usersImport.ftl
浏览文件 @
a44022b6
...
...
@@ -28,16 +28,35 @@
<table
class=
"table table-bordered"
>
<tbody>
<tr>
<th
><
@
locale
code=
"userinfo.displayName"
/>
:
</th>
<th
nowrap=
"nowrap"
><
@
locale
code=
"import.file.select"
/>
</th>
<td>
<input
class=
"form-control"
type=
"file"
id=
"excelFile"
name=
"excelFile"
/>
</td>
</tr>
<tr>
<td
colspan=
"2"
>
<a
href=
"<@base/>/static/template/excel/Users_Import_Template.xlsx"
><
@
locale
code=
"import.template.download"
/></>
</td>
</tr>
<tr>
<th><
@
locale
code=
"import.update.exist"
/>
</th>
<td>
<select
name=
"updateExist"
id=
"updateExist"
class=
"form-control"
>
<option
value=
"no"
selected
>
<
@
locale
code=
"common.text.no"
/></option>
<option
value=
"yes"
>
<
@
locale
code=
"common.text.yes"
/>
</option>
</select>
</td>
</tr>
<tr>
<th
colspan=
"2"
style=
"color: red;"
>
<
@
locale
code=
"import.tip"
/>
</th>
</tr>
<tr>
<td
colspan=
"2"
class=
"center"
>
<input
id=
"_method"
type=
"hidden"
name=
"_method"
value=
"post"
/>
<input
class=
"button btn btn-primary mr-3"
style=
"width:100px"
type=
"submit"
id=
"submitBtn"
value=
"<@locale code="
button.text.save
"
/>
"/>
<input
class=
"button btn btn-primary mr-3"
style=
"width:100px"
type=
"submit"
id=
"submitBtn"
value=
"<@locale code="
button.text.import
"
/>
"/>
<input
class=
"button btn btn-primary mr-3"
style=
"width:100px"
type=
"button"
id=
"closeBtn"
value=
"<@locale code="
common.alert.closeText
"
/>
"/>
</td>
</tr>
...
...
maxkey-web-manage/src/main/resources/templates/views/userinfo/usersList.ftl
浏览文件 @
a44022b6
...
...
@@ -201,12 +201,12 @@ $(function () {
<td
colspan=
"2"
>
<div
id=
"tool_box_right"
>
<input
class=
"button btn btn-warning mr-3"
id=
"changepwdBtn"
type=
"button"
value=
"<@locale code="
login.password.changepassword
"
/>
" />
<input
class=
"button btn btn-warning mr-3 window"
id=
"changepwdBtnHidden"
type=
"
butto
n"
<input
class=
"button btn btn-warning mr-3 window"
id=
"changepwdBtnHidden"
type=
"
hidde
n"
value=
"<@locale code="
login.password.changepassword
"
/>
"
wurl="
<
@
base
/>
/userinfo/forwardChangePassword" wwidth="600px" wheight="250px" />
<input
class=
"button btn btn-
warning
mr-3 window"
id=
"usersImportBtn"
type=
"button"
value=
"<@locale code="
I
mport
"
/>
"
<input
class=
"button btn btn-
success
mr-3 window"
id=
"usersImportBtn"
type=
"button"
value=
"<@locale code="
button.text.i
mport
"
/>
"
wurl="
<
@
base
/>
/userinfo/import" wwidth="400px" wheight="250px" />
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录