package com.ymwk.icvp.task; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.ymwk.icvp.pki.entity.CertificateEntity; import com.ymwk.icvp.pki.mapper.CertificateMapper; import com.ymwk.icvp.signature.entity.Seal; import com.ymwk.icvp.signature.mapper.SealMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.time.LocalDateTime; @Slf4j @Component public class ExpiryStatusTask { private final CertificateMapper certificateMapper; private final SealMapper sealMapper; public ExpiryStatusTask(CertificateMapper certificateMapper, SealMapper sealMapper) { this.certificateMapper = certificateMapper; this.sealMapper = sealMapper; } @Scheduled(initialDelay = 0, fixedDelay = 3_600_000) public void updateExpiredStatuses() { LocalDateTime now = LocalDateTime.now(); int expiredCertificates = certificateMapper.update( null, new LambdaUpdateWrapper() .set(CertificateEntity::getStatus, "2") .in(CertificateEntity::getStatus, "1", "3") .lt(CertificateEntity::getValidTo, now) ); int expiredSeals = sealMapper.update( null, new LambdaUpdateWrapper() .set(Seal::getSealStatus, 4) .set(Seal::getUpdateTime, now) .set(Seal::getUpdateBy, "system") .in(Seal::getSealStatus, 1, 2) .lt(Seal::getValidEndTime, now) ); if (expiredCertificates > 0 || expiredSeals > 0) { log.info("过期状态更新完成: certificates={}, seals={}", expiredCertificates, expiredSeals); } } }