Explorar o código

模型列表参数修改

lyhzzz %!s(int64=3) %!d(string=hai) anos
pai
achega
2c0430a06e

+ 1 - 0
src/main/java/com/fdkankan/fusion/common/ResultCode.java

@@ -18,6 +18,7 @@ public enum ResultCode {
     FOLDER_NOT_EXIST(7011,"视频文件夹不存在"),
     CASE_NOT_EXIST(7012,"案件不存在"),
     MERGER_VIDEO_ERROR(7013,"合成视频失败"),
+    MODEL_NOT_EXIST(7014,"模型不存在"),
 
     HOT_ICON_NOT_EXIST(7004,"热点icon不存在");
 

+ 8 - 7
src/main/java/com/fdkankan/fusion/controller/CaseFusionController.java

@@ -36,13 +36,14 @@ public class CaseFusionController {
     @GetMapping("/list")
     public ResultData allList(@RequestParam(required = false) Integer caseId,
                               @RequestHeader String token){
-        return ResultData.ok(fusionNumService.getListByCaseId(caseId,token));
+        return ResultData.ok(fusionNumService.getListByCaseId(caseId,null,token));
     }
 
     @PostMapping("/add")
-    public ResultData add(@RequestBody FusionParam param){
-        fusionNumService.add(param);
-        return ResultData.ok();
+    public ResultData add(@RequestBody FusionParam param,
+                          @RequestHeader String token){
+        param.setToken(token);
+        return ResultData.ok(fusionNumService.add(param));
     }
 
     /**
@@ -55,11 +56,11 @@ public class CaseFusionController {
     }
 
     @PostMapping("/delete")
-    public ResultData delete(@RequestParam(required = false) Integer id){
-        if(id == null){
+    public ResultData delete(@RequestParam(required = false) Integer fusionNumId){
+        if(fusionNumId == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
-        return ResultData.ok(fusionNumService.removeById(id));
+        return ResultData.ok(fusionNumService.removeById(fusionNumId));
     }
 }
 

+ 38 - 1
src/main/java/com/fdkankan/fusion/request/FusionParam.java

@@ -1,10 +1,47 @@
 package com.fdkankan.fusion.request;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.fdkankan.fusion.entity.FusionNum;
+import com.fdkankan.fusion.entity.jsonEntity.Transform;
 import lombok.Data;
 
 @Data
-public class FusionParam extends FusionNum {
+public class FusionParam {
     private Integer caseId;
 
+
+    private Integer fusionNumId;
+
+    /**
+     * 融合场景id
+     */
+    private Integer fusionId;
+
+    /**
+     * 模型id
+     */
+    private Integer modelId;
+
+    /**
+     * 是否隐藏0否,1是
+     */
+    private Integer hide;
+
+    /**
+     * 位置,比例等属性
+     */
+    private Transform transform = new Transform();
+    /**
+     * 透明度
+     */
+    private Double opacity;
+    /**
+     * 高度
+     */
+    private Double bottom;
+
+    private String token;
+
 }

+ 1 - 1
src/main/java/com/fdkankan/fusion/request/ModelPram.java

@@ -8,6 +8,6 @@ import java.util.List;
 @Data
 public class ModelPram extends RequestBase {
     private String modelTitle;
-    private Integer createStatus;
+    private Integer status;
     private Integer modelId;
 }

+ 2 - 1
src/main/java/com/fdkankan/fusion/response/FusionNumVo.java

@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.fdkankan.fusion.entity.FusionNum;
+import com.fdkankan.fusion.request.FusionParam;
 import lombok.Data;
 
 @Data
-public class FusionNumVo extends FusionNum {
+public class FusionNumVo extends FusionParam {
 
     private SceneVo sceneData;
 

+ 0 - 1
src/main/java/com/fdkankan/fusion/service/ICaseVideoFolderService.java

@@ -23,5 +23,4 @@ public interface ICaseVideoFolderService extends IService<CaseVideoFolder> {
 
     CaseVideoFolder getByIdIfNotNew(Integer folderId,Integer caseId);
 
-    void deleteMergeUrl(String videoMergeUrl);
 }

+ 2 - 2
src/main/java/com/fdkankan/fusion/service/IFusionNumService.java

@@ -21,9 +21,9 @@ public interface IFusionNumService extends IService<FusionNum> {
 
     List<FusionNum> getListByFusionIdList(List<Integer> fusionIdList);
 
-    List<FusionNumVo> getListByCaseId(Integer caseId, String token);
+    List<FusionNumVo> getListByCaseId(Integer caseId,Integer fusionNumId, String token);
 
-    void add(FusionParam param);
+    FusionNumVo add(FusionParam param);
 
     void updateModel(FusionParam param);
 }

+ 2 - 0
src/main/java/com/fdkankan/fusion/service/IModelService.java

@@ -33,4 +33,6 @@ public interface IModelService extends IService<Model> {
     List<Model> getByUserName(String username);
 
     List<Model> getListByModelIds(List<Integer> modelIds);
+
+    List<Model> getListByModelIdStrs(List<String> numList);
 }

+ 7 - 4
src/main/java/com/fdkankan/fusion/service/impl/CaseNumServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fdkankan.fusion.service.impl;
 
+import cn.hutool.core.io.FileUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.fusion.common.FilePath;
 import com.fdkankan.fusion.common.util.OBJToGLBUtil;
@@ -65,7 +66,9 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
                 caseNumEntity.setNumType(param.getType());
                 caseNumEntity.setNum(num);
                 newCaseNums.add(caseNumEntity);
-
+                if(param.getType() == 3){                   //用户上传三维模型跳过
+                    continue;
+                }
                 Model model = new Model();
                 model.setModelDateType("obj");
                 model.setType(param.getType());
@@ -104,12 +107,12 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
                     file.mkdirs();
                 }
                 String[] split = fileName.split("/");
-                uploadToOssUtil.downFormAli(fileName,objPath +"/"+split[split.length-1]);
+                String localPath = objPath +"/"+split[split.length-1];
+                uploadToOssUtil.downFormAli(fileName,localPath);
             }
             OBJToGLBUtil.objToGlb(objPath,glbPath );
             uploadToOssUtil.upload(glbPath,glbOssPath);
-            File file = new File(objPath);
-            file.deleteOnExit();
+            FileUtil.del(objPath);
             return queryPath + "/"+glbOssPath;
         }
         return null;

+ 9 - 7
src/main/java/com/fdkankan/fusion/service/impl/CaseServiceImpl.java

@@ -73,7 +73,7 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implem
         List<SceneVo> listAll = new ArrayList<>();
         for (Integer type : param.getTypeMap().keySet()) {
             List<String> numList = param.getTypeMap().get(type);
-            if(numList ==null || numList.size() <=0){
+            if(numList ==null || numList.size() <=0 || type ==3){
                 continue;
             }
             ScenePram scenePram = new ScenePram();
@@ -96,12 +96,14 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implem
                 BeanUtils.copyProperties(map.get(sceneVo.getNum()),sceneVo);
             }
         }
-        String username = JwtUtil.getUsername(token);
-        List<Model> models = modelService.getByUserName(username);
-        for (Model model : models) {
-            SceneVo sceneVo = new SceneVo();
-            BeanUtils.copyProperties(model,sceneVo);
-            listAll.add(sceneVo);
+        List<String> numList = param.getTypeMap().get(3);       //关联的三维模型
+        if(numList!=null && numList.size() >0){
+            List<Model> models = modelService.getListByModelIdStrs(numList);
+            for (Model model : models) {
+                SceneVo sceneVo = new SceneVo();
+                BeanUtils.copyProperties(model,sceneVo);
+                listAll.add(sceneVo);
+            }
         }
         return listAll;
     }

+ 3 - 10
src/main/java/com/fdkankan/fusion/service/impl/CaseVideoFolderServiceImpl.java

@@ -29,6 +29,8 @@ public class CaseVideoFolderServiceImpl extends ServiceImpl<ICaseVideoFolderMapp
     ICaseVideoService videoService;
     @Autowired
     UploadToOssUtil uploadToOssUtil;
+    @Autowired
+    UploadService uploadService;
 
     @Value("${upload.query-path}")
     private String queryPath;
@@ -49,19 +51,10 @@ public class CaseVideoFolderServiceImpl extends ServiceImpl<ICaseVideoFolderMapp
 
         CaseVideoFolder videoFolder = this.getById(videoFolderId);
         this.removeById(videoFolderId);
-        this.deleteMergeUrl(videoFolder.getVideoMergeUrl());
+        uploadService.deleteOssUrl(videoFolder.getVideoMergeUrl());
 
     }
 
