Browse Source

Merge branch 'feature-c17-matterport-dsx' into test

dengsixing 1 year ago
parent
commit
4640175726

+ 9 - 0
src/main/java/com/fdkankan/openApi/constant/MatterportConstant.java

@@ -0,0 +1,9 @@
+package com.fdkankan.openApi.constant;
+
+public class MatterportConstant {
+
+    public final static String workPath = "/mnt/matterport_download/";
+
+    public final static String cmd_matterport_download = "node " + workPath + "index.mjs @num@";
+
+}

+ 36 - 0
src/main/java/com/fdkankan/openApi/controller/www/MatterportController.java

@@ -0,0 +1,36 @@
+package com.fdkankan.openApi.controller.www;
+
+
+import com.fdkankan.openApi.controller.BaseController;
+import com.fdkankan.openApi.service.www.IMatterportService;
+import com.fdkankan.openApi.vo.BaseSceneParamVo;
+import com.fdkankan.web.response.ResultData;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+@Slf4j
+@RestController
+@RequestMapping("/matterport")
+public class MatterportController extends BaseController {
+
+    @Autowired
+    private IMatterportService matterportService;
+
+    @PostMapping("/download")
+    public ResultData download(@RequestBody @Valid BaseSceneParamVo paramVo) throws Exception {
+        return matterportService.download(paramVo);
+    }
+
+
+
+
+
+
+}
+

+ 10 - 0
src/main/java/com/fdkankan/openApi/service/www/IMatterportService.java

@@ -0,0 +1,10 @@
+package com.fdkankan.openApi.service.www;
+
+import com.fdkankan.openApi.vo.BaseSceneParamVo;
+import com.fdkankan.web.response.ResultData;
+
+public interface IMatterportService {
+
+    ResultData download(BaseSceneParamVo param) throws Exception;
+
+}

+ 41 - 0
src/main/java/com/fdkankan/openApi/service/www/impl/MatterportServiceImpl.java

@@ -0,0 +1,41 @@
+package com.fdkankan.openApi.service.www.impl;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.ZipUtil;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.util.CmdUtils;
+import com.fdkankan.fyun.face.FYunFileServiceInterface;
+import com.fdkankan.model.utils.ComputerUtil;
+import com.fdkankan.openApi.constant.MatterportConstant;
+import com.fdkankan.openApi.service.www.IMatterportService;
+import com.fdkankan.openApi.vo.BaseSceneParamVo;
+import com.fdkankan.web.response.ResultData;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Slf4j
+@Service
+public class MatterportServiceImpl implements IMatterportService {
+
+    @Resource
+    private FYunFileServiceInterface fYunFileService;
+
+    @Override
+    public ResultData download(BaseSceneParamVo param) throws Exception {
+        String cmdStr = MatterportConstant.cmd_matterport_download.replace("@num@", param.getSceneCode());
+        CmdUtils.callLine(cmdStr);
+        String logJsonPath = MatterportConstant.workPath + param.getSceneCode() + "/log.json";
+        boolean success = ComputerUtil.checkComputeCompleted(logJsonPath, 3, 3);
+        if(!success){
+            return ResultData.error(ErrorCode.FAILURE_CODE_5063, "没有生成文件:" + logJsonPath);
+        }
+        FileUtil.del(logJsonPath);
+        String zipPath = MatterportConstant.workPath + "scenes/" + param.getSceneCode() + ".zip";
+        ZipUtil.zip(MatterportConstant.workPath + "scenes/" + param.getSceneCode(), zipPath);
+
+        String key = "matterport_download/" + param.getSceneCode() + ".zip";
+        return ResultData.ok(fYunFileService.uploadFile(zipPath, key));
+    }
+}