perf:操作日志执行批量插入
This commit is contained in:
@@ -6,8 +6,9 @@ import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.tiesheng.annotation.operation.OperationIgnore;
|
||||
import com.tiesheng.annotation.operation.OperationLog;
|
||||
import com.tiesheng.web.service.CoreLogService;
|
||||
import com.tiesheng.util.ServletKit;
|
||||
import com.tiesheng.util.config.TsTokenConfig;
|
||||
import com.tiesheng.web.service.CoreLogService;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
@@ -108,7 +109,7 @@ public class OperationAspect {
|
||||
}
|
||||
}
|
||||
|
||||
coreLogService.addOperationLog(title, subject, reqMaps);
|
||||
coreLogService.addOperationLog(TsTokenConfig.getWithoutThr(), title, subject, reqMaps);
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.tiesheng.web.pojos.dao.CoreLogOperation;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface CoreLogOperationMapper extends BaseMapper<CoreLogOperation> {
|
||||
|
||||
|
||||
@@ -20,4 +22,12 @@ public interface CoreLogOperationMapper extends BaseMapper<CoreLogOperation> {
|
||||
Page<CoreLogOperation> page(IPage<CoreLogOperation> page, @Param("ew") QueryWrapper<CoreLogOperation> queryWrapper);
|
||||
|
||||
|
||||
/**
|
||||
* 批量插入日志
|
||||
*
|
||||
* @param coreLogOperations
|
||||
* @return
|
||||
*/
|
||||
int batchInsert(@Param("list") List<CoreLogOperation> coreLogOperations);
|
||||
|
||||
}
|
||||
|
||||
@@ -2,11 +2,17 @@ package com.tiesheng.web.service;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.thread.ThreadUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.servlet.ServletUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.tiesheng.util.ServletKit;
|
||||
import com.tiesheng.util.config.Ip2regionConfig;
|
||||
import com.tiesheng.util.exception.ApiException;
|
||||
import com.tiesheng.util.pojos.TokenBean;
|
||||
import com.tiesheng.util.service.TsServiceBase;
|
||||
import com.tiesheng.web.mapper.CoreLogLoginMapper;
|
||||
import com.tiesheng.web.mapper.CoreLogMessageMapper;
|
||||
import com.tiesheng.web.mapper.CoreLogOperationMapper;
|
||||
@@ -19,12 +25,6 @@ import com.tiesheng.web.pojos.dao.CorePlatformUnique;
|
||||
import com.tiesheng.web.pojos.vo.ProcessDetailVo;
|
||||
import com.tiesheng.web.util.ProcessImportConsumer;
|
||||
import com.tiesheng.web.util.ProcessSyncConsumer;
|
||||
import com.tiesheng.util.config.TsTokenConfig;
|
||||
import com.tiesheng.util.pojos.TokenBean;
|
||||
import com.tiesheng.util.ServletKit;
|
||||
import com.tiesheng.util.config.Ip2regionConfig;
|
||||
import com.tiesheng.util.exception.ApiException;
|
||||
import com.tiesheng.util.service.TsServiceBase;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -38,6 +38,11 @@ import java.util.List;
|
||||
@Service
|
||||
public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLogOperation> {
|
||||
|
||||
/**
|
||||
* 日志缓存
|
||||
*/
|
||||
private static final List<CoreLogOperation> cacheOperations = new ArrayList<>();
|
||||
|
||||
@Autowired
|
||||
TieshengWebConfigurer tieshengWebConfigurer;
|
||||
@Autowired
|
||||
@@ -177,14 +182,19 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
|
||||
/**
|
||||
* 添加操作日志
|
||||
*/
|
||||
public void addOperationLog(String title, String subject, Object params) {
|
||||
TokenBean tokenBean = TsTokenConfig.getWithoutThr();
|
||||
if (tokenBean == null || StrUtil.isEmpty(tokenBean.getId())) {
|
||||
return;
|
||||
public void addOperationLog(TokenBean tokenBean, String title, String subject, Object params) {
|
||||
|
||||
RequestUserInfo requestUserInfo = null;
|
||||
if (tokenBean != null && !StrUtil.isEmpty(tokenBean.getId())) {
|
||||
requestUserInfo = tieshengWebConfigurer.getCurrentUserName(tokenBean);
|
||||
}
|
||||
if (requestUserInfo == null) {
|
||||
requestUserInfo = new RequestUserInfo();
|
||||
}
|
||||
|
||||
RequestUserInfo requestUserInfo = tieshengWebConfigurer.getCurrentUserName(tokenBean);
|
||||
CoreLogOperation operation = new CoreLogOperation();
|
||||
operation.setCreateTime(DateUtil.date());
|
||||
operation.setUpdateTime(DateUtil.date());
|
||||
operation.setUserId(requestUserInfo.getId());
|
||||
operation.setUserName(requestUserInfo.getName());
|
||||
operation.setTitle(title);
|
||||
@@ -192,7 +202,15 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
|
||||
if (params != null) {
|
||||
operation.setParams(JSONUtil.toJsonStr(params));
|
||||
}
|
||||
save(operation);
|
||||
|
||||
synchronized (CoreLogOperation.class) {
|
||||
cacheOperations.add(operation);
|
||||
if (cacheOperations.size() >= 100) {
|
||||
getBaseMapper().batchInsert(cacheOperations);
|
||||
cacheOperations.clear();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user