-    @Override
-    public void deleteMergeUrl(String videoMergeUrl) {
-        try {
-            String replace = videoMergeUrl.replace(queryPath, "");
-            uploadToOssUtil.delete(replace);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-    }
 
     @Override
     public long getCountByCaseId(Integer caseId) {

+ 2 - 7
src/main/java/com/fdkankan/fusion/service/impl/CaseVideoServiceImpl.java

@@ -81,7 +81,7 @@ public class CaseVideoServiceImpl extends ServiceImpl<ICaseVideoMapper, CaseVide
         if(videoFolder == null){
             throw new BusinessException(ResultCode.FOLDER_NOT_EXIST);
         }
-        videoFolderService.deleteMergeUrl(videoFolder.getVideoMergeUrl());
+        uploadService.deleteOssUrl(videoFolder.getVideoMergeUrl());
         this.deleteByFolderId(folderId);
         //替换文件夹中文件
         List<CaseVideo> videoList = new ArrayList<>();
@@ -136,12 +136,7 @@ public class CaseVideoServiceImpl extends ServiceImpl<ICaseVideoMapper, CaseVide
     public void delete(Integer videoId) {
         CaseVideo caseVideo = this.getById(videoId);
         this.removeById(videoId);
-        try {
-            String replace = caseVideo.getVideoPath().replace(queryPath, "");
-            uploadToOssUtil.delete(replace);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
+        uploadService.deleteOssUrl(caseVideo.getVideoPath());
     }
 
 

+ 35 - 20
src/main/java/com/fdkankan/fusion/service/impl/FusionNumServiceImpl.java

@@ -19,14 +19,11 @@ import com.fdkankan.fusion.service.ICaseService;
 import com.fdkankan.fusion.service.IFusionNumService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.fusion.service.IModelService;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -63,24 +60,38 @@ public class FusionNumServiceImpl extends ServiceImpl<IFusionNumMapper, FusionNu
     }
 
     @Override
-    public List<FusionNumVo> getListByCaseId(Integer caseId, String token) {
-        List<CaseFusion> fusionList = caseFusionService.getListByCaseId(caseId);
-        if(fusionList.size()<=0){
+    public List<FusionNumVo> getListByCaseId(Integer caseId, Integer fusionNumId,String token) {
+        List<FusionNum> fusionNumList = new ArrayList<>();
+        if(fusionNumId!=null){
+            FusionNum fusionNum = this.getById(fusionNumId);
+            if(fusionNum!=null){
+                fusionNumList = Collections.singletonList(fusionNum);
+            }
+        }else {
+            List<CaseFusion> fusionList = caseFusionService.getListByCaseId(caseId);
+            if(fusionList.size()<=0){
+                return new ArrayList<>();
+            }
+            List<Integer> fusionIdList = fusionList.parallelStream().map(CaseFusion::getFusionId).collect(Collectors.toList());
+            fusionNumList = getListByFusionIdList(fusionIdList);
+        }
+        if(fusionNumList.size() <=0){
             return new ArrayList<>();
         }
-        List<Integer> fusionIdList = fusionList.parallelStream().map(CaseFusion::getFusionId).collect(Collectors.toList());
-        List<FusionNum> listByFusionIdList = getListByFusionIdList(fusionIdList);
         CaseParam param =new CaseParam();
-        HashMap<Integer, List<String>> typeMap = this.getTypeMap(listByFusionIdList);
+        HashMap<Integer, List<String>> typeMap = this.getTypeMap(fusionNumList);
         param.setTypeMap(typeMap);
         param.setCaseId(caseId);
         List<SceneVo> sceneVos = caseService.sceneList(param, token);
         HashMap<Integer,SceneVo> sceneMap = new HashMap<>();
         sceneVos.forEach(entity -> sceneMap.put(entity.getModelId(),entity));
+
         List<FusionNumVo> numVoList = new ArrayList<>();
-        for (FusionNum fusionNum : listByFusionIdList) {
+        for (FusionNum fusionNum : fusionNumList) {
             FusionNumVo fusionNumVo = new FusionNumVo();
             BeanUtils.copyProperties(fusionNum,fusionNumVo);
+            Transform transform = JSONObject.parseObject(fusionNum.getTransform(), Transform.class);
+            fusionNumVo.setTransform(transform);
             fusionNumVo.setSceneData(sceneMap.get(fusionNum.getModelId()));
             numVoList.add(fusionNumVo);
         }
@@ -92,9 +103,6 @@ public class FusionNumServiceImpl extends ServiceImpl<IFusionNumMapper, FusionNu
         List<Integer> modelIds = list.parallelStream().map(FusionNum::getModelId).collect(Collectors.toList());
         List<Model> modelList = modelService.getListByModelIds(modelIds);
         for (Model model : modelList) {
-            if(model.getType() == 3){           //用户上传模型跳过
-                continue;
-            }
             List<String> numList ;
             if(typeMap.get(model.getType()) == null){
                 numList = new ArrayList<>();
@@ -108,10 +116,14 @@ public class FusionNumServiceImpl extends ServiceImpl<IFusionNumMapper, FusionNu
     }
 
     @Override
-    public void add(FusionParam param) {
+    public FusionNumVo add(FusionParam param) {
         if(param.getModelId()==null || param.getCaseId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
+        Model model = modelService.getById(param.getModelId());
+        if(model == null){
+            throw new BusinessException(ResultCode.MODEL_NOT_EXIST);
+        }
         List<CaseFusion> list = caseFusionService.getListByCaseId(param.getCaseId());
         CaseFusion caseFusion = null;
         if(list.size() <=0){
@@ -124,10 +136,13 @@ public class FusionNumServiceImpl extends ServiceImpl<IFusionNumMapper, FusionNu
         FusionNum fusionNum = new FusionNum();
         BeanUtils.copyProperties(param,fusionNum);
         fusionNum.setFusionId(caseFusion.getFusionId());
-        if(StringUtils.isEmpty(fusionNum.getTransform())){
-            fusionNum.setTransform(JSONObject.toJSONString(new Transform()));
-        }
+        fusionNum.setTransform(JSONObject.toJSONString(param.getTransform()));
         this.save(fusionNum);
+        List<FusionNumVo> numVoList = this.getListByCaseId(param.getCaseId(), fusionNum.getFusionNumId(), param.getToken());
+        if(numVoList.size()<=0){
+            throw new BusinessException(ResultCode.ERROR);
+        }
+        return numVoList.get(0);
     }
 
     @Override
@@ -138,8 +153,8 @@ public class FusionNumServiceImpl extends ServiceImpl<IFusionNumMapper, FusionNu
         LambdaUpdateWrapper<FusionNum> wrapper = new LambdaUpdateWrapper<>();
         wrapper.eq(FusionNum::getFusionNumId,param.getFusionNumId());
 
-        if(StringUtils.isNotBlank(param.getTransform())){
-            wrapper.set(FusionNum::getTransform,param.getTransform());
+        if(param.getTransform()!=null){
+            wrapper.set(FusionNum::getTransform,JSONObject.toJSONString(param.getTransform()));
         }
         if(param.getOpacity()!=null){
             wrapper.set(FusionNum::getOpacity,param.getOpacity());

+ 28 - 5
src/main/java/com/fdkankan/fusion/service/impl/ModelServiceImpl.java

@@ -46,6 +46,8 @@ public class ModelServiceImpl extends ServiceImpl<IModelMapper, Model> implement
     @Autowired
     UploadToOssUtil uploadToOssUtil;
     @Autowired
+    UploadService uploadService;
+    @Autowired
     ICaseNumService caseNumService;
     @Autowired
     IFusionNumService fusionNumService;
@@ -88,8 +90,7 @@ public class ModelServiceImpl extends ServiceImpl<IModelMapper, Model> implement
             String objPath = String.format(OBJ_PATH , "modelId_"+model.getModelId());
             String glbPath = String.format(GLB_PATH , "modelId_"+model.getModelId()) +"/"+modelName +"/mesh.glb";
             String glbOssPath = String.format(FilePath.GLB_OSS_PATH, model.getModelId());
-            model.setModelObjUrl(objPath);
-            model.setModelGlbUrl(queryPath + glbOssPath);
+
 
             newObjFile = new File(objPath +"/" + fileName);
             if(!newObjFile.getParentFile().exists()){
@@ -105,17 +106,17 @@ public class ModelServiceImpl extends ServiceImpl<IModelMapper, Model> implement
 
             OBJToGLBUtil.objToGlb(objPath+"/"+modelName,glbPath);
             uploadToOssUtil.upload(glbPath,glbOssPath);
-
+            model.setModelObjUrl(objPath);
+            model.setModelGlbUrl(queryPath + glbOssPath);
             model.setCreateStatus(1);  //上传成功
             this.updateById(model);
         }catch (Exception e){
             model.setCreateStatus(-1);
             this.updateById(model);
-            e.printStackTrace();
             throw e;
         }finally {
             if(newObjFile!=null){
-                newObjFile.deleteOnExit();
+                newObjFile.delete();
             }
         }
 
@@ -127,11 +128,19 @@ public class ModelServiceImpl extends ServiceImpl<IModelMapper, Model> implement
         LambdaQueryWrapper<Model> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(Model::getUserName,username);
         wrapper.eq(Model::getType,3);
+        if(param.getStatus()!=null){    //参数2为成功,数据库中成功为1
+            wrapper.eq(Model::getCreateStatus,param.getStatus() == 2 ? 1 :param.getStatus());
+        }
         if(StringUtils.isNotBlank(param.getModelTitle())){
             wrapper.like(Model::getModelTitle,param.getModelTitle());
         }
         wrapper.orderByDesc(Model::getCreateTime);
         Page<Model> page = this.page(new Page<>(param.getPageNum(),param.getPageSize()),wrapper);
+        for (Model model : page.getRecords()) {
+            if(model.getType() == 3 && StringUtils.isEmpty(model.getNum())) {
+                model.setNum(model.getModelId().toString());
+            }
+        }
         return PageInfo.PageInfo(page);
     }
 
@@ -142,7 +151,14 @@ public class ModelServiceImpl extends ServiceImpl<IModelMapper, Model> implement
         if(caseNumEntityList.size() >0 || fusionNumList.size() >0){
             throw new BusinessException(ResultCode.CASE_USE);
         }
+        Model model = this.getById(modelId);
+        if(model == null ){
+            throw new BusinessException(ResultCode.MODEL_NOT_EXIST);
+        }
         this.removeById(modelId);
+        if(StringUtils.isNotBlank(model.getModelGlbUrl())){
+            uploadService.deleteOssUrl(model.getModelGlbUrl());
+        }
     }
 
     @Override
@@ -160,6 +176,13 @@ public class ModelServiceImpl extends ServiceImpl<IModelMapper, Model> implement
     }
 
     @Override
+    public List<Model> getListByModelIdStrs(List<String> numList) {
+        LambdaQueryWrapper<Model> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(Model::getModelId,numList);
+        return this.list(wrapper);
+    }
+
+    @Override
     public void deleteByNum(List<String> numList) {
         LambdaQueryWrapper<Model> wrapper = new LambdaQueryWrapper<>();
         wrapper.in(Model::getNum,numList);

+ 3 - 1
src/main/java/com/fdkankan/fusion/service/impl/SceneService.java

@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.common.util.JwtUtil;
+import com.fdkankan.fusion.entity.Model;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.common.PageInfo;
 import com.fdkankan.fusion.httpClient.client.FdKKClient;
@@ -17,6 +19,7 @@ import com.fdkankan.fusion.response.SceneVo;
 import com.fdkankan.fusion.service.IModelService;
 import com.fdkankan.fusion.service.ISceneService;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -79,7 +82,6 @@ public class SceneService implements ISceneService {
                 sceneVoList.add(vo);
             }
         }
-
         Page<SceneVo> voPage = new Page<>(param.getPageNum(),param.getPageSize());
         voPage.setRecords(sceneVoList);
         voPage.setTotal(total);

+ 10 - 1
src/main/java/com/fdkankan/fusion/service/impl/UploadService.java

@@ -61,9 +61,18 @@ public class UploadService {
             throw new BusinessException(ResultCode.UPLOAD_ERROR.code,ResultCode.UPLOAD_ERROR.msg);
         }finally {
             if(localFile!=null){
-                localFile.deleteOnExit();   //删除临时文件
+                localFile.delete();   //删除临时文件
             }
         }
 
     }
+
+    public void deleteOssUrl(String path) {
+        try {
+            String replace = path.replace(queryPath, "");
+            uploadToOssUtil.delete(replace);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
 }