perf:操作日志执行批量插入
This commit is contained in:
@@ -6,8 +6,9 @@ import cn.hutool.core.util.ArrayUtil;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.tiesheng.annotation.operation.OperationIgnore;
|
import com.tiesheng.annotation.operation.OperationIgnore;
|
||||||
import com.tiesheng.annotation.operation.OperationLog;
|
import com.tiesheng.annotation.operation.OperationLog;
|
||||||
import com.tiesheng.web.service.CoreLogService;
|
|
||||||
import com.tiesheng.util.ServletKit;
|
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.ProceedingJoinPoint;
|
||||||
import org.aspectj.lang.annotation.Around;
|
import org.aspectj.lang.annotation.Around;
|
||||||
import org.aspectj.lang.annotation.Aspect;
|
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;
|
return response;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.tiesheng.web.pojos.dao.CoreLogOperation;
|
import com.tiesheng.web.pojos.dao.CoreLogOperation;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface CoreLogOperationMapper extends BaseMapper<CoreLogOperation> {
|
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);
|
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.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.thread.ThreadUtil;
|
import cn.hutool.core.thread.ThreadUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.extra.servlet.ServletUtil;
|
import cn.hutool.extra.servlet.ServletUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
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.CoreLogLoginMapper;
|
||||||
import com.tiesheng.web.mapper.CoreLogMessageMapper;
|
import com.tiesheng.web.mapper.CoreLogMessageMapper;
|
||||||
import com.tiesheng.web.mapper.CoreLogOperationMapper;
|
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.pojos.vo.ProcessDetailVo;
|
||||||
import com.tiesheng.web.util.ProcessImportConsumer;
|
import com.tiesheng.web.util.ProcessImportConsumer;
|
||||||
import com.tiesheng.web.util.ProcessSyncConsumer;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -38,6 +38,11 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLogOperation> {
|
public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLogOperation> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 日志缓存
|
||||||
|
*/
|
||||||
|
private static final List<CoreLogOperation> cacheOperations = new ArrayList<>();
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
TieshengWebConfigurer tieshengWebConfigurer;
|
TieshengWebConfigurer tieshengWebConfigurer;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -177,14 +182,19 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
|
|||||||
/**
|
/**
|
||||||
* 添加操作日志
|
* 添加操作日志
|
||||||
*/
|
*/
|
||||||
public void addOperationLog(String title, String subject, Object params) {
|
public void addOperationLog(TokenBean tokenBean, String title, String subject, Object params) {
|
||||||
TokenBean tokenBean = TsTokenConfig.getWithoutThr();
|
|
||||||
if (tokenBean == null || StrUtil.isEmpty(tokenBean.getId())) {
|
RequestUserInfo requestUserInfo = null;
|
||||||
return;
|
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();
|
CoreLogOperation operation = new CoreLogOperation();
|
||||||
|
operation.setCreateTime(DateUtil.date());
|
||||||
|
operation.setUpdateTime(DateUtil.date());
|
||||||
operation.setUserId(requestUserInfo.getId());
|
operation.setUserId(requestUserInfo.getId());
|
||||||
operation.setUserName(requestUserInfo.getName());
|
operation.setUserName(requestUserInfo.getName());
|
||||||
operation.setTitle(title);
|
operation.setTitle(title);
|
||||||
@@ -192,7 +202,15 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
|
|||||||
if (params != null) {
|
if (params != null) {
|
||||||
operation.setParams(JSONUtil.toJsonStr(params));
|
operation.setParams(JSONUtil.toJsonStr(params));
|
||||||
}
|
}
|
||||||
save(operation);
|
|
||||||
|
synchronized (CoreLogOperation.class) {
|
||||||
|
cacheOperations.add(operation);
|
||||||
|
if (cacheOperations.size() >= 100) {
|
||||||
|
getBaseMapper().batchInsert(cacheOperations);
|
||||||
|
cacheOperations.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -24,4 +24,18 @@
|
|||||||
${ew.customSqlSegment}
|
${ew.customSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<insert id="batchInsert">
|
||||||
|
insert into core_log_operation(id, create_time, update_time, is_deleted, user_id, user_name, title, subject,
|
||||||
|
params)
|
||||||
|
values
|
||||||
|
<foreach collection="list" item="it" separator=",">
|
||||||
|
(uuid(), #{it.createTime}, #{it.updateTime}, 0,
|
||||||
|
#{it.userId},
|
||||||
|
#{it.userName},
|
||||||
|
#{it.title},
|
||||||
|
#{it.subject},
|
||||||
|
#{it.params})
|
||||||
|
</foreach>
|
||||||
|
</insert>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user