package org.dromara.system.sync; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.factory.OssFactory; import org.dromara.system.domain.SysOss; import org.dromara.system.domain.properties.Boundary; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.mapper.SysOssMapper; import org.dromara.system.uitil.HttpUtils; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.IOException; import java.time.LocalDateTime; import java.util.List; import java.util.Objects; @Slf4j @Component public class deleteSync { private final SysOssMapper baseMapper; private final Boundary boundary; public deleteSync(SysOssMapper baseMapper, Boundary boundary) { this.baseMapper = baseMapper; this.boundary = boundary; } // @Scheduled(cron = "0 */10 * * * ?") public void remove() throws IOException { System.out.println("同步删除......"); List ids = baseMapper.getWillDeleted(LocalDateTime.now().minusDays(1)); if (ids.size() == 0) { return; } for (Long ossId : ids) { baseMapper.deleteById(ossId); HttpUtils.sendDeleteRequest(boundary.getVideo() + "/resource/synchronization/delete", String.valueOf(ossId)); } } /** * 每小时删除2天之前的文件信息,因为上面的同步删除并不能保证事务 * * @throws IOException */ @Scheduled(cron = "0 0 * * * ?") public void removeOssTable() throws IOException { log.error("每小时定时删除超过2天的数据库文件信息......"); List ids = baseMapper.getWillDeleted(LocalDateTime.now().minusDays(2)); if (ids.size() == 0) { return; } // 删除对应文件 OssClient ossClient = OssFactory.instance(); for (Long ossId : ids) { SysOss sysOss = baseMapper.selectById(ossId); if (Objects.nonNull(sysOss)) { ossClient.delete(sysOss.getFileName()); } } baseMapper.deleteIds(ids); } }