diff --git a/backend/archive-service/src/main/java/com/artedu/archive/controller/ArchiveMessageController.java b/backend/archive-service/src/main/java/com/artedu/archive/controller/ArchiveMessageController.java index 0bcdb76..fc0e27b 100644 --- a/backend/archive-service/src/main/java/com/artedu/archive/controller/ArchiveMessageController.java +++ b/backend/archive-service/src/main/java/com/artedu/archive/controller/ArchiveMessageController.java @@ -414,6 +414,61 @@ public class ArchiveMessageController { return vo; } + /** + * 历史数据刷新 + */ + @GetMapping("/messages/recent-two-days") + public Result getRecentTwoDaysMessages() { + long twoDaysAgo = System.currentTimeMillis() - 2 * 24 * 60 * 60 * 1000L; + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.ge(ArchiveMessage::getMsgtime, twoDaysAgo); + wrapper.orderByDesc(ArchiveMessage::getMsgtime); + + List messages = archiveMessageMapper.selectList(wrapper); + log.info("历史刷新数据总数:{}", messages.size()); + for (int i = 0; i < messages.size(); i++) { + ArchiveMessage message = messages.get(i); + log.info("刷新第:{}个, {}",i, message.getId()); + String msgtype = message.getMsgtype(); + String mediaData = message.getMediaData(); + if (mediaData == null || mediaData.isEmpty()) { + continue; + } + + // 从 mediaData 解析 sdkfileid + String sdkfileid = null; + try { + Map mediaMap = JsonUtils.fromJsonMap(mediaData); + if (mediaMap != null) { + sdkfileid = (String) mediaMap.get("sdkfileid"); + } + } catch (Exception e) { + log.error("解析 mediaData 失败: id={}, mediaData={}", message.getId(), mediaData); + } + if (sdkfileid == null || sdkfileid.isEmpty()) { + continue; + } + + // 构建缓存路径 + String ext = getMediaExtension(msgtype); + String cacheFileName = message.getMsgid().replaceAll("[^a-zA-Z0-9_-]", "_") + ext; + File cacheFile = new File(MEDIA_CACHE_DIR, cacheFileName); + + // 如果缓存不存在,下载媒体 + if (!cacheFile.exists()) { + boolean success = archivePullService.downloadMedia(sdkfileid, cacheFile.getAbsolutePath()); + if (!success) { + log.error("下载媒体 失败: id={}, mediaData={}", message.getId(), mediaData); + }else{ + log.info("下载媒体 成功: id={}, 文件地址={}", message.getId(), cacheFile.getAbsolutePath()); + } + } + } + + return Result.success(); + } + @lombok.Data public static class ArchiveStatsVO { private Long totalCount;