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.apierrorlog.ApiErrorLogPageReqVO; import com.iailab.module.infra.dal.dataobject.logger.ApiErrorLogDO; 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 ApiErrorLogMapper extends BaseMapperX { default PageResult selectPage(ApiErrorLogPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(ApiErrorLogDO::getUserId, reqVO.getUserId()) .eqIfPresent(ApiErrorLogDO::getUserType, reqVO.getUserType()) .eqIfPresent(ApiErrorLogDO::getApplicationName, reqVO.getApplicationName()) .likeIfPresent(ApiErrorLogDO::getRequestUrl, reqVO.getRequestUrl()) .betweenIfPresent(ApiErrorLogDO::getExceptionTime, reqVO.getExceptionTime()) .eqIfPresent(ApiErrorLogDO::getProcessStatus, reqVO.getProcessStatus()) .orderByDesc(ApiErrorLogDO::getId) ); } /** * 物理删除指定时间之前的日志 * * @param createTime 最大时间 * @param limit 删除条数,防止一次删除太多 * @return 删除条数 */ @Delete("DELETE FROM infra_api_error_log WHERE create_time < #{createTime} LIMIT #{limit}") Integer deleteByCreateTimeLt(@Param("createTime") LocalDateTime createTime, @Param("limit")Integer limit); }