package com.fdkankan.task.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.common.constant.ConstantFilePath; import com.fdkankan.common.constant.UploadFilePath; import com.fdkankan.fyun.oss.UploadToOssUtil; import com.fdkankan.redis.constant.RedisKey; import com.fdkankan.redis.util.RedisUtil; import com.fdkankan.task.constant.TaskConstant; import com.fdkankan.task.entity.ScenePlus; import com.fdkankan.task.entity.ScenePlusExt; import com.fdkankan.task.mapper.IScenePlusMapper; import com.fdkankan.task.service.IScenePlusExtService; import com.fdkankan.task.service.IScenePlusService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** *

* 场景主表 服务实现类 *

* * @author * @since 2022-03-16 */ @Slf4j @Service public class ScenePlusServiceImpl extends ServiceImpl implements IScenePlusService { @Autowired private IScenePlusExtService scenePlusExtService; @Autowired private UploadToOssUtil uploadToOssUtil; @Autowired private RedisUtil redisUtil; @Override public ScenePlus getScenePlusByNumWithDelete(String num) { return null; } @Override public ScenePlus getScenePlusByNum(String num) { return this.getOne(new LambdaQueryWrapper().eq(ScenePlus::getNum, num)); } public void deleteV3DirHandler(String num){ try { log.info("删除v3目录开始,num:{}", num); String dataPath = String.format(TaskConstant.dataPathFormat, num); ScenePlus scenePlus = this.getScenePlusByNum(num); ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId()); String bucket = scenePlusExt.getYunFileBucket(); String dataViewPath = String.format(UploadFilePath.DATA_VIEW_PATH, num); String sceneJsonPath = dataViewPath + "scene.json"; if(StrUtil.isNotEmpty(scenePlusExt.getVideos()) && scenePlusExt.getVideos().contains(dataPath)){ scenePlusExt.setVideos(scenePlusExt.getVideos().replaceAll(dataPath, dataViewPath)); scenePlusExtService.updateById(scenePlusExt); String sceneJson = uploadToOssUtil.getObjectContent(bucket, sceneJsonPath); JSONObject sceneJsonObj = JSON.parseObject(sceneJson); sceneJsonObj.put("videos", JSON.parseObject(scenePlusExt.getVideos())); uploadToOssUtil.upload(bucket, sceneJsonObj.toJSONString().getBytes(), sceneJsonPath); redisUtil.del(String.format(RedisKey.SCENE_JSON, num)); } //删除data目录 List dataList = uploadToOssUtil.listKeys(bucket, dataPath); if(CollUtil.isNotEmpty(dataList)){ uploadToOssUtil.deleteFile(bucket, dataPath); } //删除img目录 String imgPath = String.format(TaskConstant.imgPathFormat, num); List imgList = uploadToOssUtil.listKeys(bucket, imgPath); if(CollUtil.isNotEmpty(imgList)){ uploadToOssUtil.deleteFile(bucket, imgPath); } //删除video目录 String videoPath = String.format(TaskConstant.videoPathFormat, num); List videoList = uploadToOssUtil.listKeys(bucket, videoPath); if(CollUtil.isNotEmpty(videoList)){ uploadToOssUtil.deleteFile(bucket, videoPath); } //删除voice目录 String voicePath = String.format(TaskConstant.voicePathFormat, num); List voiceList = uploadToOssUtil.listKeys(bucket, voicePath); if(CollUtil.isNotEmpty(voiceList)){ uploadToOssUtil.deleteFile(bucket, voicePath); } redisUtil.sSet(TaskConstant.numKey, num); log.info("删除v3目录完毕,num:{}", num); }catch (Exception e){ log.info("删除v3目录失败,num:" + num, e); } } public void deleteSceneHandler(String num){ try { log.info("删除场景全部数据开始,num:{}", num); ScenePlus scenePlus = this.baseMapper.selectDeleteScene(num); ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId()); String bucket = scenePlusExt.getYunFileBucket(); //删除data目录 String dataPath = String.format(TaskConstant.dataPathFormat, num); List dataList = uploadToOssUtil.listKeys(bucket, dataPath); if(CollUtil.isNotEmpty(dataList)){ uploadToOssUtil.deleteFile(bucket, dataPath); } //删除img目录 String imgPath = String.format(TaskConstant.imgPathFormat, num); List imgList = uploadToOssUtil.listKeys(bucket, imgPath); if(CollUtil.isNotEmpty(imgList)){ uploadToOssUtil.deleteFile(bucket, imgPath); } //删除video目录 String videoPath = String.format(TaskConstant.videoPathFormat, num); List videoList = uploadToOssUtil.listKeys(bucket, videoPath); if(CollUtil.isNotEmpty(videoList)){ uploadToOssUtil.deleteFile(bucket, videoPath); } //删除voice目录 String voicePath = String.format(TaskConstant.voicePathFormat, num); List voiceList = uploadToOssUtil.listKeys(bucket, voicePath); if(CollUtil.isNotEmpty(voiceList)){ uploadToOssUtil.deleteFile(bucket, voicePath); } //删除dataview目录 String dataViewPath = String.format(UploadFilePath.DATA_VIEW_PATH, num); List dataViewList = uploadToOssUtil.listKeys(bucket, dataViewPath); if(CollUtil.isNotEmpty(dataViewList)){ uploadToOssUtil.deleteFile(bucket, dataViewPath); } //删除img目录 String imgViewPath = String.format(UploadFilePath.IMG_VIEW_PATH, num); List imgViewList = uploadToOssUtil.listKeys(bucket, imgViewPath); if(CollUtil.isNotEmpty(imgViewList)){ uploadToOssUtil.deleteFile(bucket, imgViewPath); } //删除video目录 String videoViewPath = String.format(UploadFilePath.VIDEOS_VIEW_PATH, num); List videoViewList = uploadToOssUtil.listKeys(bucket, videoViewPath); if(CollUtil.isNotEmpty(videoViewList)){ uploadToOssUtil.deleteFile(bucket, videoViewPath); } //删除voice目录 String voiceViewPath = String.format(UploadFilePath.VOICE_VIEW_PATH, num); List voiceViewList = uploadToOssUtil.listKeys(bucket, voiceViewPath); if(CollUtil.isNotEmpty(voiceViewList)){ uploadToOssUtil.deleteFile(bucket, voiceViewPath); } //删除user目录 String userViewPath = String.format(UploadFilePath.USER_VIEW_PATH, num); List userViewList = uploadToOssUtil.listKeys(bucket, userViewPath); if(CollUtil.isNotEmpty(userViewList)){ uploadToOssUtil.deleteFile(bucket, userViewPath); } //删除user目录 String userEditPath = String.format(UploadFilePath.USER_EDIT_PATH, num); List userEditList = uploadToOssUtil.listKeys(bucket, userEditPath); if(CollUtil.isNotEmpty(userEditList)){ uploadToOssUtil.deleteFile(bucket, userEditPath); } //删除nas目录 String dataSource = scenePlusExt.getDataSource(); if(dataSource.length() > "/mnt/data/".length()){ FileUtil.del(dataSource); } redisUtil.sSet(TaskConstant.deleteNumKey, num); log.info("删除场景全部数据结束,num:{}", num); }catch (Exception e){ log.error("删除场景全部数据失败,num:" + num, e); } } }