ScenePlusServiceImpl.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package com.fdkankan.ucenter.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  4. import com.fdkankan.common.constant.UploadFilePath;
  5. import com.fdkankan.common.util.FileUtils;
  6. import com.fdkankan.fyun.oss.UploadToOssUtil;
  7. import com.fdkankan.ucenter.entity.*;
  8. import com.fdkankan.ucenter.mapper.IScenePlusMapper;
  9. import com.fdkankan.ucenter.service.*;
  10. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.beans.factory.annotation.Qualifier;
  13. import org.springframework.stereotype.Service;
  14. import java.io.IOException;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. /**
  18. * <p>
  19. * 场景主表 服务实现类
  20. * </p>
  21. *
  22. * @author
  23. * @since 2022-07-04
  24. */
  25. @Service
  26. public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlus> implements IScenePlusService {
  27. @Autowired
  28. private IScenePlusExtService scenePlusExtService;
  29. @Autowired
  30. private ISceneEditInfoService sceneEditInfoService;
  31. @Autowired
  32. private ISceneEditInfoExtService sceneEditInfoExtService;
  33. @Autowired
  34. private ISceneEditControlsService sceneEditControlsService;
  35. @Autowired
  36. private ICameraDetailService cameraDetailService;
  37. @Autowired
  38. private ISceneCopyLogService sceneCopyLogService;
  39. @Autowired
  40. UploadToOssUtil uploadToOssUtil;
  41. @Autowired
  42. ISceneProService sceneProService;
  43. @Override
  44. public Long getCountByUserId(Long userId, List<Integer> sceneSourceList) {
  45. LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
  46. wrapper.eq(ScenePlus::getUserId, userId);
  47. wrapper.eq(ScenePlus::getSceneSource, sceneSourceList);
  48. return this.count(wrapper);
  49. }
  50. @Override
  51. public List<ScenePlus> getListByCameraId(Long cameraId) {
  52. LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
  53. wrapper.eq(ScenePlus::getCameraId,cameraId);
  54. return this.list(wrapper);
  55. }
  56. @Override
  57. public void bindOrUnCamera(List<Long> cameraIds, Long userId) {
  58. LambdaUpdateWrapper<ScenePlus> wrapper = new LambdaUpdateWrapper<>();
  59. wrapper.set(ScenePlus::getUserId,userId)
  60. .in(ScenePlus::getCameraId,cameraIds);
  61. this.update(wrapper);
  62. }
  63. @Override
  64. public List<ScenePlus> getListByCameraIds(List<Long> cameraIds) {
  65. LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
  66. wrapper.in(ScenePlus::getCameraId,cameraIds);
  67. return this.list(wrapper);
  68. }
  69. @Override
  70. public List<ScenePlus> getListByNums(List<String> numList) {
  71. LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
  72. wrapper.in(ScenePlus::getNum,numList);
  73. return this.list(wrapper);
  74. }
  75. @Override
  76. public HashMap<Long, ScenePlus> getMapByIds(List<Long> sceneIds) {
  77. LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
  78. wrapper.in(ScenePlus::getId,sceneIds);
  79. List<ScenePlus> list = this.list(wrapper);
  80. HashMap<Long,ScenePlus> map = new HashMap<>();
  81. list.forEach(entity -> map.put(entity.getId(),entity));
  82. return map;
  83. }
  84. @Override
  85. public ScenePlus getByNum(String sceneNum) {
  86. LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
  87. wrapper.eq(ScenePlus::getNum,sceneNum);
  88. List<ScenePlus> list = this.list(wrapper);
  89. if(list!=null && list.size() >0){
  90. return list.get(0);
  91. }
  92. return null;
  93. }
  94. @Override
  95. public void copyV4Scene(ScenePlus scenePlus,String newNum, CameraDetail cameraDetail) throws Exception {
  96. String num = scenePlus.getNum();
  97. // 拷贝场景编辑资源
  98. String oldEditPath = String.format(UploadFilePath.EDIT_PATH, num);
  99. String newEditPath = String.format(UploadFilePath.EDIT_PATH, newNum);
  100. uploadToOssUtil.copyFiles(oldEditPath,newEditPath);
  101. // 拷贝场景展示资源
  102. String oldViewPath = String.format(UploadFilePath.VIEW_PATH, num);
  103. String newViewPath = String.format(UploadFilePath.VIEW_PATH, newNum);
  104. uploadToOssUtil.copyFiles(oldViewPath,newViewPath);
  105. // 拷贝本地资源
  106. String oldPath = String.format("/mnt/4Dkankan/scene/%s/caches/images/", num);
  107. String newPath = String.format("/mnt/4Dkankan/scene/%s/caches/images/", newNum);
  108. FileUtils.copyDirectiory(oldPath,newPath);
  109. Long plusId = scenePlus.getId();
  110. scenePlus.setNum(newNum);
  111. scenePlus.setId(null);
  112. scenePlus.setTitle(scenePlus.getTitle().concat("(copy)"));
  113. this.save(scenePlus);
  114. ScenePlusExt plusExt = scenePlusExtService.getByPlusId(plusId);
  115. String videos ;
  116. if(plusExt.getVideos().contains("scene_view_data")){
  117. videos = plusExt.getVideos().replace(num,newNum);
  118. }else {
  119. videos = plusExt.getVideos().replaceAll("https://4dkk.4dage.com/data/data"+num, "https://4dkk.4dage.com/scene_view_data/"+newNum+"/data");
  120. }
  121. plusExt.setId(null);
  122. plusExt.setPlusId(scenePlus.getId());
  123. plusExt.setWebSite(plusExt.getWebSite().replace(num,newNum));
  124. plusExt.setThumb(plusExt.getThumb().replace(num,newNum));
  125. plusExt.setVideos(videos);
  126. scenePlusExtService.save(plusExt);
  127. //保存复制日志
  128. sceneCopyLogService.saveByNum(num,newNum,scenePlus.getUserId());
  129. //复制完成更新相机容量
  130. cameraDetail.setUsedSpace(cameraDetail.getUsedSpace() + plusExt.getSpace());
  131. cameraDetailService.updateById(cameraDetail);
  132. SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(plusId);
  133. Long sceneEditInfoId = sceneEditInfo.getId();
  134. sceneEditInfo.setId(null);
  135. sceneEditInfo.setScenePlusId(scenePlus.getId());
  136. sceneEditInfo.setTitle(scenePlus.getTitle());
  137. sceneEditInfoService.save(sceneEditInfo);
  138. SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfoId);
  139. sceneEditInfoExt.setId(null);
  140. sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
  141. sceneEditInfoExt.setScenePlusId(scenePlus.getId());
  142. sceneEditInfoExtService.save(sceneEditInfoExt);
  143. SceneEditControls sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfoId);
  144. sceneEditControls.setId(null);
  145. sceneEditControls.setEditInfoId(sceneEditInfo.getId());
  146. sceneEditControlsService.save(sceneEditControls);
  147. sceneProService.updateSceneJson("v4",plusExt.getVideos(),newNum,scenePlus.getTitle(),plusExt.getWebSite(),plusExt.getThumb(),scenePlus.getId());
  148. }
  149. }