package com.fdkankan.fusion.controller; import cn.hutool.core.io.FileUtil; import com.fdkankan.fusion.common.FilePath; import com.fdkankan.fusion.common.ResultCode; import com.fdkankan.fusion.common.ResultData; import com.fdkankan.fusion.common.util.SceneTypeUtil; import com.fdkankan.fusion.common.util.UploadToOssUtil; import com.fdkankan.fusion.exception.BusinessException; import com.fdkankan.fusion.httpClient.request.LaserSceneParam; import com.fdkankan.fusion.request.ScenePram; import com.fdkankan.fusion.response.FileInfoVo; import com.fdkankan.fusion.service.ISceneService; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.OutputStream; @RestController @RequestMapping("/scene") public class SceneController extends BaseController{ @Autowired ISceneService sceneService; @PostMapping("/list") public ResultData list(@RequestBody ScenePram param){ param.setShare(getShare()); param.setUserId(getUserId()); return ResultData.ok(sceneService.pageList(param)); } @GetMapping("/getFdTokenByNum") public Object getFdTokenByNum(@RequestParam(required = false) String num){ return sceneService.getFdTokenByNum(num); } @GetMapping("/deleteNum") public ResultData deleteNum(@RequestParam(required = false) String num){ sceneService.deleteNum(num); return ResultData.ok(); } @PostMapping("/sceneDetail") public ResultData sceneDetail(@RequestBody LaserSceneParam param){ return ResultData.ok(sceneService.sceneDetail(param)); } @PostMapping("/buildSceneObj") public ResultData buildSceneObj(@RequestBody LaserSceneParam param){ sceneService.buildSceneObj(param); return ResultData.ok(); } @PostMapping("/copyScene") public ResultData copyScene(@RequestBody ScenePram param){ sceneService.copyScene(param); return ResultData.ok(); } @Autowired UploadToOssUtil uploadToOssUtil; @Value("${spring.profiles.active}") private String environment; @GetMapping("/downMD5") public void downMD5(@RequestParam(required = false) String num, @RequestParam(required = false) Integer type, HttpServletResponse res, HttpServletRequest req) throws IOException { if(StringUtils.isBlank(num) || type == null){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } // 设置响应头,指定文件类型和内容长度 OutputStream os = null; try { FileInfoVo fileInfo = null; Long size = null; String sceneObjPath =null; if(SceneTypeUtil.isLaser(type)){ //点云 sceneObjPath = String.format(FilePath.LASER_OSS_PATH, num,num)+"/cloud.js" ; fileInfo = uploadToOssUtil.getFileInfo(sceneObjPath); String scenePath = String.format(FilePath.LASER_OSS_PATH, num,num); size = uploadToOssUtil.getSize(scenePath); }else { sceneObjPath = String.format(FilePath.OBJ_OSS_PATH,num) + "/images/3dtiles/tileset.json"; if(!uploadToOssUtil.existKey(sceneObjPath)){ sceneObjPath = String.format(FilePath.OBJ_OSS_PATH,num) + "/data/mesh/mesh.json"; } if(!uploadToOssUtil.existKey(sceneObjPath)){ sceneObjPath = String.format(FilePath.OBJ_OSS_PATH,num) + "/data/mesh/mesh.obj"; } fileInfo = uploadToOssUtil.getFileInfo(sceneObjPath); String scenePath = String.format(FilePath.OBJ_OSS_PATH, num); size = uploadToOssUtil.getSize(scenePath); } if(fileInfo == null){ throw new BusinessException(ResultCode.FILE_NOT_EXIST); } fileInfo.setSize(size); String objPath = String.format(FilePath.OBJ_LOCAL_PATH,environment , num) ; File file = new File(objPath +"/"+num + "_hash.txt"); res.setContentType("application/octet-stream"); res.setHeader("Content-Disposition", "attachment; filename="+num + "_hash.txt"); os = res.getOutputStream(); FileUtil.writeString(fileInfo.toString(),file,"UTF-8"); os.write(FileUtils.readFileToByteArray(file)); os.flush(); } finally { if(os!=null){ os.close(); } } } }