package com.fdkankan.ucenter.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.fdkankan.common.constant.UploadFilePath; import com.fdkankan.common.util.FileUtils; import com.fdkankan.fyun.oss.UploadToOssUtil; import com.fdkankan.ucenter.entity.*; import com.fdkankan.ucenter.mapper.IScenePlusMapper; import com.fdkankan.ucenter.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import java.io.IOException; import java.util.HashMap; import java.util.List; /** *

* 场景主表 服务实现类 *

* * @author * @since 2022-07-04 */ @Service public class ScenePlusServiceImpl extends ServiceImpl implements IScenePlusService { @Autowired private IScenePlusExtService scenePlusExtService; @Autowired private ISceneEditInfoService sceneEditInfoService; @Autowired private ISceneEditInfoExtService sceneEditInfoExtService; @Autowired private ISceneEditControlsService sceneEditControlsService; @Autowired private ICameraDetailService cameraDetailService; @Autowired private ISceneCopyLogService sceneCopyLogService; @Autowired UploadToOssUtil uploadToOssUtil; @Autowired ISceneProService sceneProService; @Override public Long getCountByUserId(Long userId, List sceneSourceList) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ScenePlus::getUserId, userId); wrapper.in(ScenePlus::getSceneSource, sceneSourceList); return this.count(wrapper); } @Override public Long getCountByUserId(Long userId, Integer cameraType) { return this.getBaseMapper().getCountByUserId(userId,cameraType); } @Override public List getListByCameraId(Long cameraId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ScenePlus::getCameraId,cameraId); return this.list(wrapper); } @Override public void bindOrUnCamera(List cameraIds, Long userId) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.set(ScenePlus::getUserId,userId) .in(ScenePlus::getCameraId,cameraIds); this.update(wrapper); } @Override public List getListByCameraIds(List cameraIds) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(ScenePlus::getCameraId,cameraIds); return this.list(wrapper); } @Override public List getListByNums(List numList) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(ScenePlus::getNum,numList); return this.list(wrapper); } @Override public HashMap getMapByIds(List sceneIds) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(ScenePlus::getId,sceneIds); List list = this.list(wrapper); HashMap map = new HashMap<>(); list.forEach(entity -> map.put(entity.getId(),entity)); return map; } @Override public ScenePlus getByNum(String sceneNum) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ScenePlus::getNum,sceneNum); List list = this.list(wrapper); if(list!=null && list.size() >0){ return list.get(0); } return null; } @Override public void copyV4Scene(ScenePlus scenePlus,String newNum, CameraDetail cameraDetail) throws Exception { String num = scenePlus.getNum(); Long plusId = scenePlus.getId(); scenePlus.setSceneStatus(0); scenePlus.setNum(newNum); scenePlus.setId(null); scenePlus.setTitle(scenePlus.getTitle().concat("(copy)")); this.save(scenePlus); ScenePlusExt plusExt = scenePlusExtService.getByPlusId(plusId); String videos ; if(plusExt.getVideos().contains("scene_view_data")){ videos = plusExt.getVideos().replace(num,newNum); }else { videos = plusExt.getVideos().replaceAll("https://4dkk.4dage.com/data/data"+num, "https://4dkk.4dage.com/scene_view_data/"+newNum+"/data"); } plusExt.setId(null); plusExt.setPlusId(scenePlus.getId()); plusExt.setWebSite(plusExt.getWebSite().replace(num,newNum)); plusExt.setThumb(plusExt.getThumb().replace(num,newNum)); plusExt.setVideos(videos); plusExt.setViewCount(0); String newDataSource = sceneProService.setDataSource(plusExt.getDataSource(), scenePlus.getSceneSource()); plusExt.setDataSource(newDataSource); scenePlusExtService.save(plusExt); //保存复制日志 sceneCopyLogService.saveByNum(num,newNum,scenePlus.getUserId()); //复制完成更新相机容量 cameraDetail.setUsedSpace(cameraDetail.getUsedSpace() + plusExt.getSpace()); cameraDetailService.updateById(cameraDetail); SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(plusId); Long sceneEditInfoId = sceneEditInfo.getId(); sceneEditInfo.setId(null); sceneEditInfo.setScenePlusId(scenePlus.getId()); sceneEditInfo.setTitle(scenePlus.getTitle()); sceneEditInfoService.save(sceneEditInfo); SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfoId); sceneEditInfoExt.setId(null); sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId()); sceneEditInfoExt.setScenePlusId(scenePlus.getId()); sceneEditInfoExtService.save(sceneEditInfoExt); SceneEditControls sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfoId); sceneEditControls.setId(null); sceneEditControls.setEditInfoId(sceneEditInfo.getId()); sceneEditControlsService.save(sceneEditControls); sceneProService.setQrCode("V3",newNum); sceneProService.copyOssSource("v4",num,newNum); sceneProService.copyLocalSource(num,newNum); sceneProService.updateSceneJson("v4",plusExt.getVideos(),newNum,scenePlus.getTitle(),plusExt.getWebSite(),plusExt.getThumb(),scenePlus.getId()); scenePlus.setSceneStatus(-2); this.updateById(scenePlus); } }