@@ -11,9 +11,9 @@ import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest ;
import lombok.extern.slf4j.Slf4j ;
import java.util.Collections ;
import java.util.List ;
// TODO @puhui999: LogRecordServiceImpl 改成这个名字哈
/**
* 操作日志 ILogRecordService 实现类
*
@@ -26,11 +26,11 @@ public class ILogRecordServiceImpl implements ILogRecordService {
@Resource
private OperateLogApi operateLogApi ;
@Override
public void record ( LogRecord logRecord ) {
// 1. 补全通用字段
OperateLogV2CreateReqDTO reqDTO = new OperateLogV2CreateReqDTO ( ) ;
// 补全通用字段
reqDTO . setTraceId ( TracerUtils . getTraceId ( ) ) ;
// 补充用户信息
fillUserFields ( reqDTO ) ;
@@ -38,22 +38,24 @@ public class ILogRecordServiceImpl implements ILogRecordService {
fillModuleFields ( reqDTO , logRecord ) ;
// 补全请求信息
fillRequestFields ( reqDTO ) ;
// 异步记录日志
// 2. 异步记录日志
operateLogApi . createOperateLogV2 ( reqDTO ) ;
// TODO 测试结束删除或搞个开关
log . info ( " 操作日志 ===> {} " , reqDTO ) ;
}
private static void fillUserFields ( OperateLogV2CreateReqDTO reqDTO ) {
// TODO @puhui999: 使用 SecurityFrameworkUtils。因为要考虑, rpc、mq、job, 它其实不是 web;
reqDTO . setUserId ( WebFrameworkUtils . getLoginUserId ( ) ) ;
reqDTO . setUserType ( WebFrameworkUtils . getLoginUserType ( ) ) ;
}
public static void fillModuleFields ( OperateLogV2CreateReqDTO reqDTO , LogRecord logRecord ) {
reqDTO . setType ( logRecord . getType ( ) ) ; // 大模块类型如 crm 客户
reqDTO . setSubType ( logRecord . getSubType ( ) ) ; // 操作名称如 转移客户
reqDTO . setBizId ( Long . parseLong ( logRecord . getBizNo ( ) ) ) ; // 操作模块 业务编号
reqDTO . setAction ( logRecord . getAction ( ) ) ; // 例如说, 修改编号为 1 的用户信息,将性别从男改成女,将姓名从芋道改成源码。
reqDTO . setType ( logRecord . getType ( ) ) ; // 大模块类型, 例如: CRM 客户
reqDTO . setSubType ( logRecord . getSubType ( ) ) ; // 操作名称,例如: 转移客户
reqDTO . setBizId ( Long . parseLong ( logRecord . getBizNo ( ) ) ) ; // 业务编号,例如:客户 编号
reqDTO . setAction ( logRecord . getAction ( ) ) ; // 操作内容,例如: 修改编号为 1 的用户信息,将性别从男改成女,将姓名从芋道改成源码。
reqDTO . setExtra ( logRecord . getExtra ( ) ) ; // 拓展字段,有些复杂的业务,需要记录一些字段 ( JSON 格式 ),例如说,记录订单编号,{ orderId: "1"}
}
@@ -72,12 +74,12 @@ public class ILogRecordServiceImpl implements ILogRecordService {
@Override
public List < LogRecord > queryLog ( String bizNo , String type ) {
return Collec tions . emptyList ( ) ;
throw new UnsupportedOperationExcep tion( " 使用 OperateLogApi 进行操作日志的查询 " ) ;
}
@Override
public List < LogRecord > queryLogByBizNo ( String bizNo , String type , String subType ) {
return Collec tions . emptyList ( ) ;
throw new UnsupportedOperationExcep tion( " 使用 OperateLogApi 进行操作日志的查询 " ) ;
}
}
}