Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
B
byh-family-doctor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
包
包
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
杨凯
byh-family-doctor
Commits
519c55e4
提交
519c55e4
authored
3月 22, 2024
作者:
杨凯
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:家庭医生初始化
上级
fd87165b
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
37 行增加
和
82 行删除
+37
-82
LogAspect.java
.../com/ebaiyihui/family/doctor/server/aspect/LogAspect.java
+37
-82
PatientSignMapper.xml
...or-server/src/main/resources/mapper/PatientSignMapper.xml
+0
-0
没有找到文件。
family-doctor-server/src/main/java/com/ebaiyihui/family/doctor/server/aspect/LogAspect.java
浏览文件 @
519c55e4
package
com
.
ebaiyihui
.
family
.
doctor
.
server
.
aspect
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.Signature
;
import
org.aspectj.lang.annotation.Around
;
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.reflect.MethodSignature
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.context.request.RequestAttributes
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.Method
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Arrays
;
/**
* @program chenmt-rides
...
...
@@ -34,87 +30,46 @@ import java.util.Map;
public
class
LogAspect
{
//xyz.chenmt.www.chenmtrides.controller包下的所有类中的所有方法,".."表示所有方法中的参数不限个数;
//切入点,其中execution用于使用切面的连接点。使用方法:execution(方法修饰符(可选)
// 返回类型 方法名 参数 异常模式(可选)) ,可以使用通配符匹配字符,*可以匹配任意字符。
@Pointcut
(
"execution(public * com.ebaiyihui.family.doctor.server.controller.*.*(..))"
)
public
void
LogAspect
(){}
//环绕通知,就是可以在执行前后都使用,这个方法参数必须为ProceedingJoinPoint,proceed()方法就是被切面的方法,
// 上面四个方法可以使用JoinPoint,JoinPoint包含了类名,被切面的方法名,参数等信息。
@Around
(
"LogAspect()"
)
public
Object
deAround
(
ProceedingJoinPoint
pjp
)
throws
Throwable
{
RequestAttributes
ra
=
RequestContextHolder
.
getRequestAttributes
();
ServletRequestAttributes
sra
=
(
ServletRequestAttributes
)
ra
;
HttpServletRequest
request
=
sra
.
getRequest
();
//ip地址
String
ipaddress
;
if
(
request
.
getHeader
(
"x-forwarded-for"
)
==
null
)
{
ipaddress
=
request
.
getRemoteAddr
();
}
else
{
ipaddress
=
request
.
getHeader
(
"x-forwarded-for"
);
}
String
url
=
request
.
getRequestURL
().
toString
();
String
method
=
request
.
getMethod
();
String
queryString
=
request
.
getQueryString
();
Object
[]
args
=
pjp
.
getArgs
();
String
params
=
""
;
//获取请求参数集合并进行遍历拼接
if
(
args
.
length
>
0
){
if
(
"POST"
.
equals
(
method
)){
Object
object
=
args
[
0
];
Map
map
=
getKeyAndValue
(
object
);
params
=
JSON
.
toJSONString
(
map
);
;
}
else
if
(
"GET"
.
equals
(
method
)){
params
=
queryString
;
}
}
Signature
signature
=
pjp
.
getSignature
();
MethodSignature
methodSignature
=
(
MethodSignature
)
signature
;
Method
targetMethod
=
methodSignature
.
getMethod
();
Method
realMethod
=
pjp
.
getTarget
().
getClass
().
getDeclaredMethod
(
signature
.
getName
(),
targetMethod
.
getParameterTypes
());
ApiOperation
operation
=
realMethod
.
getAnnotation
(
ApiOperation
.
class
);
if
(
null
!=
operation
){
log
.
info
(
"请求开始===方法描述:{},请求方法:{},请求地址:{},请求ip:{},请求类型:{},请求参数:{}"
,
operation
.
value
(),
realMethod
.
getName
(),
url
,
ipaddress
,
method
,
params
);
}
else
{
log
.
info
(
"请求开始===请求方法:{},请求地址:{},请求ip:{},请求类型:{},请求参数:{}"
,
realMethod
.
getName
(),
url
,
ipaddress
,
method
,
params
);
}
// result的值就是被拦截方法的返回值
// Object result = pjp.proceed();
// log.info("请求结束===返回值{}", JSONObject.toJSON(result));
return
pjp
.
proceed
();
public
void
LogAspect
()
{
}
Long
time
=
0L
;
@Before
(
"LogAspect()"
)
public
void
doBefore
(
JoinPoint
joinPoint
)
throws
Throwable
{
time
=
System
.
currentTimeMillis
();
/**
* 接收到请求,记录请求内容
*/
ServletRequestAttributes
attributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
HttpServletRequest
request
=
attributes
.
getRequest
();
Method
targetMethod
=
((
MethodSignature
)
joinPoint
.
getSignature
()).
getMethod
();
Method
realMethod
=
joinPoint
.
getTarget
().
getClass
().
getDeclaredMethod
(
joinPoint
.
getSignature
().
getName
(),
targetMethod
.
getParameterTypes
());
ApiOperation
operation
=
realMethod
.
getAnnotation
(
ApiOperation
.
class
);
/**
* 记录下请求内容
*/
log
.
info
(
"请求开始===方法描述:{},\n请求方法:{},\n请求地址:{},\n请求ip:{},\n请求类型:{},\n请求参数:{}"
,
operation
.
value
(),
joinPoint
.
getSignature
().
getName
(),
request
.
getRequestURL
().
toString
(),
request
.
getRemoteAddr
(),
request
.
getMethod
(),
JSON
.
toJSONString
(
Arrays
.
toString
(
joinPoint
.
getArgs
())));
}
@AfterReturning
(
returning
=
"ret"
,
pointcut
=
"LogAspect()"
)
public
void
doAfterReturning
(
Object
ret
)
throws
Throwable
{
public
static
Map
<
String
,
Object
>
getKeyAndValue
(
Object
obj
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
// 得到类对象
Class
userCla
=
(
Class
)
obj
.
getClass
();
/* 得到类中的所有属性集合 */
Field
[]
fs
=
userCla
.
getDeclaredFields
();
for
(
int
i
=
0
;
i
<
fs
.
length
;
i
++)
{
Field
f
=
fs
[
i
];
f
.
setAccessible
(
true
);
// 设置些属性是可以访问的
Object
val
;
try
{
val
=
f
.
get
(
obj
);
// 得到此属性的值
map
.
put
(
f
.
getName
(),
val
);
// 设置键值
}
catch
(
IllegalArgumentException
e
)
{
e
.
printStackTrace
();
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
}
return
map
;
/**
* 处理完请求,返回内容
*/
log
.
info
(
"请求结束===返回值==>{}"
,
JSON
.
toJSONString
(
ret
));
log
.
info
(
"=======请求接口所需时间====>{}"
,
JSON
.
toJSONString
((
System
.
currentTimeMillis
()
-
time
)));
}
}
family-doctor-server/src/main/resources/mapper/
ServiceConfigService
Mapper.xml
→
family-doctor-server/src/main/resources/mapper/
PatientSign
Mapper.xml
浏览文件 @
519c55e4
File moved
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论