Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
aserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
15所TongWeb
aserver
Commits
36ae69dc
Commit
36ae69dc
authored
Apr 08, 2021
by
胡文斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
使用公共包方法
parent
ea7930fa
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
859 additions
and
1028 deletions
+859
-1028
pom.xml
pom.xml
+5
-0
MainConfig.java
...in/java/com/archser/aserver/common/config/MainConfig.java
+7
-9
HelperController.java
...java/com/archser/aserver/controller/HelperController.java
+167
-173
IndexController.java
.../java/com/archser/aserver/controller/IndexController.java
+540
-538
MenuController.java
...n/java/com/archser/aserver/controller/MenuController.java
+3
-3
MessageController.java
...ava/com/archser/aserver/controller/MessageController.java
+128
-127
GoodSync.java
src/main/java/com/archser/aserver/itask/GoodSync.java
+9
-9
InfoOrgan.java
src/main/java/com/archser/aserver/util/redis/InfoOrgan.java
+0
-40
InfoSystem.java
src/main/java/com/archser/aserver/util/redis/InfoSystem.java
+0
-82
InfoUser.java
src/main/java/com/archser/aserver/util/redis/InfoUser.java
+0
-47
No files found.
pom.xml
View file @
36ae69dc
...
@@ -126,6 +126,11 @@
...
@@ -126,6 +126,11 @@
<artifactId>
jfinal
</artifactId>
<artifactId>
jfinal
</artifactId>
<version>
${jfinal.version}
</version>
<version>
${jfinal.version}
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.archser
</groupId>
<artifactId>
archser-commons
</artifactId>
<version>
1.2.2
</version>
</dependency>
<!-- 东方通依赖 -->
<!-- 东方通依赖 -->
<!-- <dependency>
<!-- <dependency>
<groupId>io.swagger</groupId>
<groupId>io.swagger</groupId>
...
...
src/main/java/com/archser/aserver/common/config/MainConfig.java
View file @
36ae69dc
package
com
.
archser
.
aserver
.
common
.
config
;
package
com
.
archser
.
aserver
.
common
.
config
;
import
com.alibaba.druid.filter.logging.Log4jFilter
;
import
com.alibaba.druid.filter.logging.LogFilter
;
import
com.alibaba.druid.filter.stat.StatFilter
;
import
com.alibaba.druid.filter.stat.StatFilter
;
import
com.archser.aserver.common.config.plugins.DBUpgrade
;
import
com.archser.aserver.common.config.plugins.DBUpgrade
;
import
com.archser.aserver.common.config.plugins.RedisConfig
;
import
com.archser.aserver.controller.*
;
import
com.archser.aserver.controller.*
;
import
com.archser.aserver.interceptor.JwtInterceptor
;
import
com.archser.aserver.interceptor.JwtInterceptor
;
import
com.archser.aserver.itask.GoodSync
;
import
com.archser.aserver.model._MappingKit
;
import
com.archser.aserver.model._MappingKit
;
import
com.archser.aserver.util.SharedDisk
;
import
com.archser.aserver.util.SharedDisk
;
import
com.archser.aserver.websocket.MessageWebSocket
;
import
com.archser.aserver.websocket.MessageWebSocket
;
import
com.archser.commons.AppStartConfig
;
import
com.archser.plugin.redis.RedisConfig
;
import
com.jfinal.config.*
;
import
com.jfinal.config.*
;
import
com.jfinal.ext.handler.RequestHandler
;
import
com.jfinal.ext.handler.RequestHandler
;
import
com.jfinal.ext.handler.UrlSkipHandler
;
import
com.jfinal.ext.handler.UrlSkipHandler
;
import
com.jfinal.ext.proxy.CglibProxyFactory
;
import
com.jfinal.ext.proxy.CglibProxyFactory
;
import
com.jfinal.json.MixedJsonFactory
;
import
com.jfinal.json.MixedJsonFactory
;
import
com.jfinal.kit.Kv
;
import
com.jfinal.kit.PathKit
;
import
com.jfinal.kit.PathKit
;
import
com.jfinal.kit.Prop
;
import
com.jfinal.kit.Prop
;
import
com.jfinal.kit.PropKit
;
import
com.jfinal.kit.PropKit
;
import
com.jfinal.plugin.activerecord.ActiveRecordPlugin
;
import
com.jfinal.plugin.activerecord.ActiveRecordPlugin
;
import
com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory
;
import
com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory
;
import
com.jfinal.plugin.activerecord.Db
;
import
com.jfinal.plugin.activerecord.dialect.DialectFactory
;
import
com.jfinal.plugin.activerecord.Record
;
import
com.jfinal.plugin.activerecord.dialect.*
;
import
com.jfinal.plugin.cron4j.Cron4jPlugin
;
import
com.jfinal.plugin.cron4j.Cron4jPlugin
;
import
com.jfinal.plugin.druid.DruidPlugin
;
import
com.jfinal.plugin.druid.DruidPlugin
;
import
com.jfinal.plugin.druid.RecordSqlFilter
;
import
com.jfinal.plugin.druid.RecordSqlFilter
;
...
@@ -32,6 +27,7 @@ import com.jfinal.render.ViewType;
...
@@ -32,6 +27,7 @@ import com.jfinal.render.ViewType;
import
com.jfinal.server.undertow.UndertowServer
;
import
com.jfinal.server.undertow.UndertowServer
;
import
com.jfinal.server.undertow.WebBuilder
;
import
com.jfinal.server.undertow.WebBuilder
;
import
com.jfinal.template.Engine
;
import
com.jfinal.template.Engine
;
import
java.io.File
;
import
java.io.File
;
public
class
MainConfig
extends
JFinalConfig
{
public
class
MainConfig
extends
JFinalConfig
{
...
@@ -181,12 +177,13 @@ public class MainConfig extends JFinalConfig {
...
@@ -181,12 +177,13 @@ public class MainConfig extends JFinalConfig {
/******** 在此添加数据库 表-Model 映射 *********/
/******** 在此添加数据库 表-Model 映射 *********/
// 如果使用了JFinal Model 生成器 生成了BaseModel 把下面注释解开即可
// 如果使用了JFinal Model 生成器 生成了BaseModel 把下面注释解开即可
_MappingKit
.
mapping
(
arp
);
_MappingKit
.
mapping
(
arp
);
AppStartConfig
.
configActiveRecordPlugin
(
arp
);
// 添加到插件列表中
// 添加到插件列表中
me
.
add
(
dbPlugin
);
me
.
add
(
dbPlugin
);
me
.
add
(
arp
);
me
.
add
(
arp
);
// 配置Redis信息,自动判断单实例和集群并加入JFinal插件列表
// 配置Redis信息,自动判断单实例和集群并加入JFinal插件列表
new
RedisConfig
(
me
,
p
);
new
RedisConfig
(
me
);
// 添加定时任务
// 添加定时任务
me
.
add
(
new
Cron4jPlugin
(
PropKit
.
append
(
"task.properties"
)));
me
.
add
(
new
Cron4jPlugin
(
PropKit
.
append
(
"task.properties"
)));
...
@@ -222,6 +219,7 @@ public class MainConfig extends JFinalConfig {
...
@@ -222,6 +219,7 @@ public class MainConfig extends JFinalConfig {
*/
*/
@Override
@Override
public
void
onStart
()
{
public
void
onStart
()
{
AppStartConfig
.
onStart
(
"aserver"
);
// new GoodSync().run();
// new GoodSync().run();
}
}
...
...
src/main/java/com/archser/aserver/controller/HelperController.java
View file @
36ae69dc
package
com
.
archser
.
aserver
.
controller
;
package
com
.
archser
.
aserver
.
controller
;
import
com.archser.aserver.util.FinalStringUtil
;
import
com.archser.aserver.model.Helper
;
import
java.io.File
;
import
com.archser.aserver.service.HelperService
;
import
java.net.URLEncoder
;
import
com.archser.aserver.util.DownLoadFileUtil
;
import
javax.servlet.http.HttpServletRequest
;
import
com.archser.aserver.util.FinalStringUtil
;
import
com.archser.aserver.interceptor.JwtInterceptor
;
import
com.archser.commons.services.LogService
;
import
com.archser.aserver.model.Helper
;
import
com.jfinal.aop.Inject
;
import
com.archser.aserver.model.Menu
;
import
com.jfinal.core.Controller
;
import
com.archser.aserver.service.HelperService
;
import
com.jfinal.kit.Kv
;
import
com.archser.aserver.service.LogService
;
import
com.jfinal.kit.Ret
;
import
com.archser.aserver.util.DownLoadFileUtil
;
import
com.jfinal.plugin.activerecord.Page
;
import
com.jfinal.aop.Inject
;
import
com.jfinal.upload.UploadFile
;
import
com.jfinal.core.Controller
;
import
com.jfinal.kit.Kv
;
import
java.net.URLEncoder
;
import
com.jfinal.kit.Ret
;
import
com.jfinal.plugin.activerecord.Db
;
/**
import
com.jfinal.plugin.activerecord.Page
;
* 帮助中心
import
com.jfinal.plugin.activerecord.Record
;
*/
import
com.jfinal.upload.UploadFile
;
public
class
HelperController
extends
Controller
{
import
dm.jdbc.a.d
;
@Inject
/**
private
HelperService
helperService
;
* 帮助中心
*/
@Inject
public
class
HelperController
extends
Controller
{
private
LogService
logService
;
@Inject
public
void
getList
(){
private
HelperService
helperService
;
String
username
=
getAttr
(
"username"
);
try
{
@Inject
Integer
pageNumber
=
getParaToInt
(
"pageNumber"
,
1
);
private
LogService
logService
;
Integer
pageSize
=
getParaToInt
(
"pageSize"
,
20
);
String
searchText
=
getPara
(
"searchText"
,
""
);
public
void
getList
(){
Page
<
Helper
>
list
=
helperService
.
getList
(
pageNumber
,
pageSize
,
searchText
);
String
username
=
getAttr
(
"username"
);
renderJson
(
Ret
.
ok
(
"list"
,
list
));
try
{
logService
.
saveAsLog
(
"access"
,
"应用管理-帮助中心-帮助中心"
,
FinalStringUtil
.
QUERY
);
Integer
pageNumber
=
getParaToInt
(
"pageNumber"
,
1
);
}
catch
(
Exception
e
)
{
Integer
pageSize
=
getParaToInt
(
"pageSize"
,
20
);
e
.
printStackTrace
();
String
searchText
=
getPara
(
"searchText"
,
""
);
logService
.
saveAsLogByFile
(
"error"
,
"应用管理-帮助中心-获取帮助中心数据错误"
,
null
,
e
.
getMessage
(),
FinalStringUtil
.
QUERY
);
Page
<
Helper
>
list
=
helperService
.
getList
(
pageNumber
,
pageSize
,
searchText
);
renderJson
(
Ret
.
fail
(
"message"
,
"服务器出现异常,请联系管理员!"
));
renderJson
(
Ret
.
ok
(
"list"
,
list
));
}
logService
.
saveAsLog
(
"access"
,
"应用管理-帮助中心-帮助中心"
,
FinalStringUtil
.
QUERY
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
public
void
add
(){
logService
.
saveAsLogByFile
(
"error"
,
"应用管理-帮助中心-获取帮助中心数据错误"
,
null
,
e
.
getMessage
(),
FinalStringUtil
.
QUERY
);
String
username
=
getAttr
(
"username"
);
renderJson
(
Ret
.
fail
(
"message"
,
"服务器出现异常,请联系管理员!"
));
try
{
}
UploadFile
file
=
getFile
(
"file"
);
}
String
name
=
getPara
(
"name"
);
String
description
=
getPara
(
"description"
);
public
void
add
(){
Integer
type
=
getParaToInt
(
"type"
);
String
username
=
getAttr
(
"username"
);
if
(
helperService
.
add
(
file
,
name
,
description
,
type
)){
try
{
logService
.
saveAsLog
(
"operate"
,
"应用管理-帮助中心-添加帮助中心数据成功"
,
FinalStringUtil
.
ADD
);
UploadFile
file
=
getFile
(
"file"
);
renderJson
(
Ret
.
ok
(
"data"
,
"添加成功!"
));
String
name
=
getPara
(
"name"
);
return
;
String
description
=
getPara
(
"description"
);
}
Integer
type
=
getParaToInt
(
"type"
);
logService
.
saveAsLog
(
"operate"
,
"应用管理-帮助中心-添加帮助中心数据失败"
,
FinalStringUtil
.
ADD
);
if
(
helperService
.
add
(
file
,
name
,
description
,
type
)){
renderJson
(
Ret
.
ok
(
"data"
,
"添加失败!"
));
logService
.
saveAsLog
(
"operate"
,
"应用管理-帮助中心-添加帮助中心数据成功"
,
FinalStringUtil
.
ADD
);
}
catch
(
Exception
e
)
{
renderJson
(
Ret
.
ok
(
"data"
,
"添加成功!"
));
e
.
printStackTrace
();
return
;
logService
.
saveAsLogByFile
(
"error"
,
"应用管理-帮助中心-添加帮助中心数据错误"
,
null
,
e
.
getMessage
(),
FinalStringUtil
.
ADD
);
}
renderJson
(
Ret
.
fail
(
"msg"
,
"服务器出现异常,请联系管理员!"
));
logService
.
saveAsLog
(
"operate"
,
"应用管理-帮助中心-添加帮助中心数据失败"
,
FinalStringUtil
.
ADD
);
}
renderJson
(
Ret
.
ok
(
"data"
,
"添加失败!"
));
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
public
void
edit
(){
logService
.
saveAsLogByFile
(
"error"
,
"应用管理-帮助中心-添加帮助中心数据错误"
,
null
,
e
.
getMessage
(),
FinalStringUtil
.
ADD
);
String
username
=
getAttr
(
"username"
);
renderJson
(
Ret
.
fail
(
"msg"
,
"服务器出现异常,请联系管理员!"
));
try
{
}
Integer
id
=
getParaToInt
(
"id"
);
}
String
name
=
getPara
(
"name"
);
String
description
=
getPara
(
"description"
);
public
void
edit
(){
Integer
type
=
getParaToInt
(
"type"
);
String
username
=
getAttr
(
"username"
);
if
(
helperService
.
edit
(
id
,
name
,
description
,
type
)){
try
{
logService
.
saveAsLog
(
"operate"
,
"应用管理-帮助中心-修改帮助中心数据成功"
,
FinalStringUtil
.
UPDATE
);
Integer
id
=
getParaToInt
(
"id"
);
renderJson
(
Ret
.
ok
(
"msg"
,
"修改成功"
));
String
name
=
getPara
(
"name"
);
}
else
{
String
description
=
getPara
(
"description"
);
logService
.
saveAsLog
(
"operate"
,
"应用管理-帮助中心-修改帮助中心数据失败"
,
FinalStringUtil
.
UPDATE
);
Integer
type
=
getParaToInt
(
"type"
);
renderJson
(
Ret
.
fail
(
"msg"
,
"修改失败!"
));
if
(
helperService
.
edit
(
id
,
name
,
description
,
type
)){
}
logService
.
saveAsLog
(
"operate"
,
"应用管理-帮助中心-修改帮助中心数据成功"
,
FinalStringUtil
.
UPDATE
);
}
catch
(
Exception
e
)
{
renderJson
(
Ret
.
ok
(
"msg"
,
"修改成功"
));
e
.
printStackTrace
();
}
else
{
logService
.
saveAsLogByFile
(
"error"
,
"应用管理-帮助中心-修改帮助中心数据错误"
,
null
,
e
.
getMessage
(),
FinalStringUtil
.
UPDATE
);
logService
.
saveAsLog
(
"operate"
,
"应用管理-帮助中心-修改帮助中心数据失败"
,
FinalStringUtil
.
UPDATE
);
renderJson
(
Ret
.
fail
(
"msg"
,
"服务器出现异常,请联系管理员!"
));
renderJson
(
Ret
.
fail
(
"msg"
,
"修改失败!"
));
}
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
public
void
remove
(){
logService
.
saveAsLogByFile
(
"error"
,
"应用管理-帮助中心-修改帮助中心数据错误"
,
null
,
e
.
getMessage
(),
FinalStringUtil
.
UPDATE
);
String
username
=
getAttr
(
"username"
);
renderJson
(
Ret
.
fail
(
"msg"
,
"服务器出现异常,请联系管理员!"
));
try
{
}
String
ids
=
getPara
(
"ids"
);
}
if
(
helperService
.
remove
(
ids
)){
logService
.
saveAsLog
(
"operate"
,
"应用管理-帮助中心-删除帮助中心数据成功"
,
FinalStringUtil
.
DELETE
);
public
void
remove
(){
renderJson
(
Ret
.
ok
(
"msg"
,
"删除成功!"
));
String
username
=
getAttr
(
"username"
);
}
else
{
try
{
logService
.
saveAsLog
(
"operate"
,
"应用管理-帮助中心-删除帮助中心数据失败"
,
FinalStringUtil
.
DELETE
);
String
ids
=
getPara
(
"ids"
);
renderJson
(
Ret
.
fail
(
"msg"
,
"删除失败!"
));
if
(
helperService
.
remove
(
ids
)){
}
logService
.
saveAsLog
(
"operate"
,
"应用管理-帮助中心-删除帮助中心数据成功"
,
FinalStringUtil
.
DELETE
);
}
catch
(
Exception
e
)
{
renderJson
(
Ret
.
ok
(
"msg"
,
"删除成功!"
));
e
.
printStackTrace
();
}
else
{
logService
.
saveAsLogByFile
(
"error"
,
"应用管理-帮助中心-删除帮助中心数据错误"
,
null
,
e
.
getMessage
(),
FinalStringUtil
.
DELETE
);
logService
.
saveAsLog
(
"operate"
,
"应用管理-帮助中心-删除帮助中心数据失败"
,
FinalStringUtil
.
DELETE
);
renderJson
(
Ret
.
fail
(
"msg"
,
"服务器出现异常,请联系管理员!"
));
renderJson
(
Ret
.
fail
(
"msg"
,
"删除失败!"
));
}
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
/**
logService
.
saveAsLogByFile
(
"error"
,
"应用管理-帮助中心-删除帮助中心数据错误"
,
null
,
e
.
getMessage
(),
FinalStringUtil
.
DELETE
);
* LiuKexin 20201120 下载操作手册
renderJson
(
Ret
.
fail
(
"msg"
,
"服务器出现异常,请联系管理员!"
));
*/
}
public
void
downloadOperation
()
{
}
try
{
Integer
id
=
getParaToInt
(
"id"
);
/**
//文件是否存在
* LiuKexin 20201120 下载操作手册
Ret
downloadOperation
=
helperService
.
downloadOperation
(
id
,
getResponse
());
*/
if
(
downloadOperation
.
isOk
())
{
public
void
downloadOperation
()
{
Kv
pathKv
=
(
Kv
)
downloadOperation
.
get
(
"msg"
);
try
{
/**LiuKexin 20210122 处理文件名 start */
Integer
id
=
getParaToInt
(
"id"
);
String
userAgent
=
getRequest
().
getHeader
(
"user-agent"
).
toLowerCase
();
//文件是否存在
String
fileName
=
pathKv
.
getStr
(
"name"
);
Ret
downloadOperation
=
helperService
.
downloadOperation
(
id
,
getResponse
());
if
(
userAgent
.
contains
(
"msie"
)
||
userAgent
.
contains
(
"like gecko"
)
)
{
if
(
downloadOperation
.
isOk
())
{
// win10 ie edge 浏览器 和其他系统的ie
Kv
pathKv
=
(
Kv
)
downloadOperation
.
get
(
"msg"
);
fileName
=
URLEncoder
.
encode
(
fileName
,
"UTF-8"
);
/**LiuKexin 20210122 处理文件名 start */
}
else
{
String
userAgent
=
getRequest
().
getHeader
(
"user-agent"
).
toLowerCase
();
// 非ie
String
fileName
=
pathKv
.
getStr
(
"name"
);
fileName
=
new
String
(
fileName
.
getBytes
(
"UTF-8"
),
"iso-8859-1"
);
if
(
userAgent
.
contains
(
"msie"
)
||
userAgent
.
contains
(
"like gecko"
)
)
{
}
// win10 ie edge 浏览器 和其他系统的ie
/**LiuKexin 20210122 处理文件名 end */
fileName
=
URLEncoder
.
encode
(
fileName
,
"UTF-8"
);
//下载文件
}
else
{
DownLoadFileUtil
.
downLoadFile
(
getResponse
(),
fileName
,
pathKv
.
getStr
(
"path"
),
true
);
// 非ie
renderJson
(
Ret
.
ok
(
"msg"
,
"下载成功"
));
fileName
=
new
String
(
fileName
.
getBytes
(
"UTF-8"
),
"iso-8859-1"
);
}
else
{
}
renderJson
(
downloadOperation
);
/**LiuKexin 20210122 处理文件名 end */
}
//下载文件
}
catch
(
Exception
e
)
{
DownLoadFileUtil
.
downLoadFile
(
getResponse
(),
fileName
,
pathKv
.
getStr
(
"path"
),
true
);
e
.
printStackTrace
();
renderJson
(
Ret
.
ok
(
"msg"
,
"下载成功"
));
renderJson
(
Ret
.
fail
(
"msg"
,
"服务器出现异常,请联系管理员!"
));
}
else
{
}
renderJson
(
downloadOperation
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
renderJson
(
Ret
.
fail
(
"msg"
,
"服务器出现异常,请联系管理员!"
));
/**
}
* LiuKexin 20210310 判断此页是否设置为首页
*/
}
public
void
HomeIsAlready
()
{
String
username
=
this
.
getAttr
(
"username"
);
String
homeUrl
=
this
.
getPara
(
"homeUrl"
);
/**
// LiuKexin 20210319 添加参数
* LiuKexin 20210310 判断此页是否设置为首页
Boolean
isHome
=
this
.
getParaToBoolean
(
"isHome"
);
*/
String
mark
=
this
.
getPara
(
"mark"
);
public
void
HomeIsAlready
()
{
if
(
null
==
homeUrl
)
{
String
username
=
this
.
getAttr
(
"username"
);
renderJson
(
Ret
.
fail
(
"msg"
,
"获取数据错误"
));
String
homeUrl
=
this
.
getPara
(
"homeUrl"
);
}
// LiuKexin 20210319 添加参数
renderJson
(
helperService
.
HomeIsAlready
(
username
,
homeUrl
,
isHome
,
mark
));
Boolean
isHome
=
this
.
getParaToBoolean
(
"isHome"
);
}
String
mark
=
this
.
getPara
(
"mark"
);
if
(
null
==
homeUrl
)
{
/**
renderJson
(
Ret
.
fail
(
"msg"
,
"获取数据错误"
));
* LiuKexin 20210310 设置首页
}
*/
renderJson
(
helperService
.
HomeIsAlready
(
username
,
homeUrl
,
isHome
,
mark
));
public
void
settingHome
()
{
}
String
username
=
this
.
getAttr
(
"username"
);
String
homeUrl
=
this
.
getPara
(
"homeUrl"
);
/**
String
origin
=
this
.
getPara
(
"origin"
);
* LiuKexin 20210310 设置首页
if
(
null
==
homeUrl
||
null
==
origin
)
{
*/
renderJson
(
Ret
.
fail
(
"msg"
,
"获取数据错误"
));
public
void
settingHome
()
{
}
String
username
=
this
.
getAttr
(
"username"
);
renderJson
(
helperService
.
settingHome
(
username
,
homeUrl
,
origin
));
String
homeUrl
=
this
.
getPara
(
"homeUrl"
);
}
String
origin
=
this
.
getPara
(
"origin"
);
if
(
null
==
homeUrl
||
null
==
origin
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"获取数据错误"
));
}
renderJson
(
helperService
.
settingHome
(
username
,
homeUrl
,
origin
));
}
}
src/main/java/com/archser/aserver/controller/IndexController.java
View file @
36ae69dc
package
com
.
archser
.
aserver
.
controller
;
package
com
.
archser
.
aserver
.
controller
;
import
com.archser.aserver.util.AesEncryptUtil
;
import
com.archser.aserver.model.User
;
import
com.archser.aserver.util.FinalStringUtil
;
import
com.archser.commons.db.InfoSystem
;
import
com.archser.aserver.util.redis.InfoSystem
;
import
com.archser.commons.db.InfoUser
;
import
com.archser.aserver.util.redis.InfoUser
;
import
com.archser.commons.model.AsSystem
;
import
java.math.BigInteger
;
import
com.archser.commons.model.AsUser
;
import
java.util.Date
;
import
com.archser.commons.services.LogService
;
import
java.util.Iterator
;
import
com.archser.aserver.util.AesEncryptUtil
;
import
java.util.LinkedHashMap
;
import
com.archser.aserver.util.FinalStringUtil
;
import
java.util.List
;
import
java.math.BigInteger
;
import
java.util.Map
;
import
java.util.Date
;
import
java.util.Map.Entry
;
import
java.util.Iterator
;
import
java.util.Optional
;
import
java.util.LinkedHashMap
;
import
org.bouncycastle.crypto.InvalidCipherTextException
;
import
java.util.List
;
import
org.bouncycastle.crypto.params.ECPrivateKeyParameters
;
import
java.util.Map
;
import
org.bouncycastle.pqc.math.linearalgebra.ByteUtils
;
import
java.util.Map.Entry
;
import
com.alibaba.fastjson.JSON
;
import
java.util.Optional
;
import
com.archser.aserver.interceptor.JwtInterceptor
;
import
org.bouncycastle.crypto.InvalidCipherTextException
;
import
com.archser.aserver.model.System
;
import
org.bouncycastle.crypto.params.ECPrivateKeyParameters
;
import
com.archser.aserver.model.User
;
import
org.bouncycastle.pqc.math.linearalgebra.ByteUtils
;
import
com.archser.aserver.service.LogService
;
import
com.alibaba.fastjson.JSON
;
import
com.archser.aserver.service.UserService
;
import
com.archser.aserver.interceptor.JwtInterceptor
;
import
com.archser.aserver.util.HttpRequestUtil
;
import
com.archser.aserver.model.System
;
import
com.archser.aserver.util.KeysUtil
;
import
com.archser.aserver.service.UserService
;
import
com.archser.aserver.util.gm.BCECUtil
;
import
com.archser.aserver.util.HttpRequestUtil
;
import
com.archser.aserver.util.gm.SM2Util
;
import
com.archser.aserver.util.KeysUtil
;
import
com.jfinal.aop.Clear
;
import
com.archser.aserver.util.gm.BCECUtil
;
import
com.jfinal.aop.Inject
;
import
com.archser.aserver.util.gm.SM2Util
;
import
com.jfinal.core.Controller
;
import
com.jfinal.aop.Clear
;
import
com.jfinal.kit.HashKit
;
import
com.jfinal.aop.Inject
;
import
com.jfinal.kit.Kv
;
import
com.jfinal.core.Controller
;
import
com.jfinal.kit.PropKit
;
import
com.jfinal.kit.HashKit
;
import
com.jfinal.kit.Ret
;
import
com.jfinal.kit.Kv
;
import
com.jfinal.kit.StrKit
;
import
com.jfinal.kit.PropKit
;
import
com.jfinal.log.Log
;
import
com.jfinal.kit.Ret
;
import
com.jfinal.plugin.activerecord.Db
;
import
com.jfinal.kit.StrKit
;
import
com.jfinal.plugin.activerecord.Record
;
import
com.jfinal.log.Log
;
import
com.jfinal.plugin.redis.Redis
;
import
com.jfinal.plugin.activerecord.Db
;
import
com.spbportal.sso.SsoToken
;
import
com.jfinal.plugin.activerecord.Record
;
import
io.jsonwebtoken.JwsHeader
;
import
com.jfinal.plugin.redis.Redis
;
import
io.jsonwebtoken.Jwts
;
import
com.spbportal.sso.SsoToken
;
import
io.jsonwebtoken.SignatureAlgorithm
;
import
io.jsonwebtoken.JwsHeader
;
import
io.jsonwebtoken.Jwts
;
/**
import
io.jsonwebtoken.SignatureAlgorithm
;
* IndexController 指向系统访问首页
*
/**
* @author jbolt.cn
* IndexController 指向系统访问首页
* @email 909854136@qq.com
*
* @date 2018年11月4日 下午9:02:52
* @author jbolt.cn
*/
* @email 909854136@qq.com
public
class
IndexController
extends
Controller
{
* @date 2018年11月4日 下午9:02:52
/**
*/
* 登陆用户名,密码解密
public
class
IndexController
extends
Controller
{
*/
/**
public
static
final
String
PRIVATE_KEY_D
=
"38627fffe8003e6d2faa76d4eae2f74fd9cd7be257ab36c356c4f01bbc17e41d"
;
* 登陆用户名,密码解密
public
static
final
ECPrivateKeyParameters
USER_PRIVATE_KEY
=
BCECUtil
.
createECPrivateKeyParameters
(
*/
new
BigInteger
(
ByteUtils
.
fromHexString
(
PRIVATE_KEY_D
)),
SM2Util
.
DOMAIN_PARAMS
);
public
static
final
String
PRIVATE_KEY_D
=
"38627fffe8003e6d2faa76d4eae2f74fd9cd7be257ab36c356c4f01bbc17e41d"
;
public
static
final
ECPrivateKeyParameters
USER_PRIVATE_KEY
=
BCECUtil
.
createECPrivateKeyParameters
(
private
static
Log
log
=
Log
.
getLog
(
IndexController
.
class
);
new
BigInteger
(
ByteUtils
.
fromHexString
(
PRIVATE_KEY_D
)),
SM2Util
.
DOMAIN_PARAMS
);
/**
* 超期时间:24小时,即:24 * 60 * 60 * 1000
private
static
Log
log
=
Log
.
getLog
(
IndexController
.
class
);
*/
/**
public
static
final
int
EXPIRATION
=
24
*
60
*
60
*
1000
;
* 超期时间:24小时,即:24 * 60 * 60 * 1000
private
static
int
permitLoginTimes
=
5
;
// 允许登陆次数
*/
private
static
int
hour
=
2
;
// 两小时内不可登录
public
static
final
int
EXPIRATION
=
24
*
60
*
60
*
1000
;
@Inject
private
static
int
permitLoginTimes
=
5
;
// 允许登陆次数
private
LogService
logService
;
private
static
int
hour
=
2
;
// 两小时内不可登录
@Inject
@Inject
private
UserService
userService
;
private
LogService
logService
;
@Inject
@Inject
private
AesEncryptUtil
encryptUtil
;
private
UserService
userService
;
@Inject
private
AesEncryptUtil
encryptUtil
;
/**
* 首页Action
*/
/**
@Clear
* 首页Action
public
void
index
()
{
*/
render
(
"index.html"
);
@Clear
}
public
void
index
()
{
render
(
"index.html"
);
/**
}
* 修改密码
*/
/**
@Clear
* 修改密码
public
void
updatePassword
()
{
*/
String
username
=
this
.
getPara
(
"username"
);
@Clear
String
password
=
this
.
getPara
(
"newPwd"
);
public
void
updatePassword
()
{
password
=
HashKit
.
sha256
(
password
);
String
username
=
this
.
getPara
(
"username"
);
int
a
=
userService
.
updatePwd
(
password
,
username
);
String
password
=
this
.
getPara
(
"newPwd"
);
if
(
a
==
0
)
{
password
=
HashKit
.
sha256
(
password
);
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"修改失败"
));
int
a
=
userService
.
updatePwd
(
password
,
username
);
logService
.
saveAsLog
(
"operate"
,
if
(
a
==
0
)
{
username
+
"修改密码操作:修改密码失败"
,
FinalStringUtil
.
UPDATE
);
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"修改失败"
));
return
;
logService
.
saveAsLog
(
"operate"
,
}
username
+
"修改密码操作:修改密码失败"
,
FinalStringUtil
.
UPDATE
);
this
.
renderJson
(
Ret
.
ok
(
"msg"
,
"修改成功"
));
return
;
logService
.
saveAsLog
(
"operate"
,
username
+
"修改密码操作:修改密码成功"
,
FinalStringUtil
.
UPDATE
);
}
}
this
.
renderJson
(
Ret
.
ok
(
"msg"
,
"修改成功"
));
logService
.
saveAsLog
(
"operate"
,
username
+
"修改密码操作:修改密码成功"
,
FinalStringUtil
.
UPDATE
);
private
String
decrypt
(
String
sm2Cipher
)
throws
InvalidCipherTextException
{
}
return
new
String
(
SM2Util
.
decrypt
(
USER_PRIVATE_KEY
,
ByteUtils
.
fromHexString
(
"04"
+
sm2Cipher
)));
}
private
String
decrypt
(
String
sm2Cipher
)
throws
InvalidCipherTextException
{
return
new
String
(
SM2Util
.
decrypt
(
USER_PRIVATE_KEY
,
ByteUtils
.
fromHexString
(
"04"
+
sm2Cipher
)));
/**
}
* 登录验证
*/
/**
@Clear
(
JwtInterceptor
.
class
)
* 登录验证
// @Before(LoginValidator.class)
*/
public
void
login
()
{
@Clear
(
JwtInterceptor
.
class
)
String
app
=
this
.
getPara
(
"app"
);
// @Before(LoginValidator.class)
String
username
=
this
.
getPara
(
"username"
);
public
void
login
()
{
String
password
=
this
.
getPara
(
"password"
);
String
app
=
this
.
getPara
(
"app"
);
String
callback
=
this
.
getPara
(
"callback"
);
String
username
=
this
.
getPara
(
"username"
);
// 解密用户名和密码
String
password
=
this
.
getPara
(
"password"
);
try
{
String
callback
=
this
.
getPara
(
"callback"
);
username
=
AesEncryptUtil
.
desEncrypt
(
username
);
// 解密用户名和密码
password
=
AesEncryptUtil
.
desEncrypt
(
password
);
try
{
}
catch
(
Exception
e1
)
{
username
=
decrypt
(
username
);
e1
.
printStackTrace
();
password
=
decrypt
(
password
);
username
=
this
.
getPara
(
"username"
);
}
catch
(
Exception
e1
)
{
password
=
this
.
getPara
(
"password"
);
e1
.
printStackTrace
();
}
username
=
this
.
getPara
(
"username"
);
//校验密码是否符合强度设置
password
=
this
.
getPara
(
"password"
);
String
verify
=
password
;
}
password
=
HashKit
.
sha256
(
password
);
//校验密码是否符合强度设置
User
user
=
InfoUser
.
getUser
(
username
);
String
verify
=
password
;
if
(
user
==
null
)
{
password
=
HashKit
.
sha256
(
password
);
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"用户名或密码不存在: "
+
username
));
AsUser
user
=
InfoUser
.
getUser
(
username
);
logService
.
saveAsLog
(
"login"
,
"该用户非本系统用户正在非法登录"
,
FinalStringUtil
.
QUERY
);
if
(
user
==
null
)
{
return
;
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"用户名或密码不存在: "
+
username
));
}
logService
.
saveAsLog
(
"login"
,
"该用户非本系统用户正在非法登录"
,
FinalStringUtil
.
QUERY
);
/**chenyong 20201116 add 增加演示时提醒 start**/
return
;
String
showSetting
=
Db
.
queryStr
(
Db
.
getSql
(
"getConfigByName"
),
"showSetting"
);
}
if
(
showSetting
!=
null
)
{
/**chenyong 20201116 add 增加演示时提醒 start**/
String
[]
showSettingArr
=
showSetting
.
split
(
"\\|"
);
String
showSetting
=
Db
.
queryStr
(
Db
.
getSql
(
"getConfigByName"
),
"showSetting"
);
boolean
isShow
=
"是"
.
equals
(
showSettingArr
[
0
]);
if
(
showSetting
!=
null
)
{
if
(
isShow
)
{
String
[]
showSettingArr
=
showSetting
.
split
(
"\\|"
);
boolean
isShowUser
=
false
;
boolean
isShow
=
"是"
.
equals
(
showSettingArr
[
0
]);
String
[]
userNameArr
=
showSettingArr
[
1
].
split
(
","
);
if
(
isShow
)
{
for
(
String
userName:
userNameArr
)
{
boolean
isShowUser
=
false
;
if
(
username
.
equals
(
userName
))
{
String
[]
userNameArr
=
showSettingArr
[
1
].
split
(
","
);
isShowUser
=
true
;
for
(
String
userName:
userNameArr
)
{
break
;
if
(
username
.
equals
(
userName
))
{
}
isShowUser
=
true
;
}
break
;
if
(!
isShowUser
)
{
}
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"系统正在演示中,请稍候......"
));
}
return
;
if
(!
isShowUser
)
{
}
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"系统正在演示中,请稍候......"
));
}
return
;
}
}
/**chenyong 20201116 add end**/
}
// 一旦开启三员 admin用户不能使用
}
if
(
"admin"
.
equals
(
user
.
getUsername
()))
{
/**chenyong 20201116 add end**/
Integer
userCount
=
Db
.
queryInt
(
Db
.
getSql
(
"hasThreeMemberUsersCount"
));
// 一旦开启三员 admin用户不能使用
boolean
isExistThreeMemberUsers
=
userCount
!=
null
&&
(
userCount
>
0
);
if
(
"admin"
.
equals
(
user
.
getUsername
()))
{
if
(
isExistThreeMemberUsers
)
{
Integer
userCount
=
Db
.
queryInt
(
Db
.
getSql
(
"hasThreeMemberUsersCount"
));
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"已开启三员管理,admin失效了。"
));
boolean
isExistThreeMemberUsers
=
userCount
!=
null
&&
(
userCount
>
0
);
logService
.
saveAsLog
(
"login"
,
"登录失败,原因:已开启三员管理"
,
FinalStringUtil
.
QUERY
);
if
(
isExistThreeMemberUsers
)
{
return
;
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"已开启三员管理,admin失效了。"
));
}
logService
.
saveAsLog
(
"login"
,
"登录失败,原因:已开启三员管理"
,
FinalStringUtil
.
QUERY
);
}
return
;
if
(
user
.
getLocked
()
!=
null
&&
Integer
.
parseInt
(
user
.
getLocked
())
==
1
)
{
}
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"当前账户已被锁定"
));
}
logService
.
saveAsLog
(
"login"
,
"登录失败,原因:该用户已被锁定"
,
FinalStringUtil
.
QUERY
);
if
(
user
.
getLocked
()
!=
null
&&
Integer
.
parseInt
(
user
.
getLocked
())
==
1
)
{
return
;
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"当前账户已被锁定"
));
}
logService
.
saveAsLog
(
"login"
,
"登录失败,原因:该用户已被锁定"
,
FinalStringUtil
.
QUERY
);
if
(!
password
.
equals
(
user
.
getPassword
()))
{
return
;
if
(
this
.
checkErrorCount
(
user
))
{
}
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"您的错误次数已达5次以上,请稍后再试!"
));
if
(!
password
.
equals
(
user
.
getPassword
()))
{
}
else
{
if
(
this
.
checkErrorCount
(
user
))
{
int
errorCount
=
permitLoginTimes
-
(
user
.
getErrorcount
()
==
null
?
0
:
user
.
getErrorcount
())
-
1
;
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"您的错误次数已达5次以上,请稍后再试!"
));
if
(
user
.
getErrorcount
()
!=
null
&&
user
.
getErrorcount
()
==
4
)
{
}
else
{
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"用户名或密码验证失败,您的账户于两小时后才可登录!"
));
int
errorCount
=
permitLoginTimes
-
(
user
.
getErrorcount
()
==
null
?
0
:
user
.
getErrorcount
())
-
1
;
}
else
{
if
(
user
.
getErrorcount
()
!=
null
&&
user
.
getErrorcount
()
==
4
)
{
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"用户名或密码验证失败,您还有"
+
errorCount
+
"次机会!"
));
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"用户名或密码验证失败,您的账户于两小时后才可登录!"
));
logService
.
saveAsLog
(
"login"
,
"登录失败,原因:密码验证错误"
,
FinalStringUtil
.
QUERY
);
}
else
{
}
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"用户名或密码验证失败,您还有"
+
errorCount
+
"次机会!"
));
}
logService
.
saveAsLog
(
"login"
,
"登录失败,原因:密码验证错误"
,
FinalStringUtil
.
QUERY
);
return
;
}
}
}
Integer
errorcount
=
user
.
getErrorcount
();
return
;
if
(
errorcount
!=
null
&&
errorcount
!=
0
)
{
}
if
(!
this
.
checkWhenPwdOk
(
user
))
{
Integer
errorcount
=
user
.
getErrorcount
();
Date
date
=
new
Date
();
if
(
errorcount
!=
null
&&
errorcount
!=
0
)
{
long
hour1
=
2
*
60
*
60
;
if
(!
this
.
checkWhenPwdOk
(
user
))
{
long
begin
=
date
.
getTime
();
Date
date
=
new
Date
();
long
end
=
user
.
getLastLoginTime
().
getTime
();
long
hour1
=
2
*
60
*
60
;
long
between
=
(
begin
-
end
)
/
1000
;
long
begin
=
date
.
getTime
();
long
hour2
=
(
hour1
-
between
)
%
(
24
*
3600
)
/
3600
;
long
end
=
user
.
getLastLoginTime
().
getTime
();
long
minute
=
(
hour1
-
between
)
%
3600
/
60
;
long
between
=
(
begin
-
end
)
/
1000
;
long
second
=
(
hour1
-
between
)
%
60
;
long
hour2
=
(
hour1
-
between
)
%
(
24
*
3600
)
/
3600
;
if
(
between
<
hour1
)
{
long
minute
=
(
hour1
-
between
)
%
3600
/
60
;
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"您的账户还剩"
+
hour2
+
"小时"
+
minute
+
"分"
+
second
+
"秒才可登录!"
));
long
second
=
(
hour1
-
between
)
%
60
;
return
;
if
(
between
<
hour1
)
{
}
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"您的账户还剩"
+
hour2
+
"小时"
+
minute
+
"分"
+
second
+
"秒才可登录!"
));
}
return
;
}
}
}
if
(!
"admin"
.
equals
(
user
.
getUsername
()))
{
}
Integer
noLockedRolesCount
=
Db
.
queryInt
(
Db
.
getSql
(
"hasNoLockedRolesCount"
),
user
.
getUsername
());
boolean
noLockedRolesFlag
=
noLockedRolesCount
!=
null
&&
(
noLockedRolesCount
>
0
);
if
(!
"admin"
.
equals
(
user
.
getUsername
()))
{
if
(!
noLockedRolesFlag
)
{
Integer
noLockedRolesCount
=
Db
.
queryInt
(
Db
.
getSql
(
"hasNoLockedRolesCount"
),
user
.
getUsername
());
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"拥有的角色全部被锁定,不能登录系统了。"
));
boolean
noLockedRolesFlag
=
noLockedRolesCount
!=
null
&&
(
noLockedRolesCount
>
0
);
logService
.
saveAsLog
(
"login"
,
"登录失败,原因:该用户拥有的角色全部被锁定"
,
FinalStringUtil
.
QUERY
);
if
(!
noLockedRolesFlag
)
{
return
;
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"拥有的角色全部被锁定,不能登录系统了。"
));
}
logService
.
saveAsLog
(
"login"
,
"登录失败,原因:该用户拥有的角色全部被锁定"
,
FinalStringUtil
.
QUERY
);
}
return
;
}
System
system
=
InfoSystem
.
getSystem
(
app
);
}
if
(
system
==
null
)
{
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"没有找到应用:"
+
app
));
AsSystem
system
=
InfoSystem
.
getSystem
(
app
);
logService
.
saveAsLog
(
"login"
,
"登录失败,原因:没有找到应用"
+
app
,
FinalStringUtil
.
QUERY
);
if
(
system
==
null
)
{
return
;
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"没有找到应用:"
+
app
));
}
logService
.
saveAsLog
(
"login"
,
"登录失败,原因:没有找到应用"
+
app
,
FinalStringUtil
.
QUERY
);
if
(
StrKit
.
isBlank
(
system
.
getPrivatekey
())
||
StrKit
.
isBlank
(
system
.
getKeyid
()))
{
return
;
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"没有找到应用的密钥:"
+
app
));
}
logService
.
saveAsLog
(
"login"
,
"登录失败,原因:没有找到应用的密钥"
+
app
,
FinalStringUtil
.
QUERY
);
if
(
StrKit
.
isBlank
(
system
.
getPrivatekey
())
||
StrKit
.
isBlank
(
system
.
getKeyid
()))
{
return
;
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"没有找到应用的密钥:"
+
app
));
}
logService
.
saveAsLog
(
"login"
,
"登录失败,原因:没有找到应用的密钥"
+
app
,
FinalStringUtil
.
QUERY
);
return
;
//查询用户是否有该系统的权限
}
// boolean homeAuth = userService.checkUserSystemPermission(user.getId(), app);
// if (!homeAuth) {
//查询用户是否有该系统的权限
// this.renderJson(Ret.fail("msg", "您没有权限登录" + system.getTitle() + "系统"));
// boolean homeAuth = userService.checkUserSystemPermission(user.getId(), app);
// logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:您没有权限登录此系统" + app,
// if (!homeAuth) {
// app);
// this.renderJson(Ret.fail("msg", "您没有权限登录" + system.getTitle() + "系统"));
// return;
// logService.saveAsLog("login", username, JwtInterceptor.getIpAddr(getRequest()), "登录失败,原因:您没有权限登录此系统" + app,
// }
// app);
// return;
List
<
System
>
systemList
=
userService
.
findSystemWithUserPermission
(
user
.
getId
());
// }
/** 修改如果登陆用户为admin用户则直接登陆 huwenbin 2020/5/20 start */
if
(!
"admin"
.
equals
(
user
.
getUsername
()))
{
List
<
AsSystem
>
systemList
=
userService
.
findSystemWithUserPermission
(
user
.
getId
());
if
((
systemList
==
null
||
systemList
.
isEmpty
()))
{
/** 修改如果登陆用户为admin用户则直接登陆 huwenbin 2020/5/20 start */
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"您没有权限登录"
+
system
.
getTitle
()
+
"系统"
));
if
(!
"admin"
.
equals
(
user
.
getUsername
()))
{
logService
.
saveAsLog
(
"login"
,
if
((
systemList
==
null
||
systemList
.
isEmpty
()))
{
"登录失败,原因:您没有权限登录此系统"
+
app
,
FinalStringUtil
.
QUERY
);
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"您没有权限登录"
+
system
.
getTitle
()
+
"系统"
));
return
;
logService
.
saveAsLog
(
"login"
,
}
"登录失败,原因:您没有权限登录此系统"
+
app
,
FinalStringUtil
.
QUERY
);
return
;
Optional
<
System
>
systemOptional
=
userService
.
getSystemByName
(
app
,
systemList
);
}
if
(!
systemOptional
.
isPresent
())
{
// 没有当前系统的权限
system
=
systemList
.
get
(
0
);
Optional
<
AsSystem
>
systemOptional
=
userService
.
getSystemByName
(
app
,
systemList
);
app
=
system
.
getName
();
if
(!
systemOptional
.
isPresent
())
{
// 没有当前系统的权限
callback
=
system
.
getUrl
();
system
=
systemList
.
get
(
0
);
}
app
=
system
.
getName
();
}
callback
=
system
.
getUrl
();
/** 修改如果登陆用户为admin用户则直接登陆 huwenbin 2020/5/20 end */
}
}
try
{
/** 修改如果登陆用户为admin用户则直接登陆 huwenbin 2020/5/20 end */
String
jws
=
Jwts
.
builder
()
// 设置密匙ID
try
{
.
setHeaderParam
(
JwsHeader
.
KEY_ID
,
system
.
getKeyid
())
String
jws
=
Jwts
.
builder
()
// 赋予应用
// 设置密匙ID
.
setSubject
(
app
)
.
setHeaderParam
(
JwsHeader
.
KEY_ID
,
system
.
getKeyid
())
// 签发时间
// 赋予应用
.
setIssuedAt
(
new
Date
())
.
setSubject
(
app
)
// 超期时间
// 签发时间
.
setExpiration
(
new
Date
(
java
.
lang
.
System
.
currentTimeMillis
()
+
EXPIRATION
))
.
setIssuedAt
(
new
Date
())
// 用户名
// 超期时间
.
claim
(
"name"
,
username
).
claim
(
"ip"
,
JwtInterceptor
.
getIpAddr
(
getRequest
()))
.
setExpiration
(
new
Date
(
java
.
lang
.
System
.
currentTimeMillis
()
+
EXPIRATION
))
// 签名
// 用户名
.
signWith
(
KeysUtil
.
privatekey
(
system
.
getPrivatekey
()),
SignatureAlgorithm
.
RS256
).
compact
();
.
claim
(
"name"
,
username
).
claim
(
"ip"
,
JwtInterceptor
.
getIpAddr
(
getRequest
()))
// 签名
if
(
errorcount
!=
null
&&
errorcount
!=
0
)
{
.
signWith
(
KeysUtil
.
privatekey
(
system
.
getPrivatekey
()),
SignatureAlgorithm
.
RS256
).
compact
();
this
.
setErrZero
(
user
);
}
if
(
errorcount
!=
null
&&
errorcount
!=
0
)
{
this
.
setErrZero
(
user
);
Boolean
aBoolean
=
userService
.
verifyPassword
(
verify
);
}
this
.
renderJson
(
Ret
.
ok
(
"token"
,
jws
).
set
(
"callback"
,
callback
).
set
(
"verify"
,
aBoolean
));
logService
.
saveAsLog
(
"login"
,
username
+
"登录"
+
app
+
"成功"
,
FinalStringUtil
.
QUERY
);
Boolean
aBoolean
=
userService
.
verifyPassword
(
verify
);
/**
this
.
renderJson
(
Ret
.
ok
(
"token"
,
jws
).
set
(
"callback"
,
callback
).
set
(
"verify"
,
aBoolean
));
* 20200706 lidecai 将用户信息保存到Redis end
logService
.
saveAsLog
(
"login"
,
username
+
"登录"
+
app
+
"成功"
,
FinalStringUtil
.
QUERY
);
*/
/**
}
catch
(
Exception
e
)
{
* 20200706 lidecai 将用户信息保存到Redis end
log
.
error
(
"生成登录票据失败"
,
e
);
*/
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"生成登录票据失败"
));
}
catch
(
Exception
e
)
{
logService
.
saveAsLog
(
"login"
,
"生成登录票据失败"
,
FinalStringUtil
.
QUERY
);
log
.
error
(
"生成登录票据失败"
,
e
);
}
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"生成登录票据失败"
));
}
logService
.
saveAsLog
(
"login"
,
"生成登录票据失败"
,
FinalStringUtil
.
QUERY
);
}
/**
}
* LiuKexin 20210310 登录前先获取设置首页的信息
*/
/**
@Clear
* LiuKexin 20210310 登录前先获取设置首页的信息
public
void
getUserHome
()
{
*/
String
username
=
this
.
getPara
(
"username"
);
@Clear
Record
findUser
=
Db
.
findById
(
"AS_USER"
,
"username"
,
username
);
public
void
getUserHome
()
{
if
(
null
==
findUser
)
{
String
username
=
this
.
getPara
(
"username"
);
renderJson
(
Ret
.
fail
());
Record
findUser
=
Db
.
findById
(
"AS_USER"
,
"username"
,
username
);
return
;
if
(
null
==
findUser
)
{
}
renderJson
(
Ret
.
fail
());
Record
findUserHome
=
Db
.
findById
(
"AS_USER_HOME"
,
"user_id"
,
findUser
.
getInt
(
"ID"
));
return
;
if
(
null
==
findUserHome
)
{
}
renderJson
(
Ret
.
fail
());
Record
findUserHome
=
Db
.
findById
(
"AS_USER_HOME"
,
"user_id"
,
findUser
.
getInt
(
"ID"
));
return
;
if
(
null
==
findUserHome
)
{
}
renderJson
(
Ret
.
fail
());
renderJson
(
Ret
.
ok
(
"app"
,
findUserHome
.
getStr
(
"system"
)).
set
(
"callback"
,
findUserHome
.
getStr
(
"home_url"
)));
return
;
}
}
renderJson
(
Ret
.
ok
(
"app"
,
findUserHome
.
getStr
(
"system"
)).
set
(
"callback"
,
findUserHome
.
getStr
(
"home_url"
)));
/**
}
* @Description: 验证密码强度
* @authorAndDate: ChengYaqing create on 2020/10/30 10:38
/**
* @return void
* @Description: 验证密码强度
*/
* @authorAndDate: ChengYaqing create on 2020/10/30 10:38
@Clear
* @return void
public
void
verifyPassword
()
{
*/
String
password
=
getPara
(
"password"
);
@Clear
if
(
password
==
null
||
""
.
equals
(
password
)||
"null"
.
equals
(
password
))
{
public
void
verifyPassword
()
{
renderJson
(
Ret
.
fail
(
"msg"
,
"密码不能为空"
));
String
password
=
getPara
(
"password"
);
return
;
if
(
password
==
null
||
""
.
equals
(
password
)||
"null"
.
equals
(
password
))
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"密码不能为空"
));
try
{
return
;
password
=
decrypt
(
password
);
}
}
catch
(
Exception
e1
)
{
try
{
e1
.
printStackTrace
();
password
=
decrypt
(
password
);
password
=
this
.
getPara
(
"password"
);
}
catch
(
Exception
e1
)
{
}
e1
.
printStackTrace
();
try
{
password
=
this
.
getPara
(
"password"
);
String
verify
=
userService
.
verifyPasswordInfo
(
password
);
}
if
(
""
.
equals
(
verify
))
{
try
{
renderJson
(
Ret
.
ok
());
String
verify
=
userService
.
verifyPasswordInfo
(
password
);
}
else
{
if
(
""
.
equals
(
verify
))
{
renderJson
(
Ret
.
fail
(
"msg"
,
verify
));
renderJson
(
Ret
.
ok
());
}
}
else
{
}
catch
(
Exception
e
)
{
renderJson
(
Ret
.
fail
(
"msg"
,
verify
));
renderJson
(
Ret
.
fail
(
"error"
,
e
.
getMessage
()));
}
}
}
catch
(
Exception
e
)
{
}
renderJson
(
Ret
.
fail
(
"error"
,
e
.
getMessage
()));
}
// 密码正确时错误次数清零
}
private
void
setErrZero
(
User
user
)
{
Db
.
update
(
Db
.
getSqlPara
(
"updateForOk"
,
Kv
.
by
(
"id"
,
user
.
getId
())));
// 密码正确时错误次数清零
}
private
void
setErrZero
(
AsUser
user
)
{
Db
.
update
(
Db
.
getSqlPara
(
"updateForOk"
,
Kv
.
by
(
"id"
,
user
.
getId
())));
//密码错误时判断错误次数是否为5次
}
private
boolean
checkErrorCount
(
User
user
)
{
Kv
cond
=
Kv
.
by
(
"id"
,
user
.
getId
()).
set
(
"hour"
,
hour
).
set
(
"permitLoginTimes"
,
permitLoginTimes
);
//密码错误时判断错误次数是否为5次
List
<
Record
>
currentList
=
Db
.
find
(
Db
.
getSqlPara
(
"getErrorCount"
,
cond
));
private
boolean
checkErrorCount
(
AsUser
user
)
{
int
currentNum
=
0
;
Kv
cond
=
Kv
.
by
(
"id"
,
user
.
getId
()).
set
(
"hour"
,
hour
).
set
(
"permitLoginTimes"
,
permitLoginTimes
);
for
(
Record
record
:
currentList
)
{
List
<
Record
>
currentList
=
Db
.
find
(
Db
.
getSqlPara
(
"getErrorCount"
,
cond
));
currentNum
=
Integer
.
parseInt
(
record
.
get
(
"flag"
).
toString
());
int
currentNum
=
0
;
}
for
(
Record
record
:
currentList
)
{
if
(
currentNum
>=
permitLoginTimes
)
{
currentNum
=
Integer
.
parseInt
(
record
.
get
(
"flag"
).
toString
());
return
true
;
}
}
else
{
if
(
currentNum
>=
permitLoginTimes
)
{
//执行+1或=1的操作
return
true
;
Db
.
update
(
Db
.
getSqlPara
(
"updateForErr"
,
cond
));
}
else
{
//同步到redis ChengYaqing 20210224
//执行+1或=1的操作
User
byId
=
User
.
dao
.
findById
(
user
.
getId
());
Db
.
update
(
Db
.
getSqlPara
(
"updateForErr"
,
cond
));
InfoUser
.
saveUser
(
byId
);
//同步到redis ChengYaqing 20210224
return
false
;
AsUser
byId
=
AsUser
.
dao
.
findById
(
user
.
getId
());
}
InfoUser
.
saveUser
(
byId
);
}
return
false
;
}
//密码正确时判断次数和锁定时间是否在指定范围内
}
private
boolean
checkWhenPwdOk
(
User
user
)
{
List
<
Record
>
currentList
=
Db
.
find
(
Db
.
getSqlPara
(
"checkWhenPwdOk"
,
//密码正确时判断次数和锁定时间是否在指定范围内
Kv
.
by
(
"id"
,
user
.
getId
()).
set
(
"hour"
,
hour
).
set
(
"permitLoginTimes"
,
permitLoginTimes
)));
private
boolean
checkWhenPwdOk
(
AsUser
user
)
{
int
currentNum
=
0
;
List
<
Record
>
currentList
=
Db
.
find
(
Db
.
getSqlPara
(
"checkWhenPwdOk"
,
if
(
currentList
==
null
||
currentList
.
size
()
==
0
)
{
Kv
.
by
(
"id"
,
user
.
getId
()).
set
(
"hour"
,
hour
).
set
(
"permitLoginTimes"
,
permitLoginTimes
)));
return
true
;
int
currentNum
=
0
;
}
if
(
currentList
==
null
||
currentList
.
size
()
==
0
)
{
for
(
Record
record
:
currentList
)
{
return
true
;
currentNum
=
Integer
.
parseInt
(
record
.
get
(
"flag"
).
toString
());
}
}
for
(
Record
record
:
currentList
)
{
if
(
currentNum
>=
permitLoginTimes
)
{
currentNum
=
Integer
.
parseInt
(
record
.
get
(
"flag"
).
toString
());
return
false
;
}
}
else
{
if
(
currentNum
>=
permitLoginTimes
)
{
return
true
;
return
false
;
}
}
else
{
}
return
true
;
}
/**
}
* 通过门户系统单点登录
*
/**
* @author Guo XJ
* 通过门户系统单点登录
* @date 2019-12-13 15:08:00
*
*/
* @author Guo XJ
public
void
ssoByPortalSystem
()
{
* @date 2019-12-13 15:08:00
try
{
*/
//获取app
public
void
ssoByPortalSystem
()
{
String
app
=
getPara
(
"app"
,
null
);
try
{
if
(
app
==
null
)
{
//获取app
renderJson
(
Ret
.
fail
(
"msg"
,
"获取服务信息失败"
));
String
app
=
getPara
(
"app"
,
null
);
return
;
if
(
app
==
null
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"获取服务信息失败"
));
//获取到门户系统的Token
return
;
String
ssotoken
=
getPara
(
"ssotoken"
);
}
//获取到personCode(用户唯一标识)
//获取到门户系统的Token
SsoToken
st
=
new
SsoToken
();
String
ssotoken
=
getPara
(
"ssotoken"
);
st
.
initialise
(
ssotoken
);
//获取到personCode(用户唯一标识)
String
personCode
=
st
.
getTokenId
();
SsoToken
st
=
new
SsoToken
();
//获取用户
st
.
initialise
(
ssotoken
);
Record
user
=
userService
.
getUserInfoByPersonCode
(
personCode
);
String
personCode
=
st
.
getTokenId
();
System
system
=
System
.
dao
.
template
(
"getSystemPrivatekey"
,
app
).
findFirst
();
//获取用户
if
(
system
==
null
)
{
Record
user
=
userService
.
getUserInfoByPersonCode
(
personCode
);
renderJson
(
Ret
.
fail
(
"msg"
,
"获取服务信息失败"
));
System
system
=
System
.
dao
.
template
(
"getSystemPrivatekey"
,
app
).
findFirst
();
return
;
if
(
system
==
null
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"获取服务信息失败"
));
//判断用户是否存在
return
;
if
(
user
!=
null
&&
user
.
getStr
(
"username"
)
!=
null
)
{
}
String
jws
=
Jwts
.
builder
()
//判断用户是否存在
// 设置密匙ID
if
(
user
!=
null
&&
user
.
getStr
(
"username"
)
!=
null
)
{
.
setHeaderParam
(
JwsHeader
.
KEY_ID
,
system
.
getKeyid
())
String
jws
=
Jwts
.
builder
()
// 赋予应用
// 设置密匙ID
.
setSubject
(
app
)
.
setHeaderParam
(
JwsHeader
.
KEY_ID
,
system
.
getKeyid
())
// 签发时间
// 赋予应用
.
setIssuedAt
(
new
Date
())
.
setSubject
(
app
)
// 超期时间
// 签发时间
.
setExpiration
(
new
Date
(
java
.
lang
.
System
.
currentTimeMillis
()
+
EXPIRATION
))
.
setIssuedAt
(
new
Date
())
// 用户名
// 超期时间
.
claim
(
"name"
,
user
.
getStr
(
"username"
)).
claim
(
"ip"
,
JwtInterceptor
.
getIpAddr
(
getRequest
()))
.
setExpiration
(
new
Date
(
java
.
lang
.
System
.
currentTimeMillis
()
+
EXPIRATION
))
// 签名
// 用户名
.
signWith
(
KeysUtil
.
privatekey
(
system
.
getPrivatekey
()),
SignatureAlgorithm
.
RS256
).
compact
();
.
claim
(
"name"
,
user
.
getStr
(
"username"
)).
claim
(
"ip"
,
JwtInterceptor
.
getIpAddr
(
getRequest
()))
this
.
renderJson
(
Ret
.
ok
(
"token"
,
jws
));
// 签名
return
;
.
signWith
(
KeysUtil
.
privatekey
(
system
.
getPrivatekey
()),
SignatureAlgorithm
.
RS256
).
compact
();
}
else
{
this
.
renderJson
(
Ret
.
ok
(
"token"
,
jws
));
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"没有找到当前用户"
));
return
;
return
;
}
else
{
}
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"没有找到当前用户"
));
}
catch
(
Exception
e
)
{
return
;
// TODO: handle exception
}
e
.
printStackTrace
();
}
catch
(
Exception
e
)
{
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"登录出错!"
));
// TODO: handle exception
}
e
.
printStackTrace
();
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"登录出错!"
));
}
}
/**
}
* 根据邮政门户传回的code 获取用户信息
*
/**
* @Title: getUserInfoForH5
* 根据邮政门户传回的code 获取用户信息
* @author LDC
*
* @date 2019-11-19 03:22:34
* @Title: getUserInfoForH5
*/
* @author LDC
@Clear
* @date 2019-11-19 03:22:34
public
void
getUserInfoForH5
()
{
*/
String
code
=
getPara
(
"code"
,
null
);
@Clear
if
(
code
==
null
)
{
public
void
getUserInfoForH5
()
{
renderJson
(
Ret
.
fail
(
"msg"
,
"获取用户信息失败"
));
String
code
=
getPara
(
"code"
,
null
);
return
;
if
(
code
==
null
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"获取用户信息失败"
));
return
;
String
app
=
getPara
(
"app"
,
null
);
}
if
(
app
==
null
)
{
renderJson
(
Ret
.
fail
(
"msg"
,
"获取服务信息失败"
));
String
app
=
getPara
(
"app"
,
null
);
return
;
if
(
app
==
null
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"获取服务信息失败"
));
return
;
Map
<
String
,
String
>
paramMap
=
new
LinkedHashMap
<
String
,
String
>();
}
paramMap
.
put
(
"client_id"
,
"MmEepJkH7Hiz7EtS"
);
paramMap
.
put
(
"code"
,
code
);
Map
<
String
,
String
>
paramMap
=
new
LinkedHashMap
<
String
,
String
>();
paramMap
.
put
(
"state"
,
"1"
);
paramMap
.
put
(
"client_id"
,
"MmEepJkH7Hiz7EtS"
);
paramMap
.
put
(
"grant_type"
,
"authorization_code"
);
paramMap
.
put
(
"code"
,
code
);
paramMap
.
put
(
"scope"
,
"scope"
);
paramMap
.
put
(
"state"
,
"1"
);
paramMap
.
put
(
"redirect_uri"
,
PropKit
.
get
(
"redirect_uri"
));
paramMap
.
put
(
"grant_type"
,
"authorization_code"
);
paramMap
.
put
(
"scope"
,
"scope"
);
Iterator
<
Entry
<
String
,
String
>>
entrySet
=
paramMap
.
entrySet
().
iterator
();
paramMap
.
put
(
"redirect_uri"
,
PropKit
.
get
(
"redirect_uri"
));
StringBuilder
builder
=
new
StringBuilder
();
while
(
entrySet
.
hasNext
())
{
Iterator
<
Entry
<
String
,
String
>>
entrySet
=
paramMap
.
entrySet
().
iterator
();
Entry
<
String
,
String
>
next
=
entrySet
.
next
();
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
next
.
getKey
()).
append
(
"="
).
append
(
next
.
getValue
()).
append
(
"&"
);
while
(
entrySet
.
hasNext
())
{
}
Entry
<
String
,
String
>
next
=
entrySet
.
next
();
builder
.
append
(
next
.
getKey
()).
append
(
"="
).
append
(
next
.
getValue
()).
append
(
"&"
);
String
param
=
builder
.
deleteCharAt
(
builder
.
length
()
-
1
).
toString
();
}
Kv
header
=
Kv
.
by
(
"Content-type"
,
"application/x-www-form-urlencoded"
);
String
result
=
HttpRequestUtil
.
sendPost
(
PropKit
.
get
(
"authUrl"
),
param
,
header
);
String
param
=
builder
.
deleteCharAt
(
builder
.
length
()
-
1
).
toString
();
Kv
parseObject
=
JSON
.
parseObject
(
result
,
Kv
.
class
);
Kv
header
=
Kv
.
by
(
"Content-type"
,
"application/x-www-form-urlencoded"
);
Object
access_token
=
parseObject
.
get
(
"access_token"
);
String
result
=
HttpRequestUtil
.
sendPost
(
PropKit
.
get
(
"authUrl"
),
param
,
header
);
if
(
access_token
==
null
)
{
Kv
parseObject
=
JSON
.
parseObject
(
result
,
Kv
.
class
);
renderJson
(
Ret
.
fail
(
"msg"
,
"获取授权失败,请重新登录"
));
Object
access_token
=
parseObject
.
get
(
"access_token"
);
return
;
if
(
access_token
==
null
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"获取授权失败,请重新登录"
));
String
sendPost
=
HttpRequestUtil
.
sendPost
(
PropKit
.
get
(
"userInfoUrl"
),
return
;
"access_token="
+
access_token
.
toString
(),
header
);
}
Kv
userObj
=
JSON
.
parseObject
(
sendPost
,
Kv
.
class
);
String
sendPost
=
HttpRequestUtil
.
sendPost
(
PropKit
.
get
(
"userInfoUrl"
),
Object
uuid
=
userObj
.
get
(
"uuid"
);
"access_token="
+
access_token
.
toString
(),
header
);
if
(
uuid
==
null
)
{
Kv
userObj
=
JSON
.
parseObject
(
sendPost
,
Kv
.
class
);
renderJson
(
Ret
.
fail
(
"msg"
,
"获取用户信息失败"
));
Object
uuid
=
userObj
.
get
(
"uuid"
);
return
;
if
(
uuid
==
null
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"获取用户信息失败"
));
System
system
=
System
.
dao
.
template
(
"getSystemPrivatekey"
,
app
).
findFirst
();
return
;
if
(
system
==
null
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"获取服务信息失败"
));
System
system
=
System
.
dao
.
template
(
"getSystemPrivatekey"
,
app
).
findFirst
();
return
;
if
(
system
==
null
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"获取服务信息失败"
));
Record
userInfo
=
Db
.
findById
(
"AS_USER"
,
"UUID"
,
uuid
.
toString
());
return
;
if
(
userInfo
==
null
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"没有找到当前用户"
));
Record
userInfo
=
Db
.
findById
(
"AS_USER"
,
"UUID"
,
uuid
.
toString
());
return
;
if
(
userInfo
==
null
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"没有找到当前用户"
));
String
userName
=
userInfo
.
getStr
(
"USERNAME"
);
return
;
if
(
userName
==
null
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"获取用户名失败"
));
String
userName
=
userInfo
.
getStr
(
"USERNAME"
);
return
;
if
(
userName
==
null
)
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"获取用户名失败"
));
try
{
return
;
String
jws
=
Jwts
.
builder
()
}
// 设置密匙ID
try
{
.
setHeaderParam
(
JwsHeader
.
KEY_ID
,
system
.
getKeyid
())
String
jws
=
Jwts
.
builder
()
// 赋予应用
// 设置密匙ID
.
setSubject
(
app
)
.
setHeaderParam
(
JwsHeader
.
KEY_ID
,
system
.
getKeyid
())
// 签发时间
// 赋予应用
.
setIssuedAt
(
new
Date
())
.
setSubject
(
app
)
// 超期时间
// 签发时间
.
setExpiration
(
new
Date
(
java
.
lang
.
System
.
currentTimeMillis
()
+
EXPIRATION
))
.
setIssuedAt
(
new
Date
())
// 用户名
// 超期时间
.
claim
(
"name"
,
userName
).
claim
(
"ip"
,
JwtInterceptor
.
getIpAddr
(
getRequest
()))
.
setExpiration
(
new
Date
(
java
.
lang
.
System
.
currentTimeMillis
()
+
EXPIRATION
))
// 签名
// 用户名
.
signWith
(
KeysUtil
.
privatekey
(
system
.
getPrivatekey
()),
SignatureAlgorithm
.
RS256
).
compact
();
.
claim
(
"name"
,
userName
).
claim
(
"ip"
,
JwtInterceptor
.
getIpAddr
(
getRequest
()))
this
.
renderJson
(
Ret
.
ok
(
"token"
,
jws
));
// 签名
logService
.
saveAsLog
(
"login"
,
userName
+
"登录"
+
app
+
"成功"
,
FinalStringUtil
.
QUERY
);
.
signWith
(
KeysUtil
.
privatekey
(
system
.
getPrivatekey
()),
SignatureAlgorithm
.
RS256
).
compact
();
}
catch
(
Exception
e
)
{
this
.
renderJson
(
Ret
.
ok
(
"token"
,
jws
));
log
.
error
(
"生成登录票据失败"
,
e
);
logService
.
saveAsLog
(
"login"
,
userName
+
"登录"
+
app
+
"成功"
,
FinalStringUtil
.
QUERY
);
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"生成登录票据失败"
));
}
catch
(
Exception
e
)
{
logService
.
saveAsLog
(
"login"
,
"生成登录票据失败"
,
FinalStringUtil
.
QUERY
);
log
.
error
(
"生成登录票据失败"
,
e
);
}
this
.
renderJson
(
Ret
.
fail
(
"msg"
,
"生成登录票据失败"
));
}
logService
.
saveAsLog
(
"login"
,
"生成登录票据失败"
,
FinalStringUtil
.
QUERY
);
}
/**
}
* 退出系统,清空Redis 中的用户信息
* @Time:2020年7月6日 - 下午5:19:58
/**
* @author:李德才
* 退出系统,清空Redis 中的用户信息
* @param:
* @Time:2020年7月6日 - 下午5:19:58
* @return: void
* @author:李德才
* @throws
* @param:
*/
* @return: void
public
void
loginOut
()
{
* @throws
String
userName
=
getAttrForStr
(
"username"
);
*/
Redis
.
use
().
del
(
userName
+
"_INFO"
);
public
void
loginOut
()
{
renderJson
(
Ret
.
ok
());
String
userName
=
getAttrForStr
(
"username"
);
}
Redis
.
use
().
del
(
userName
+
"_INFO"
);
renderJson
(
Ret
.
ok
());
}
}
}
src/main/java/com/archser/aserver/controller/MenuController.java
View file @
36ae69dc
package
com
.
archser
.
aserver
.
controller
;
package
com
.
archser
.
aserver
.
controller
;
import
com.archser.aserver.util.FinalStringUtil
;
import
com.archser.aserver.util.FinalStringUtil
;
import
com.archser.aserver.util.redis.InfoSystem
;
import
com.archser.aserver.util.redis.InfoUser
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.LinkedHashMap
;
import
java.util.LinkedHashMap
;
...
@@ -10,11 +8,13 @@ import java.util.List;
...
@@ -10,11 +8,13 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
com.archser.commons.db.InfoSystem
;
import
com.archser.commons.db.InfoUser
;
import
com.archser.commons.services.LogService
;
import
com.archser.aserver.interceptor.JwtInterceptor
;
import
com.archser.aserver.interceptor.JwtInterceptor
;
import
com.archser.aserver.model.Menu
;
import
com.archser.aserver.model.Menu
;
import
com.archser.aserver.model.MenuStar
;
import
com.archser.aserver.model.MenuStar
;
import
com.archser.aserver.model.System
;
import
com.archser.aserver.model.System
;
import
com.archser.aserver.service.LogService
;
import
com.archser.aserver.service.MenuService
;
import
com.archser.aserver.service.MenuService
;
import
com.archser.aserver.util.CollectionUtil
;
import
com.archser.aserver.util.CollectionUtil
;
import
com.jfinal.aop.Inject
;
import
com.jfinal.aop.Inject
;
...
...
src/main/java/com/archser/aserver/controller/MessageController.java
View file @
36ae69dc
package
com
.
archser
.
aserver
.
controller
;
package
com
.
archser
.
aserver
.
controller
;
import
com.archser.aserver.util.FinalStringUtil
;
import
com.archser.aserver.service.MessageService
;
import
org.apache.commons.io.IOUtils
;
import
com.archser.aserver.util.FinalStringUtil
;
import
org.apache.log4j.Logger
;
import
org.apache.commons.io.IOUtils
;
import
org.apache.log4j.Logger
;
import
com.alibaba.fastjson.JSON
;
import
com.archser.aserver.interceptor.JwtInterceptor
;
import
com.archser.aserver.model.Message
;
import
com.alibaba.fastjson.JSON
;
import
com.archser.aserver.service.LogService
;
import
com.archser.aserver.interceptor.JwtInterceptor
;
import
com.archser.aserver.service.MessageService
;
import
com.archser.aserver.model.Message
;
import
com.archser.aserver.websocket.MessageRefreshTrigger
;
import
com.archser.aserver.service.LogService
;
import
com.jfinal.aop.Clear
;
import
com.archser.aserver.websocket.MessageRefreshTrigger
;
import
com.jfinal.aop.Inject
;
import
com.jfinal.aop.Clear
;
import
com.jfinal.core.Controller
;
import
com.jfinal.aop.Inject
;
import
com.jfinal.kit.Ret
;
import
com.jfinal.core.Controller
;
import
com.jfinal.kit.StrKit
;
import
com.jfinal.kit.Ret
;
import
com.jfinal.plugin.activerecord.Page
;
import
com.jfinal.kit.StrKit
;
import
com.jfinal.plugin.activerecord.Page
;
/**
* 消息相关
/**
*
* 消息相关
* @author dgq
*
*
* @author dgq
*/
*
public
class
MessageController
extends
Controller
{
*/
public
class
MessageController
extends
Controller
{
@Inject
LogService
logService
;
@Inject
LogService
logService
;
@Inject
MessageService
messageService
;
@Inject
MessageService
messageService
;
private
static
final
Logger
logger
=
Logger
.
getLogger
(
MessageController
.
class
);
private
static
final
Logger
logger
=
Logger
.
getLogger
(
MessageController
.
class
);
/**
* 获取未读消息数量
/**
*/
* 获取未读消息数量
public
void
count
()
{
*/
String
username
=
this
.
getAttr
(
"username"
);
public
void
count
()
{
Long
count
=
messageService
.
getCountByRead
(
null
,
username
);
String
username
=
this
.
getAttr
(
"username"
);
this
.
renderJson
(
Ret
.
ok
(
"count"
,
count
));
Long
count
=
messageService
.
getCountByRead
(
null
,
username
);
}
this
.
renderJson
(
Ret
.
ok
(
"count"
,
count
));
}
/**
* menu unread:未读,readed:已读,其他;查询所有
/**
*/
* menu unread:未读,readed:已读,其他;查询所有
public
void
getMessagePageData
()
{
*/
int
pageNumber
=
this
.
getParaToInt
(
"pageNumber"
);
public
void
getMessagePageData
()
{
int
pageSize
=
this
.
getParaToInt
(
"pageSize"
);
int
pageNumber
=
this
.
getParaToInt
(
"pageNumber"
);
String
username
=
this
.
getAttr
(
"username"
);
int
pageSize
=
this
.
getParaToInt
(
"pageSize"
);
String
menu
=
this
.
getPara
(
"menu"
);
String
username
=
this
.
getAttr
(
"username"
);
/** 2020年7月1日 添加模糊查询 yangchengwu YZJ-3915*/
String
menu
=
this
.
getPara
(
"menu"
);
String
likeVal
=
this
.
getPara
(
"likeVal"
);
/** 2020年7月1日 添加模糊查询 yangchengwu YZJ-3915*/
Page
<
Message
>
page
=
messageService
.
getMessagePageData
(
pageNumber
,
pageSize
,
username
,
menu
,
likeVal
);
String
likeVal
=
this
.
getPara
(
"likeVal"
);
Page
<
Message
>
page
=
messageService
.
getMessagePageData
(
pageNumber
,
pageSize
,
username
,
menu
,
likeVal
);
if
(
page
!=
null
)
{
renderJson
(
Ret
.
ok
(
"page"
,
page
));
if
(
page
!=
null
)
{
}
else
{
renderJson
(
Ret
.
ok
(
"page"
,
page
));
renderJson
(
Ret
.
fail
(
"msg"
,
"获取消息列表失败"
));
}
else
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"获取消息列表失败"
));
}
}
}
/**
* 标记为已读
/**
*/
* 标记为已读
public
void
markRead
()
{
*/
int
id
=
this
.
getParaToInt
(
"id"
);
public
void
markRead
()
{
boolean
markRead
=
this
.
messageService
.
markRead
(
id
);
int
id
=
this
.
getParaToInt
(
"id"
);
renderJson
(
markRead
?
Ret
.
ok
():
Ret
.
fail
());
boolean
markRead
=
this
.
messageService
.
markRead
(
id
);
}
renderJson
(
markRead
?
Ret
.
ok
():
Ret
.
fail
());
}
/**
* 删除消息
/**
*/
* 删除消息
public
void
deleteMessage
()
{
*/
String
ids
=
this
.
getPara
(
"ids"
);
public
void
deleteMessage
()
{
if
(
ids
.
length
()
==
0
)
{
String
ids
=
this
.
getPara
(
"ids"
);
renderJson
(
Ret
.
fail
());
if
(
ids
.
length
()
==
0
)
{
}
renderJson
(
Ret
.
fail
());
boolean
deleted
=
this
.
messageService
.
deleteMessage
(
ids
.
split
(
","
));
}
if
(
deleted
)
{
boolean
deleted
=
this
.
messageService
.
deleteMessage
(
ids
.
split
(
","
));
renderJson
(
Ret
.
ok
());
if
(
deleted
)
{
logService
.
saveAsLog
(
"operate"
,
"个人首页-消息中心-删除消息-"
+
"-已删除了"
+
ids
.
split
(
","
).
length
+
"个消息"
,
FinalStringUtil
.
DELETE
);
renderJson
(
Ret
.
ok
());
}
else
{
logService
.
saveAsLog
(
"operate"
,
"个人首页-消息中心-删除消息-"
+
"-已删除了"
+
ids
.
split
(
","
).
length
+
"个消息"
,
FinalStringUtil
.
DELETE
);
renderJson
(
Ret
.
fail
());
}
else
{
logService
.
saveAsLog
(
"operate"
,
"个人首页-消息中心-删除消息-删除消息失败"
,
FinalStringUtil
.
DELETE
);
renderJson
(
Ret
.
fail
());
}
logService
.
saveAsLog
(
"operate"
,
"个人首页-消息中心-删除消息-删除消息失败"
,
FinalStringUtil
.
DELETE
);
}
}
}
/**
* 根据指定用户更新websocket的消息
/**
*/
* 根据指定用户更新websocket的消息
@Clear
(
JwtInterceptor
.
class
)
*/
public
void
refreshMessage
()
{
@Clear
(
JwtInterceptor
.
class
)
try
{
public
void
refreshMessage
()
{
String
userId
=
this
.
getPara
(
"userId"
);
try
{
if
(
StrKit
.
isBlank
(
userId
))
{
String
userId
=
this
.
getPara
(
"userId"
);
userId
=
IOUtils
.
toString
(
this
.
getRequest
().
getInputStream
());
if
(
StrKit
.
isBlank
(
userId
))
{
userId
=
JSON
.
parseObject
(
userId
).
getString
(
"userId"
);
userId
=
IOUtils
.
toString
(
this
.
getRequest
().
getInputStream
());
}
userId
=
JSON
.
parseObject
(
userId
).
getString
(
"userId"
);
logger
.
error
(
"接受到消息刷新"
+
userId
);
}
if
(
StrKit
.
notBlank
(
userId
))
{
logger
.
error
(
"接受到消息刷新"
+
userId
);
boolean
refrashed
=
MessageRefreshTrigger
.
refresh
(
userId
);
if
(
StrKit
.
notBlank
(
userId
))
{
renderJson
(
Ret
.
ok
(
"refrashed"
,
refrashed
));
boolean
refrashed
=
MessageRefreshTrigger
.
refresh
(
userId
);
}
else
{
renderJson
(
Ret
.
ok
(
"refrashed"
,
refrashed
));
renderJson
(
Ret
.
fail
(
"msg"
,
"userId为null或userId不是一个数字"
));
}
else
{
}
renderJson
(
Ret
.
fail
(
"msg"
,
"userId为null或userId不是一个数字"
));
}
catch
(
Exception
e
)
{
}
logger
.
error
(
"刷新消息出错"
,
e
);
}
catch
(
Exception
e
)
{
renderJson
(
Ret
.
fail
(
"msg"
,
"刷新消息出错"
));
logger
.
error
(
"刷新消息出错"
,
e
);
}
renderJson
(
Ret
.
fail
(
"msg"
,
"刷新消息出错"
));
}
}
}
/**
* LiuKexin 20210402 批量标记为已读,且将通知性消息标为已读,下载或跳转的消息不批量已读
/**
*/
* LiuKexin 20210402 批量标记为已读,且将通知性消息标为已读,下载或跳转的消息不批量已读
public
void
allMsgReaded
()
{
*/
String
username
=
this
.
getAttr
(
"username"
);
public
void
allMsgReaded
()
{
Ret
allMsgReaded
=
messageService
.
allMsgReaded
(
username
);
String
username
=
this
.
getAttr
(
"username"
);
renderJson
(
allMsgReaded
);
Ret
allMsgReaded
=
messageService
.
allMsgReaded
(
username
);
}
renderJson
(
allMsgReaded
);
}
}
}
src/main/java/com/archser/aserver/itask/GoodSync.java
View file @
36ae69dc
package
com
.
archser
.
aserver
.
itask
;
package
com
.
archser
.
aserver
.
itask
;
import
com.archser.
aserver.model.
Organ
;
import
com.archser.
commons.db.Info
Organ
;
import
com.archser.
aserver.model.
System
;
import
com.archser.
commons.db.Info
System
;
import
com.archser.
aserver.model.
User
;
import
com.archser.
commons.db.Info
User
;
import
com.archser.
aserver.util.redis.Info
Organ
;
import
com.archser.
commons.model.As
Organ
;
import
com.archser.
aserver.util.redis.Info
System
;
import
com.archser.
commons.model.As
System
;
import
com.archser.
aserver.util.redis.Info
User
;
import
com.archser.
commons.model.As
User
;
import
com.jfinal.kit.PropKit
;
import
com.jfinal.kit.PropKit
;
import
com.jfinal.plugin.cron4j.ITask
;
import
com.jfinal.plugin.cron4j.ITask
;
...
@@ -25,13 +25,13 @@ public class GoodSync implements ITask {
...
@@ -25,13 +25,13 @@ public class GoodSync implements ITask {
if
(
PropKit
.
getBoolean
(
"updateRedis"
))
{
if
(
PropKit
.
getBoolean
(
"updateRedis"
))
{
// 同步用户数据
// 同步用户数据
java
.
lang
.
System
.
err
.
println
(
"同步用户信息"
);
java
.
lang
.
System
.
err
.
println
(
"同步用户信息"
);
User
.
dao
.
findAll
().
forEach
(
InfoUser:
:
saveUser
);
As
User
.
dao
.
findAll
().
forEach
(
InfoUser:
:
saveUser
);
// 同步系统数据
// 同步系统数据
java
.
lang
.
System
.
err
.
println
(
"同步系统数据"
);
java
.
lang
.
System
.
err
.
println
(
"同步系统数据"
);
System
.
dao
.
findAll
().
forEach
(
InfoSystem:
:
saveSystem
);
As
System
.
dao
.
findAll
().
forEach
(
InfoSystem:
:
saveSystem
);
// 同步机构数据
// 同步机构数据
java
.
lang
.
System
.
err
.
println
(
"同步机构数据"
);
java
.
lang
.
System
.
err
.
println
(
"同步机构数据"
);
Organ
.
dao
.
findAll
().
forEach
(
InfoOrgan:
:
saveOrgan
);
As
Organ
.
dao
.
findAll
().
forEach
(
InfoOrgan:
:
saveOrgan
);
}
}
}
}
...
...
src/main/java/com/archser/aserver/util/redis/InfoOrgan.java
deleted
100644 → 0
View file @
ea7930fa
package
com
.
archser
.
aserver
.
util
.
redis
;
import
com.alibaba.fastjson.JSONObject
;
import
com.archser.aserver.model.Organ
;
/**
* 20201127 lidecai
* 操作redis中的机构信息
*/
public
class
InfoOrgan
{
private
static
final
String
ORGAN
=
"ORGAN_"
;
/**
* 保存机构信息
*
* @param organ
* @return
*/
public
static
boolean
saveOrgan
(
Organ
organ
)
{
return
RedisConvert
.
saveObject
(
ORGAN
+
organ
.
getId
(),
organ
);
}
/**
* 获取机构信息
* @param organId
* @return
*/
public
static
Organ
getOrgan
(
Integer
organId
){
Object
organObj
=
RedisConvert
.
getObject
(
ORGAN
+
organId
);
Organ
organ
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
organObj
),
Organ
.
class
);
if
(
organ
==
null
){
organ
=
Organ
.
dao
.
findById
(
organId
);
saveOrgan
(
organ
);
}
return
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
organObj
),
Organ
.
class
);
}
}
src/main/java/com/archser/aserver/util/redis/InfoSystem.java
deleted
100644 → 0
View file @
ea7930fa
package
com
.
archser
.
aserver
.
util
.
redis
;
import
com.alibaba.fastjson.JSONObject
;
import
com.archser.aserver.model.System
;
import
com.jfinal.plugin.redis.Redis
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
* 获取系统信息 20201126 lidecai
*/
public
class
InfoSystem
{
private
static
final
String
_INFO
=
"_INFO"
;
private
static
final
String
SYSTEM
=
"SYSTEM_"
;
/**
* 根据名称获取系统信息
*
* @param systemName
* @return
*/
public
static
System
getSystem
(
String
systemName
)
{
Object
object
=
RedisConvert
.
getObject
(
SYSTEM
+
systemName
+
_INFO
);
System
system
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
object
),
System
.
class
);
if
(
system
==
null
||
system
.
getKeyid
()
==
null
)
{
return
getSystemByDatabase
(
systemName
);
}
return
system
;
}
/**
* 备用方案,从数据库获取
*
* @param systemName
* @return
*/
public
static
System
getSystemByDatabase
(
String
systemName
)
{
System
system
=
System
.
dao
.
template
(
"getSystemPrivatekey"
,
systemName
).
findFirst
();
RedisConvert
.
saveObject
(
SYSTEM
+
systemName
+
_INFO
,
system
);
return
system
;
}
/**
* 获取所有系统
* @return
*/
public
static
List
<
System
>
getAllSystem
()
{
Set
<
String
>
keys
=
Redis
.
use
().
keys
(
SYSTEM
+
"*"
);
List
<
System
>
systemList
=
new
ArrayList
<
System
>();
keys
.
forEach
(
system
->
{
systemList
.
add
(
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
Redis
.
use
().
hgetAll
(
system
)),
System
.
class
));
});
return
systemList
;
}
/**
* 保存系统信息
*
* @param system
* @return
*/
public
static
boolean
saveSystem
(
System
system
)
{
return
RedisConvert
.
saveObject
(
SYSTEM
+
system
.
getName
()
+
_INFO
,
system
);
}
/**
* 删除系统信息
*
* @param systemName
* @return
*/
public
static
boolean
deleteSystem
(
String
systemName
)
{
return
RedisConvert
.
deleteKey
(
SYSTEM
+
systemName
+
_INFO
)
>
0
;
}
}
src/main/java/com/archser/aserver/util/redis/InfoUser.java
deleted
100644 → 0
View file @
ea7930fa
package
com
.
archser
.
aserver
.
util
.
redis
;
import
com.archser.aserver.model.User
;
import
com.jfinal.kit.JsonKit
;
/**
* 20201127 lidecai 操作redis中的用户信息
*/
public
class
InfoUser
{
private
static
final
String
_INFO
=
"_INFO"
;
private
static
final
String
USER
=
"USER_"
;
/**
* 获取用户信息
*
* @param userName
* @return
*/
public
static
User
getUser
(
String
userName
)
{
Object
object
=
RedisConvert
.
getObject
(
USER
+
userName
+
_INFO
);
User
user
=
JsonKit
.
parse
(
JsonKit
.
toJson
(
object
),
User
.
class
);
if
(
user
.
getId
()
==
null
)
{
User
userByDataBase
=
getUserByDataBase
(
userName
);
saveUser
(
userByDataBase
);
return
userByDataBase
;
}
return
user
;
}
public
static
boolean
saveUser
(
User
user
)
{
return
RedisConvert
.
saveObject
(
USER
+
user
.
getUsername
()
+
_INFO
,
user
);
}
/**
* 备用方案,从数据库获取用户信息
*
* @param userName
* @return
*/
public
static
User
getUserByDataBase
(
String
userName
)
{
return
User
.
dao
.
template
(
"getUser"
,
userName
).
findFirst
();
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment