package cn.iocoder.yudao.module.system.dal.mysql.oauth2;
|
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2RefreshTokenDO;
|
import org.apache.ibatis.annotations.Delete;
|
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Param;
|
|
import java.time.LocalDateTime;
|
|
@Mapper
|
public interface OAuth2RefreshTokenMapper extends BaseMapperX<OAuth2RefreshTokenDO> {
|
|
default int deleteByRefreshToken(String refreshToken) {
|
return delete(new LambdaQueryWrapperX<OAuth2RefreshTokenDO>()
|
.eq(OAuth2RefreshTokenDO::getRefreshToken, refreshToken));
|
}
|
|
@TenantIgnore // 获取 token 的时候,需要忽略租户编号。原因是:一些场景下,可能不会传递 tenant-id 请求头,例如说文件上传、积木报表等等
|
default OAuth2RefreshTokenDO selectByRefreshToken(String refreshToken) {
|
return selectOne(OAuth2RefreshTokenDO::getRefreshToken, refreshToken);
|
}
|
|
/**
|
* 物理删除指定过期时间之前的刷新令牌
|
*
|
* @param expiresTime 最大时间
|
* @param limit 删除条数,防止一次删除太多
|
* @return 删除条数
|
*/
|
@Delete("DELETE FROM system_oauth2_refresh_token WHERE expires_time < #{expiresTime} LIMIT #{limit}")
|
Integer deleteByExpiresTimeLt(@Param("expiresTime") LocalDateTime expiresTime, @Param("limit") Integer limit);
|
}
|