Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
wwwanlingxiao
mall
Commits
79c6602f
Commit
79c6602f
authored
Apr 19, 2018
by
zhh
Browse files
aop日志功能完善
parent
2d4dc7e0
Changes
5
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
79c6602f
...
...
@@ -31,7 +31,7 @@ crud操作demo | ✔
集成监控功能 | ✔
包结构调整 | ✔
SpringSecurity登录改为Restful形式 |
SpringAOP通用日志处理 |
SpringAOP通用日志处理 |
✔
### 功能完善
...
...
mall-admin/src/main/java/com/macro/mall/bo/WebLog.java
0 → 100644
View file @
79c6602f
package
com.macro.mall.bo
;
/**
* Controller层的日志封装类
*/
public
class
WebLog
{
/**
* 操作描述
*/
private
String
description
;
/**
* 操作用户
*/
private
String
username
;
/**
* 操作时间
*/
private
Long
startTime
;
/**
* 消耗时间
*/
private
Integer
spendTime
;
/**
* 根路径
*/
private
String
basePath
;
/**
* URI
*/
private
String
uri
;
/**
* URL
*/
private
String
url
;
/**
* 请求类型
*/
private
String
method
;
/**
* IP地址
*/
private
String
ip
;
private
Object
parameter
;
private
Object
result
;
public
String
getDescription
()
{
return
description
;
}
public
void
setDescription
(
String
description
)
{
this
.
description
=
description
;
}
public
String
getUsername
()
{
return
username
;
}
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
public
Long
getStartTime
()
{
return
startTime
;
}
public
void
setStartTime
(
Long
startTime
)
{
this
.
startTime
=
startTime
;
}
public
Integer
getSpendTime
()
{
return
spendTime
;
}
public
void
setSpendTime
(
Integer
spendTime
)
{
this
.
spendTime
=
spendTime
;
}
public
String
getBasePath
()
{
return
basePath
;
}
public
void
setBasePath
(
String
basePath
)
{
this
.
basePath
=
basePath
;
}
public
String
getUri
()
{
return
uri
;
}
public
void
setUri
(
String
uri
)
{
this
.
uri
=
uri
;
}
public
String
getUrl
()
{
return
url
;
}
public
void
setUrl
(
String
url
)
{
this
.
url
=
url
;
}
public
String
getMethod
()
{
return
method
;
}
public
void
setMethod
(
String
method
)
{
this
.
method
=
method
;
}
public
String
getIp
()
{
return
ip
;
}
public
void
setIp
(
String
ip
)
{
this
.
ip
=
ip
;
}
public
Object
getParameter
()
{
return
parameter
;
}
public
void
setParameter
(
Object
parameter
)
{
this
.
parameter
=
parameter
;
}
public
Object
getResult
()
{
return
result
;
}
public
void
setResult
(
Object
result
)
{
this
.
result
=
result
;
}
}
mall-admin/src/main/java/com/macro/mall/component/WebLogAspect.java
View file @
79c6602f
package
com.macro.mall.component
;
import
com.macro.mall.bo.WebLog
;
import
com.macro.mall.util.JsonUtils
;
import
com.macro.mall.util.RequestUtil
;
import
io.swagger.annotations.ApiOperation
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.
annotation.AfterReturning
;
import
org.aspectj.lang.
annotation.Aspect
;
import
org.aspectj.lang.annotation.
Before
;
import
org.aspectj.lang.
annotation.Pointcut
;
import
org.aspectj.lang.
ProceedingJoinPoint
;
import
org.aspectj.lang.
Signature
;
import
org.aspectj.lang.annotation.
*
;
import
org.aspectj.lang.
reflect.MethodSignature
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.Arrays
;
import
java.lang.annotation.Annotation
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Parameter
;
import
java.util.*
;
/**
* 统一日志处理切面
...
...
@@ -30,19 +42,69 @@ public class WebLogAspect {
@Before
(
"webLog()"
)
public
void
doBefore
(
JoinPoint
joinPoint
)
throws
Throwable
{
startTime
.
set
(
System
.
currentTimeMillis
());
}
@AfterReturning
(
value
=
"webLog()"
,
returning
=
"ret"
)
public
void
doAfterReturning
(
Object
ret
)
throws
Throwable
{
}
@Around
(
"webLog()"
)
public
Object
doAround
(
ProceedingJoinPoint
joinPoint
)
throws
Throwable
{
//获取当前请求对象
ServletRequestAttributes
attributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
HttpServletRequest
request
=
attributes
.
getRequest
();
//记录请求信息(可以记录到数据库中)
String
classMethod
=
joinPoint
.
getSignature
().
getDeclaringTypeName
()
+
"."
+
joinPoint
.
getSignature
().
getName
();
String
args
=
Arrays
.
toString
(
joinPoint
.
getArgs
());
LOGGER
.
info
(
"HTTP URL:{}; HTTP_METHOD:{}; IP:{}; CLASS_METHOD:{}; ARGS:{}"
,
request
.
getRequestURL
(),
request
.
getMethod
(),
request
.
getRemoteAddr
(),
classMethod
,
args
);
WebLog
webLog
=
new
WebLog
();
Object
result
=
joinPoint
.
proceed
();
Signature
signature
=
joinPoint
.
getSignature
();
MethodSignature
methodSignature
=
(
MethodSignature
)
signature
;
Method
method
=
methodSignature
.
getMethod
();
if
(
method
.
isAnnotationPresent
(
ApiOperation
.
class
))
{
ApiOperation
log
=
method
.
getAnnotation
(
ApiOperation
.
class
);
webLog
.
setDescription
(
log
.
value
());
}
long
endTime
=
System
.
currentTimeMillis
();
webLog
.
setBasePath
(
RequestUtil
.
getBasePath
(
request
));
webLog
.
setIp
(
request
.
getRemoteUser
());
webLog
.
setMethod
(
request
.
getMethod
());
webLog
.
setParameter
(
getParameter
(
method
,
joinPoint
.
getArgs
()));
webLog
.
setResult
(
result
);
webLog
.
setSpendTime
((
int
)
(
endTime
-
startTime
.
get
()));
webLog
.
setStartTime
(
startTime
.
get
());
webLog
.
setUri
(
request
.
getRequestURI
());
webLog
.
setUrl
(
request
.
getRequestURL
().
toString
());
LOGGER
.
info
(
"{}"
,
JsonUtils
.
objectToJson
(
webLog
));
return
result
;
}
@AfterReturning
(
value
=
"webLog()"
,
returning
=
"ret"
)
public
void
doAfterReturning
(
Object
ret
)
throws
Throwable
{
long
costTime
=
System
.
currentTimeMillis
()
-
startTime
.
get
();
LOGGER
.
info
(
"RESPONSE:{}; COST_TIME:{}ms"
,
ret
,
costTime
);
/**
* 根据方法和传入的参数获取请求参数
*/
private
Object
getParameter
(
Method
method
,
Object
[]
args
)
{
List
<
Object
>
argList
=
new
ArrayList
<>();
Parameter
[]
parameters
=
method
.
getParameters
();
for
(
int
i
=
0
;
i
<
parameters
.
length
;
i
++)
{
RequestBody
requestBody
=
parameters
[
i
].
getAnnotation
(
RequestBody
.
class
);
if
(
requestBody
!=
null
)
{
argList
.
add
(
args
[
i
]);
}
RequestParam
requestParam
=
parameters
[
i
].
getAnnotation
(
RequestParam
.
class
);
if
(
requestParam
!=
null
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
String
key
=
parameters
[
i
].
getName
();
if
(!
StringUtils
.
isEmpty
(
requestParam
.
value
()))
{
key
=
requestParam
.
value
();
}
map
.
put
(
key
,
args
[
i
]);
argList
.
add
(
map
);
}
}
if
(
argList
.
size
()
==
0
)
{
return
null
;
}
else
if
(
argList
.
size
()
==
1
)
{
return
argList
.
get
(
0
);
}
else
{
return
argList
;
}
}
}
mall-admin/src/main/java/com/macro/mall/controller/PmsBrandController.java
View file @
79c6602f
...
...
@@ -28,21 +28,21 @@ public class PmsBrandController {
@ApiOperation
(
value
=
"获取全部品牌列表"
)
@RequestMapping
(
value
=
"/listAll"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
public
Object
get
Brand
List
()
{
public
Object
getList
()
{
return
new
CommonResult
().
success
(
brandService
.
listAllBrand
());
}
@ApiOperation
(
value
=
"添加品牌"
)
@RequestMapping
(
value
=
"/create"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
public
Object
create
Brand
(
@Validated
@RequestBody
PmsBrandParam
pmsBrand
,
BindingResult
result
)
{
public
Object
create
(
@Validated
@RequestBody
PmsBrandParam
pmsBrand
,
BindingResult
result
)
{
if
(
result
.
hasErrors
())
{
return
new
CommonResult
().
validateFailed
(
result
.
getFieldError
().
getDefaultMessage
());
}
CommonResult
commonResult
;
int
count
=
brandService
.
createBrand
(
pmsBrand
);
if
(
count
==
1
)
{
commonResult
=
new
CommonResult
().
success
(
pmsBrand
);
commonResult
=
new
CommonResult
().
success
(
count
);
}
else
{
commonResult
=
new
CommonResult
().
failed
();
}
...
...
@@ -59,7 +59,7 @@ public class PmsBrandController {
CommonResult
commonResult
;
int
count
=
brandService
.
updateBrand
(
id
,
pmsBrandParam
);
if
(
count
==
1
)
{
commonResult
=
new
CommonResult
().
success
(
pmsBrandParam
);
commonResult
=
new
CommonResult
().
success
(
count
);
}
else
{
commonResult
=
new
CommonResult
().
failed
();
}
...
...
@@ -69,7 +69,7 @@ public class PmsBrandController {
@ApiOperation
(
value
=
"删除品牌"
)
@RequestMapping
(
value
=
"/delete/{id}"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
public
Object
delete
Brand
(
@PathVariable
(
"id"
)
Long
id
)
{
public
Object
delete
(
@PathVariable
(
"id"
)
Long
id
)
{
int
count
=
brandService
.
deleteBrand
(
id
);
if
(
count
==
1
)
{
return
new
CommonResult
().
success
(
null
);
...
...
@@ -81,7 +81,7 @@ public class PmsBrandController {
@ApiOperation
(
value
=
"根据品牌名称分页获取品牌列表"
)
@RequestMapping
(
value
=
"/list"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
public
Object
listBrand
(
@RequestParam
(
value
=
"keyword"
,
required
=
false
)
String
keyword
,
public
Object
getList
(
@RequestParam
(
value
=
"keyword"
,
required
=
false
)
String
keyword
,
@RequestParam
(
value
=
"pageNum"
,
defaultValue
=
"1"
)
Integer
pageNum
,
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"5"
)
Integer
pageSize
)
{
return
new
CommonResult
().
pageSuccess
(
brandService
.
listBrand
(
keyword
,
pageNum
,
pageSize
));
...
...
@@ -90,14 +90,14 @@ public class PmsBrandController {
@ApiOperation
(
value
=
"根据编号查询品牌信息"
)
@RequestMapping
(
value
=
"/{id}"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
public
Object
get
Brand
(
@PathVariable
(
"id"
)
Long
id
)
{
public
Object
get
Item
(
@PathVariable
(
"id"
)
Long
id
)
{
return
new
CommonResult
().
success
(
brandService
.
getBrand
(
id
));
}
@ApiOperation
(
value
=
"批量删除品牌"
)
@RequestMapping
(
value
=
"/delete/batch"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
public
Object
deleteB
randB
atch
(
@RequestParam
(
"ids"
)
List
<
Long
>
ids
)
{
public
Object
deleteBatch
(
@RequestParam
(
"ids"
)
List
<
Long
>
ids
)
{
int
count
=
brandService
.
deleteBrand
(
ids
);
if
(
count
>
0
)
{
return
new
CommonResult
().
success
(
count
);
...
...
mall-admin/src/main/java/com/macro/mall/util/RequestUtil.java
0 → 100644
View file @
79c6602f
package
com.macro.mall.util
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.util.Enumeration
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* request工具类
*/
public
class
RequestUtil
{
/**
* 移除request指定参数
*/
public
String
removeParam
(
HttpServletRequest
request
,
String
paramName
)
{
String
queryString
=
""
;
Enumeration
keys
=
request
.
getParameterNames
();
while
(
keys
.
hasMoreElements
())
{
String
key
=
(
String
)
keys
.
nextElement
();
if
(
key
.
equals
(
paramName
))
{
continue
;
}
if
(
""
.
equals
(
queryString
))
{
queryString
=
key
+
"="
+
request
.
getParameter
(
key
);
}
else
{
queryString
+=
"&"
+
key
+
"="
+
request
.
getParameter
(
key
);
}
}
return
queryString
;
}
/**
* 获取请求basePath
*/
public
static
String
getBasePath
(
HttpServletRequest
request
)
{
StringBuffer
basePath
=
new
StringBuffer
();
String
scheme
=
request
.
getScheme
();
String
domain
=
request
.
getServerName
();
int
port
=
request
.
getServerPort
();
basePath
.
append
(
scheme
);
basePath
.
append
(
"://"
);
basePath
.
append
(
domain
);
if
(
"http"
.
equalsIgnoreCase
(
scheme
)
&&
80
!=
port
)
{
basePath
.
append
(
":"
).
append
(
String
.
valueOf
(
port
));
}
else
if
(
"https"
.
equalsIgnoreCase
(
scheme
)
&&
port
!=
443
)
{
basePath
.
append
(
":"
).
append
(
String
.
valueOf
(
port
));
}
return
basePath
.
toString
();
}
/**
* 请求中参数转Map<String, String>,for支付宝异步回调,平时建议直接使用request.getParameterMap(),返回Map<String, String[]>
*/
public
static
Map
<
String
,
String
>
getParameterMap
(
HttpServletRequest
request
)
{
Map
<
String
,
String
>
result
=
new
HashMap
<>();
Enumeration
parameterNames
=
request
.
getParameterNames
();
while
(
parameterNames
.
hasMoreElements
())
{
String
parameterName
=
(
String
)
parameterNames
.
nextElement
();
result
.
put
(
parameterName
,
request
.
getParameter
(
parameterName
));
}
return
result
;
}
}
Write
Preview
Supports
Markdown
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