package com.fdkankan.scene.schedule; import com.alibaba.fastjson.JSON; import com.fdkankan.redis.constant.RedisKey; import com.fdkankan.redis.util.RedisLockUtil; import com.fdkankan.redis.util.RedisUtil; import com.fdkankan.scene.entity.DownloadTourVideo; import com.fdkankan.scene.service.IDownloadTourVideoService; import com.fdkankan.scene.service.ISceneAsynOperLogService; import com.fdkankan.scene.service.ISceneDownLoadService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.nio.charset.StandardCharsets; @Log4j2 @Component public class ScheduleJob { @Autowired private ISceneAsynOperLogService sceneAsynOperLogService; @Autowired RedisUtil redisUtil; @Autowired ISceneDownLoadService sceneDownLoadService; @Autowired private RedisLockUtil redisLockUtil; @Autowired private IDownloadTourVideoService downloadTourVideoService; /** * 每天凌晨一点执行 */ @Scheduled(cron="0 0 1 * * ?") public void cleanDownloadPanorama() { log.info("定时清除全景图压缩包开始"); sceneAsynOperLogService.cleanDownloadPanorama(); log.info("定时清除全景图压缩包完毕"); } @Scheduled(cron = "0/5 * * * * ? ") public void job4SceneDownload() throws Exception { sceneDownLoadService.process(); } @Scheduled(cron = "0/5 * * * * ? ") public void job4SceneV3Download() throws Exception { sceneDownLoadService.processV3(); } @Scheduled(cron = "0/2 * * * * ? ") public void transferTourVideo() throws Exception { String lockKey = "lock:transfer:tour:video"; boolean lock = redisLockUtil.lock("lock:transfer:tour:video", RedisKey.EXPIRE_TIME_10_MINUTE); if(!lock){ return; } String task = (String) redisUtil.lGetIndex("transfer:tour:video", 0L); try { log.info("开始导览视频转换,content:{}", task); DownloadTourVideo downloadTourVideo = JSON.parseObject(task, DownloadTourVideo.class); downloadTourVideoService.transferTourVideo(downloadTourVideo); //视频转换完毕后才出队,防止服务重启,可以重新开始任务 redisUtil.lLeftPop("transfer:tour:video"); log.info("结束导览视频,content:{}", task); }catch (Exception e){ log.error("导览视频转换失败,转换任务:{}", task, e); }finally { redisLockUtil.unlockLua(lockKey); } } // /** // * 删除场景原始资源 // * 每天凌晨执行 // */ // @Scheduled(cron="0 0 1 * * ?") // public void cleanOssHomeV3() { // log.info("删除v3场景原始资源开始"); // String lockKey = RedisLockKey.LOCK_CLEAN_SCENE_ORIG_V3; // try { // boolean lock = redisLockUtil.lock(lockKey, RedisKey.CAMERA_EXPIRE_7_TIME); // if(!lock){ // return; // } // sceneCleanOrigService.cleanOrigV3(); // }finally { // redisLockUtil.unlockLua(lockKey); // } // log.info("删除v3场景原始资源结束"); // } // // /** // * 删除场景原始资源 // * 每天凌晨执行 // */ // @Scheduled(cron="0 0 1 * * ?") // public void cleanOssHomeV4() { // log.info("删除v4场景原始资源开始"); // String lockKey = RedisLockKey.LOCK_CLEAN_SCENE_ORIG_V4; // try { // boolean lock = redisLockUtil.lock(lockKey, RedisKey.CAMERA_EXPIRE_7_TIME); // if(!lock){ // return; // } // sceneCleanOrigService.cleanOrigV4(); // }finally { // redisLockUtil.unlockLua(lockKey); // } // log.info("删除v4场景原始资源结束"); // } }