package com.iailab.module.infra.dal.mysql.logger;
|
|
import com.iailab.framework.common.pojo.PageResult;
|
import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
|
import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import com.iailab.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO;
|
import com.iailab.module.infra.dal.dataobject.logger.ApiAccessLogDO;
|
import org.apache.ibatis.annotations.Delete;
|
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Param;
|
|
import java.time.LocalDateTime;
|
|
/**
|
* API 访问日志 Mapper
|
*
|
* @author iailab
|
*/
|
@Mapper
|
public interface ApiAccessLogMapper extends BaseMapperX<ApiAccessLogDO> {
|
|
default PageResult<ApiAccessLogDO> selectPage(ApiAccessLogPageReqVO reqVO) {
|
return selectPage(reqVO, new LambdaQueryWrapperX<ApiAccessLogDO>()
|
.eqIfPresent(ApiAccessLogDO::getUserId, reqVO.getUserId())
|
.eqIfPresent(ApiAccessLogDO::getUserType, reqVO.getUserType())
|
.eqIfPresent(ApiAccessLogDO::getApplicationName, reqVO.getApplicationName())
|
.likeIfPresent(ApiAccessLogDO::getRequestUrl, reqVO.getRequestUrl())
|
.betweenIfPresent(ApiAccessLogDO::getBeginTime, reqVO.getBeginTime())
|
.geIfPresent(ApiAccessLogDO::getDuration, reqVO.getDuration())
|
.eqIfPresent(ApiAccessLogDO::getResultCode, reqVO.getResultCode())
|
.orderByDesc(ApiAccessLogDO::getId)
|
);
|
}
|
|
/**
|
* 物理删除指定时间之前的日志
|
*
|
* @param createTime 最大时间
|
* @param limit 删除条数,防止一次删除太多
|
* @return 删除条数
|
*/
|
@Delete("DELETE FROM infra_api_access_log WHERE create_time < #{createTime} LIMIT #{limit}")
|
Integer deleteByCreateTimeLt(@Param("createTime") LocalDateTime createTime, @Param("limit") Integer limit);
|
|
}
|