Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gic-enterprise-base
Overview
Overview
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
base_platform_enterprise
gic-enterprise-base
Commits
d8b11b8f
Commit
d8b11b8f
authored
Nov 07, 2019
by
guojuxing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加操作日志工具类
parent
d9ae14e3
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
157 additions
and
13 deletions
+157
-13
AuthInterceptor.java
.../java/com/gic/enterprise/interceptor/AuthInterceptor.java
+93
-13
LogUtils.java
...ad/src/main/java/com/gic/download/utils/log/LogUtils.java
+64
-0
No files found.
gic-enterprise-common/src/main/java/com/gic/enterprise/interceptor/AuthInterceptor.java
View file @
d8b11b8f
package
com
.
gic
.
enterprise
.
interceptor
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.dubbo.rpc.RpcContext
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.web.method.HandlerMethod
;
import
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.enterprise.ano.IgnoreLogin
;
import
com.gic.enterprise.base.
User
Info
;
import
com.gic.enterprise.base.
Menu
Info
;
import
com.gic.enterprise.constants.Constants
;
import
com.gic.enterprise.context.UserContext
;
import
com.gic.enterprise.error.ErrorCode
;
import
com.gic.enterprise.exception.CommonException
;
import
com.gic.enterprise.utils.UserDetail
;
import
com.gic.enterprise.utils.UserDetailUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.dubbo.rpc.RpcContext
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.web.method.HandlerMethod
;
import
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
AuthInterceptor
extends
HandlerInterceptorAdapter
{
...
...
@@ -53,6 +58,7 @@ public class AuthInterceptor extends HandlerInterceptorAdapter {
return
true
;
}
HandlerMethod
handler
=
(
HandlerMethod
)
object
;
//免登录接口路由
IgnoreLogin
ignoreLogin
=
handler
.
getMethodAnnotation
(
IgnoreLogin
.
class
);
if
(
null
!=
ignoreLogin
)
{
return
true
;
...
...
@@ -60,7 +66,10 @@ public class AuthInterceptor extends HandlerInterceptorAdapter {
//获取uri
String
uri
=
request
.
getRequestURI
();
//操作项标志位
String
isControl
=
request
.
getHeader
(
"isControl"
);
//是否是操作项请求
boolean
isOperationItemRequest
=
StringUtils
.
isNotBlank
(
isControl
);
log
.
info
(
"用户接口访问标志:{}"
,
isControl
);
log
.
info
(
"用户接口访问路由:{}"
,
uri
);
//不需要拦截的路径
...
...
@@ -77,16 +86,52 @@ public class AuthInterceptor extends HandlerInterceptorAdapter {
if
(
ignoreUriAfterLoginMap
.
containsKey
(
uri
))
{
return
true
;
}
//增删改,即操作项类型的操作,需要 获取操作模块,一级、二级的ID和名称
if
(
isOperationItemRequest
)
{
List
<
MenuInfo
>
menuInfoList
=
userDetail
.
getMenuInfoList
();
Map
<
String
,
MenuInfo
>
moduleUrlMap
=
userDetail
.
getModuleUrlMap
();
//页面路径
String
moduleUrl
=
request
.
getHeader
(
"Referer"
);
log
.
info
(
"完整路由:{}"
,
moduleUrl
);
//project_url_for_web + menu_url
moduleUrl
=
getModuleUrl
(
moduleUrl
);
log
.
info
(
"操作模块的路由:{}"
,
moduleUrl
);
//获取当前操作项数据
MenuInfo
menuInfo
=
moduleUrlMap
.
get
(
moduleUrl
);
if
(
menuInfo
!=
null
)
{
Map
<
String
,
MenuInfo
>
tempMap
=
listToMap
(
menuInfoList
);
Integer
temp
=
getOperationModule
(
menuInfo
.
getMenuId
(),
tempMap
);
//获取第二层级的页面
while
(
tempMap
.
get
(
temp
.
toString
()).
getLevel
().
intValue
()
!=
2
)
{
temp
=
getOperationModule
(
tempMap
.
get
(
temp
.
toString
()).
getMenuId
(),
tempMap
);
}
int
secondLevelMenuId
=
tempMap
.
get
(
temp
.
toString
()).
getMenuId
();
String
secondLevelMenuName
=
tempMap
.
get
(
temp
.
toString
()).
getMenuName
();
//获取第一层级的页面
temp
=
getOperationModule
(
tempMap
.
get
(
temp
.
toString
()).
getMenuId
(),
tempMap
);
int
firstLevelMenuId
=
tempMap
.
get
(
temp
.
toString
()).
getMenuId
();
String
firstLevelMenuName
=
tempMap
.
get
(
temp
.
toString
()).
getMenuName
();
log
.
info
(
"一级页面的ID和名称:{},{}"
,
firstLevelMenuId
,
firstLevelMenuName
);
log
.
info
(
"二级页面的ID和名称:{},{}"
,
secondLevelMenuId
,
secondLevelMenuName
);
request
.
setAttribute
(
"moduleMenuId"
,
secondLevelMenuId
);
request
.
setAttribute
(
"moduleMenuName"
,
firstLevelMenuName
+
"-"
+
secondLevelMenuId
);
}
}
//超级管理员不限制
if
(
userDetail
.
getUserInfo
().
getSuperAdmin
().
intValue
()
==
1
)
{
//超级管理员不限制
return
true
;
}
//判断是否有权限
Map
<
String
,
Object
>
menuUrlMap
=
userDetail
.
getMenuUrlMap
();
if
(
menuUrlMap
==
null
||
menuUrlMap
.
isEmpty
())
{
throw
new
CommonException
(
ErrorCode
.
SYSTEM_ERROR
.
getErrorCode
(),
"sorry,您无该页面的访问权限,请联系超级管理员!"
);
}
if
(
StringUtils
.
isNotBlank
(
isControl
))
{
if
(
isOperationItemRequest
)
{
//说明是操作项
//如果匹配上了,说明是没权限
if
(
menuUrlMap
.
containsKey
(
uri
))
{
...
...
@@ -102,4 +147,39 @@ public class AuthInterceptor extends HandlerInterceptorAdapter {
return
true
;
}
private
static
Integer
getOperationModule
(
Integer
menuId
,
Map
<
String
,
MenuInfo
>
tempMap
)
{
MenuInfo
temp
=
tempMap
.
get
(
menuId
.
toString
());
if
(
temp
!=
null
)
{
return
temp
.
getParentId
();
}
return
null
;
}
private
static
Map
<
String
,
MenuInfo
>
listToMap
(
List
<
MenuInfo
>
list
)
{
Map
<
String
,
MenuInfo
>
map
=
new
HashMap
<>(
16
);
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
for
(
MenuInfo
menuInfo
:
list
)
{
map
.
put
(
menuInfo
.
getMenuId
().
toString
(),
menuInfo
);
}
}
return
map
;
}
/**
* 截取域名后面的路径
* @param url
* @return
*/
private
static
String
getModuleUrl
(
String
url
)
{
//形如https://four.gicdev.com/damo-system/account-manage/create-admin
String
regex
=
"/"
;
String
[]
stringArr
=
url
.
split
(
regex
);
//去掉0、1、2
StringBuilder
result
=
new
StringBuilder
();
for
(
int
i
=
3
,
length
=
stringArr
.
length
;
i
<
length
;
i
++)
{
result
.
append
(
regex
).
append
(
stringArr
[
i
]);
}
return
result
.
toString
();
}
}
gic-enterprise-download/src/main/java/com/gic/download/utils/log/LogUtils.java
0 → 100644
View file @
d8b11b8f
package
com
.
gic
.
download
.
utils
.
log
;
import
com.gic.download.utils.ExecutorPoolSingleton
;
import
com.gic.enterprise.context.RequestContext
;
import
com.gic.enterprise.utils.UserDetail
;
import
com.gic.enterprise.utils.UserDetailUtils
;
import
com.gic.log.api.dto.SystemSetLogDTO
;
import
com.gic.log.api.service.LogApiService
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
@Component
public
class
LogUtils
{
private
static
final
Logger
LOGGER
=
LogManager
.
getLogger
(
LogUtils
.
class
);
private
static
LogApiService
logApiService
;
@Autowired
public
void
setLogApiService
(
LogApiService
logApiService
)
{
LogUtils
.
logApiService
=
logApiService
;
}
/**
* 添加日志
* @Title: createLog
* @Description:
* @author guojuxing
* @param content 操作内容
* @param operationObject 操作对象
* @return void
*/
public
void
createLog
(
String
content
,
String
operationObject
)
{
UserDetail
userDetail
=
UserDetailUtils
.
getUserDetail
();
SystemSetLogDTO
logDTO
=
new
SystemSetLogDTO
();
//操作时间
logDTO
.
setCreateTime
(
new
Date
());
//操作人
logDTO
.
setUserId
(
Long
.
valueOf
(
userDetail
.
getUserInfo
().
getUserId
()));
logDTO
.
setUserName
(
userDetail
.
getUserInfo
().
getUserName
());
//操作内容
logDTO
.
setContent
(
content
);
//操作模块
String
moduleMenuName
=
(
String
)
RequestContext
.
getContext
().
getRequest
().
getAttribute
(
"moduleMenuName"
);
Integer
moduleMenuId
=
(
Integer
)
RequestContext
.
getContext
().
getRequest
().
getAttribute
(
"moduleMenuId"
);
logDTO
.
setRelationId
(
Long
.
valueOf
(
moduleMenuId
));
//操作对象
//账号(手机号)?
logDTO
.
setEnterpriesId
(
Long
.
valueOf
(
userDetail
.
getEnterpriseInfo
().
getEnterpriseId
()));
logDTO
.
setEnterpriseName
(
userDetail
.
getEnterpriseInfo
().
getEnterpriseName
());
ExecutorPoolSingleton
.
getInstance
().
executeTask
(
new
Runnable
()
{
@Override
public
void
run
()
{
LOGGER
.
info
(
"添加日志了,恭喜发财。"
);
logApiService
.
saveSystemSetLog
(
logDTO
);
}
});
}
}
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