package com.fdkankan.fusion.controller; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.io.FileUtil; import com.fdkankan.fusion.common.FilePath; import com.fdkankan.fusion.common.OssPath; import com.fdkankan.fusion.common.ResultCode; import com.fdkankan.fusion.common.ResultData; import com.fdkankan.fusion.common.util.ShellUtil; import com.fdkankan.fusion.common.util.UploadToOssUtil; import com.fdkankan.fusion.config.CacheUtil; import com.fdkankan.fusion.entity.CommonUpload; import com.fdkankan.fusion.entity.Dict; import com.fdkankan.fusion.entity.DictFile; import com.fdkankan.fusion.entity.Model; import com.fdkankan.fusion.exception.BusinessException; import com.fdkankan.fusion.request.DictFileParam; import com.fdkankan.fusion.response.FileInfoVo; import com.fdkankan.fusion.service.ICommonUploadService; import com.fdkankan.fusion.service.IDictFileService; import com.fdkankan.fusion.service.IDictService; 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; /** *

* 前端控制器 *

* * @author * @since 2024-12-02 */ @RestController @RequestMapping("/dictFile") public class DictFileController extends BaseController{ @Autowired IDictFileService dictFileService; @Autowired ICommonUploadService commonUploadService; @Autowired UploadToOssUtil uploadToOssUtil; @Value("${upload.query-path}") private String queryPath; @Autowired IDictService dictService; @PostMapping("/pageList/{typeKey}") public ResultData pageList(@RequestBody DictFileParam param, @PathVariable String typeKey){ param.setTypeKey(typeKey); return ResultData.ok(dictFileService.pageList(param)); } @PostMapping("/addOrUpdate/{typeKey}") public ResultData addOrUpdate(@RequestBody DictFile dictFile, @PathVariable String typeKey){ dictFile.setTypeKey(typeKey); if(dictFile.getId() != null && StringUtils.isNotBlank(dictFile.getName())){ commonUploadService.updateFileName(dictFile.getUploadId(),dictFile.getName()); } if(dictFile.getId() == null){ dictFile.setSysUserId((String) StpUtil.getLoginId()); } dictFileService.addOrUpdate(dictFile); return ResultData.ok(); } @PostMapping("/del/{typeKey}") public ResultData del(@RequestBody DictFile dictFile,@PathVariable String typeKey){ dictFileService.del(dictFile); return ResultData.ok(); } @GetMapping("/downFile") public ResultData downFile(@RequestParam(required = false) Integer dictFileId) { if(dictFileId == null){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } DictFile dictFile = dictFileService.getById(dictFileId); if(dictFile == null){ throw new BusinessException(ResultCode.FILE_NOT_EXIST); } CommonUpload commonUpload = commonUploadService.getById(dictFile.getUploadId()); if(commonUpload == null){ throw new BusinessException(ResultCode.FILE_NOT_EXIST); } if(StringUtils.isBlank(commonUpload.getSourceFile())){ throw new BusinessException(ResultCode.FILE_NOT_EXIST); } return ResultData.ok(commonUpload.getSourceFile()); } @GetMapping("/downHash") public ResultData downHash(@RequestParam(required = false) Integer dictFileId) { if(dictFileId == null){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } DictFile dictFile = dictFileService.getById(dictFileId); if(dictFile == null){ throw new BusinessException(ResultCode.FILE_NOT_EXIST); } if(StringUtils.isNotBlank(dictFile.getHashUrl())){ return ResultData.ok(dictFile.getHashUrl()); } CommonUpload commonUpload = commonUploadService.getById(dictFile.getUploadId()); if(commonUpload == null){ throw new BusinessException(ResultCode.FILE_NOT_EXIST); } if(StringUtils.isBlank(commonUpload.getFileUrl())){ throw new BusinessException(ResultCode.FILE_NOT_EXIST); } String sceneObjPath = commonUpload.getFileUrl().replace(queryPath,""); if("las".equals(commonUpload.getFileFormat()) || "laz".equals(commonUpload.getFileFormat()) || "ply".equals(commonUpload.getFileFormat())){ sceneObjPath = sceneObjPath+"/cloud.js"; } FileInfoVo fileInfo = uploadToOssUtil.getFileInfo(sceneObjPath); if(fileInfo == null){ throw new BusinessException(ResultCode.FILE_NOT_EXIST); } fileInfo.setSize(Long.valueOf(commonUpload.getFileSize())); String filePath = String.format(CacheUtil.basePath+OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId) ; String ossPath = String.format(OssPath.MANAGE_FILE_DOWN_PATH ,dictFileId +"/"+ dictFileId + "_hash.txt") ; File file = new File(filePath +"/"+dictFileId + "_hash.txt"); FileUtil.writeString(fileInfo.toString(),file,"UTF-8"); ShellUtil.yunUpload(file.getPath(),ossPath); FileUtil.del(file); String downUrl = queryPath + ossPath; dictFileService.setDownUrl(dictFileId,downUrl,1); return ResultData.ok(downUrl); } }