Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lakernote
EasyAdmin
提交
9de63f46
E
EasyAdmin
项目概览
lakernote
/
EasyAdmin
9 个月 前同步成功
通知
14
Star
3
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
EasyAdmin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
9de63f46
编写于
7月 30, 2022
作者:
lakernote
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化trace
上级
fa51b12c
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
93 addition
and
24 deletion
+93
-24
src/main/java/com/laker/admin/framework/aop/trace/LakerIgnoreTrace.java
...com/laker/admin/framework/aop/trace/LakerIgnoreTrace.java
+10
-0
src/main/java/com/laker/admin/framework/aop/trace/TraceCodeBlock.java
...a/com/laker/admin/framework/aop/trace/TraceCodeBlock.java
+39
-0
src/main/java/com/laker/admin/framework/aop/trace/TraceContext.java
...ava/com/laker/admin/framework/aop/trace/TraceContext.java
+6
-5
src/main/java/com/laker/admin/framework/aop/trace/TracingAspect.java
...va/com/laker/admin/framework/aop/trace/TracingAspect.java
+15
-3
src/main/java/com/laker/admin/framework/aop/trace/codeblock/ICodeBlock.java
...laker/admin/framework/aop/trace/codeblock/ICodeBlock.java
+10
-0
src/main/java/com/laker/admin/module/ext/controller/ExtLeaveController.java
...laker/admin/module/ext/controller/ExtLeaveController.java
+9
-2
src/main/java/com/laker/admin/module/ext/controller/ExtLogController.java
...m/laker/admin/module/ext/controller/ExtLogController.java
+2
-0
src/main/java/com/laker/admin/module/sys/service/impl/SysUserServiceImpl.java
...ker/admin/module/sys/service/impl/SysUserServiceImpl.java
+2
-0
src/test/java/com/laker/admin/module/sys/controller/SysRoleControllerTest.java
...er/admin/module/sys/controller/SysRoleControllerTest.java
+0
-14
未找到文件。
src/main/java/com/laker/admin/framework/aop/trace/LakerIgnoreTrace.java
0 → 100644
浏览文件 @
9de63f46
package
com.laker.admin.framework.aop.trace
;
import
java.lang.annotation.*
;
@Target
({
ElementType
.
METHOD
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
public
@interface
LakerIgnoreTrace
{
}
src/main/java/com/laker/admin/framework/aop/trace/TraceCodeBlock.java
0 → 100644
浏览文件 @
9de63f46
package
com.laker.admin.framework.aop.trace
;
import
java.util.function.IntConsumer
;
import
java.util.function.Supplier
;
/**
* @author laker
*/
public
class
TraceCodeBlock
{
/**
* 有返回值
*
* @param spanName
* @param supplier
* @param <T>
* @return
*/
public
static
<
T
>
T
trace
(
String
spanName
,
Supplier
<
T
>
supplier
)
{
try
{
TraceContext
.
addSpan
(
spanName
);
return
supplier
.
get
();
}
finally
{
TraceContext
.
stopSpan
(
200
);
}
}
/**
* 无返回值调用
*/
public
static
void
trace
(
String
spanName
,
IntConsumer
function
)
{
try
{
TraceContext
.
addSpan
(
spanName
);
function
.
accept
(
0
);
}
finally
{
TraceContext
.
stopSpan
(
200
);
}
}
}
src/main/java/com/laker/admin/framework/aop/trace/TraceContext.java
浏览文件 @
9de63f46
...
...
@@ -16,9 +16,13 @@ public class TraceContext {
public
static
void
addSpan
(
ProceedingJoinPoint
pjp
)
{
MethodSignature
methodSignature
=
((
MethodSignature
)
pjp
.
getSignature
());
String
className
=
methodSignature
.
getMethod
().
getDeclaringClass
().
getName
();
String
methodName
=
methodSignature
.
getMethod
().
getName
();
addSpan
(
className
+
"."
+
methodName
);
}
public
static
void
addSpan
(
String
spanName
)
{
Trace
trace
=
null
;
if
(
null
==
traceThreadLocal
.
get
())
{
trace
=
new
Trace
();
...
...
@@ -26,11 +30,8 @@ public class TraceContext {
}
else
{
trace
=
traceThreadLocal
.
get
();
}
Span
span
=
new
Span
();
span
.
setId
(
className
+
"."
+
methodName
);
span
.
setClassName
(
className
);
span
.
setMethodName
(
methodName
);
span
.
setId
(
spanName
);
span
.
setStartTime
(
System
.
currentTimeMillis
());
trace
.
addSpan
(
span
);
}
...
...
src/main/java/com/laker/admin/framework/aop/trace/TracingAspect.java
浏览文件 @
9de63f46
...
...
@@ -6,12 +6,13 @@ import org.aspectj.lang.annotation.Around;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
//
@Component
@Component
@Slf4j
@Aspect
public
class
TracingAspect
{
@Value
(
"${tracing.time:
200
}"
)
@Value
(
"${tracing.time:
1
}"
)
private
long
time
;
/**
...
...
@@ -44,6 +45,17 @@ public class TracingAspect {
public
void
withinAspect
()
{
}
/**
* 拦截【方法】上有@LakerIgnoreTrace的注解
* 使用场景
* - @LakerTrace注解在类上,或者包扫描到了整个类,但是其中的某个方法不想拦截
* - 在方法上注解@LakerIgnoreTrace即可
*/
@Pointcut
(
"!@annotation(com.laker.admin.framework.aop.trace.LakerIgnoreTrace)"
)
public
void
annotationIgnoreAspect
()
{
}
@Pointcut
(
"execution(* com.laker..mapper.*.*(..))"
)
public
void
mapperAspect
()
{
}
...
...
@@ -57,7 +69,7 @@ public class TracingAspect {
}
//@Around("controllerAspect() || serviceAspect() || mapperAspect() || remoteAspect()")
@Around
(
"
withinAspect() || remot
eAspect()"
)
@Around
(
"
(withinAspect() || annotationAspect()) && annotationIgnor
eAspect()"
)
public
Object
around
(
final
ProceedingJoinPoint
pjp
)
throws
Throwable
{
Object
obj
;
TraceContext
.
addSpan
(
pjp
);
...
...
src/main/java/com/laker/admin/framework/aop/trace/codeblock/ICodeBlock.java
0 → 100644
浏览文件 @
9de63f46
package
com.laker.admin.framework.aop.trace.codeblock
;
/**
* @description: TODO Class description
* @author: lonli2
* @date: 2022/7/30
**/
public
interface
ICodeBlock
{
<
T
>
T
get
();
}
src/main/java/com/laker/admin/module/ext/controller/ExtLeaveController.java
浏览文件 @
9de63f46
...
...
@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.laker.admin.framework.aop.metrics.Metrics
;
import
com.laker.admin.framework.aop.trace.LakerTrace
;
import
com.laker.admin.framework.aop.trace.TraceCodeBlock
;
import
com.laker.admin.framework.model.PageResponse
;
import
com.laker.admin.framework.model.Response
;
import
com.laker.admin.framework.utils.EasyAdminSecurityUtils
;
...
...
@@ -49,12 +51,17 @@ public class ExtLeaveController extends BaseFlowController {
@GetMapping
@ApiOperation
(
value
=
"分页查询"
)
@LakerTrace
public
PageResponse
pageAll
(
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
long
page
,
@RequestParam
(
required
=
false
,
defaultValue
=
"10"
)
long
limit
)
{
Page
roadPage
=
new
Page
<>(
page
,
limit
);
LambdaQueryWrapper
<
ExtLeave
>
queryWrapper
=
new
QueryWrapper
().
lambda
();
queryWrapper
.
orderByDesc
(
ExtLeave:
:
getCreateTime
);
Page
pageList
=
extLeaveService
.
page
(
roadPage
,
queryWrapper
);
// Page pageList = extLeaveService.page(roadPage, queryWrapper);
IPage
pageList
=
TraceCodeBlock
.
trace
(
"leaveService.page"
,
()
->
extLeaveService
.
page
(
roadPage
,
queryWrapper
));
TraceCodeBlock
.
trace
(
"xxxmodule.xxmethod"
,
value
->
System
.
out
.
println
(
DateUtil
.
now
()));
List
<
ExtLeave
>
records
=
pageList
.
getRecords
();
records
.
forEach
(
extLeave
->
{
extLeave
.
setCreateUser
(
sysUserService
.
getUserAndDeptById
(
extLeave
.
getCreateBy
()));
...
...
@@ -77,7 +84,7 @@ public class ExtLeaveController extends BaseFlowController {
@RequestParam
(
required
=
false
,
defaultValue
=
"10"
)
long
limit
)
{
Page
roadPage
=
new
Page
<>(
page
,
limit
);
QueryWrapper
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
ge
(
"l.leave_day"
,
1
);
queryWrapper
.
ge
(
"l.leave_day"
,
1
);
queryWrapper
.
orderByDesc
(
"l.create_time"
);
IPage
pageList
=
extLeaveService
.
pageV2
(
roadPage
,
queryWrapper
);
return
PageResponse
.
ok
(
pageList
.
getRecords
(),
pageList
.
getTotal
());
...
...
src/main/java/com/laker/admin/module/ext/controller/ExtLogController.java
浏览文件 @
9de63f46
...
...
@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.laker.admin.framework.aop.trace.LakerIgnoreTrace
;
import
com.laker.admin.framework.aop.trace.LakerTrace
;
import
com.laker.admin.framework.model.PageResponse
;
import
com.laker.admin.framework.model.Response
;
...
...
@@ -50,6 +51,7 @@ public class ExtLogController {
@GetMapping
@ApiOperation
(
value
=
"日志分页查询"
)
@SaCheckPermission
(
"log.list"
)
@LakerIgnoreTrace
public
PageResponse
pageAll
(
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
long
page
,
@RequestParam
(
required
=
false
,
defaultValue
=
"10"
)
long
limit
,
String
keyWord
)
{
...
...
src/main/java/com/laker/admin/module/sys/service/impl/SysUserServiceImpl.java
浏览文件 @
9de63f46
package
com.laker.admin.module.sys.service.impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.laker.admin.framework.aop.trace.LakerTrace
;
import
com.laker.admin.framework.ext.mybatis.UserDataPower
;
import
com.laker.admin.module.sys.entity.SysUser
;
import
com.laker.admin.module.sys.mapper.SysDeptMapper
;
...
...
@@ -24,6 +25,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Autowired
SysDeptMapper
deptMapper
;
@LakerTrace
@Override
public
SysUser
getUserAndDeptById
(
Long
userId
)
{
SysUser
user
=
this
.
getById
(
userId
);
...
...
src/test/java/com/laker/admin/module/sys/controller/SysRoleControllerTest.java
浏览文件 @
9de63f46
package
com.laker.admin.module.sys.controller
;
import
cn.dev33.satoken.stp.StpUtil
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.laker.admin.framework.exception.BusinessException
;
import
com.laker.admin.framework.model.ResultTree
;
import
com.laker.admin.module.sys.entity.SysPower
;
import
com.laker.admin.module.sys.entity.SysRole
;
import
com.laker.admin.module.sys.entity.SysRolePower
;
import
com.laker.admin.module.sys.service.ISysMenuService
;
import
com.laker.admin.module.sys.service.ISysRolePowerService
;
import
com.laker.admin.module.sys.service.ISysRoleService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.InjectMocks
;
import
org.mockito.Mock
;
import
org.mockito.internal.matchers.Any
;
import
org.powermock.api.mockito.PowerMockito
;
import
org.powermock.core.classloader.annotations.PrepareForTest
;
import
org.powermock.modules.junit4.PowerMockRunner
;
import
java.util.List
;
import
static
org
.
mockito
.
ArgumentMatchers
.
any
;
/**
...
...
@@ -40,10 +30,6 @@ public class SysRoleControllerTest {
SysRoleController
SysRoleController
;
@Mock
ISysRoleService
sysRoleService
;
@Mock
ISysMenuService
sysMenuService
;
@Mock
ISysRolePowerService
sysRolePowerService
;
@Test
public
void
getRolePower
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录