Browse Source

多元融合

lyhzzz 3 years ago
parent
commit
28c6e3fba1
70 changed files with 2138 additions and 82 deletions
  1. 11 0
      src/main/java/com/fdkankan/fusion/common/FilePath.java
  2. 8 21
      src/main/java/com/fdkankan/fusion/common/ResultCode.java
  3. 97 0
      src/main/java/com/fdkankan/fusion/common/util/OBJToGLBUtil.java
  4. 1 1
      src/main/java/com/fdkankan/fusion/config/WebAppConfig.java
  5. 1 1
      src/main/java/com/fdkankan/fusion/controller/CaseController.java
  6. 53 0
      src/main/java/com/fdkankan/fusion/controller/CaseFilesController.java
  7. 32 0
      src/main/java/com/fdkankan/fusion/controller/CaseFilesTypeController.java
  8. 55 0
      src/main/java/com/fdkankan/fusion/controller/CaseFusionController.java
  9. 59 0
      src/main/java/com/fdkankan/fusion/controller/CaseViewController.java
  10. 62 0
      src/main/java/com/fdkankan/fusion/controller/HotController.java
  11. 80 0
      src/main/java/com/fdkankan/fusion/controller/HotIconController.java
  12. 4 1
      src/main/java/com/fdkankan/fusion/controller/LoginController.java
  13. 57 0
      src/main/java/com/fdkankan/fusion/controller/ModelController.java
  14. 3 6
      src/main/java/com/fdkankan/fusion/controller/TestController.java
  15. 7 32
      src/main/java/com/fdkankan/fusion/controller/UploadController.java
  16. 62 0
      src/main/java/com/fdkankan/fusion/entity/CaseFiles.java
  17. 51 0
      src/main/java/com/fdkankan/fusion/entity/CaseFilesType.java
  18. 57 0
      src/main/java/com/fdkankan/fusion/entity/CaseFusion.java
  19. 96 0
      src/main/java/com/fdkankan/fusion/entity/CaseView.java
  20. 66 0
      src/main/java/com/fdkankan/fusion/entity/FusionNum.java
  21. 87 0
      src/main/java/com/fdkankan/fusion/entity/Hot.java
  22. 70 0
      src/main/java/com/fdkankan/fusion/entity/HotIcon.java
  23. 76 0
      src/main/java/com/fdkankan/fusion/entity/Model.java
  24. 27 0
      src/main/java/com/fdkankan/fusion/exception/BusinessException.java
  25. 1 1
      src/main/java/com/fdkankan/fusion/exception/GlobalExceptionHandler.java
  26. 2 2
      src/main/java/com/fdkankan/fusion/generate/AutoGenerate.java
  27. 0 1
      src/main/java/com/fdkankan/fusion/httpClient/client/FdKKNewClient.java
  28. 18 0
      src/main/java/com/fdkankan/fusion/mapper/ICaseFilesMapper.java
  29. 18 0
      src/main/java/com/fdkankan/fusion/mapper/ICaseFilesTypeMapper.java
  30. 18 0
      src/main/java/com/fdkankan/fusion/mapper/ICaseFusionMapper.java
  31. 18 0
      src/main/java/com/fdkankan/fusion/mapper/ICaseViewMapper.java
  32. 18 0
      src/main/java/com/fdkankan/fusion/mapper/IFusionNumMapper.java
  33. 18 0
      src/main/java/com/fdkankan/fusion/mapper/IHotIconMapper.java
  34. 18 0
      src/main/java/com/fdkankan/fusion/mapper/IHotMapper.java
  35. 18 0
      src/main/java/com/fdkankan/fusion/mapper/IModelMapper.java
  36. 10 0
      src/main/java/com/fdkankan/fusion/request/FusionParam.java
  37. 13 0
      src/main/java/com/fdkankan/fusion/request/ModelPram.java
  38. 1 1
      src/main/java/com/fdkankan/fusion/request/ScenePram.java
  39. 19 0
      src/main/java/com/fdkankan/fusion/service/ICaseFilesService.java
  40. 16 0
      src/main/java/com/fdkankan/fusion/service/ICaseFilesTypeService.java
  41. 19 0
      src/main/java/com/fdkankan/fusion/service/ICaseFusionService.java
  42. 2 0
      src/main/java/com/fdkankan/fusion/service/ICaseNumService.java
  43. 23 0
      src/main/java/com/fdkankan/fusion/service/ICaseViewService.java
  44. 26 0
      src/main/java/com/fdkankan/fusion/service/IFusionNumService.java
  45. 25 0
      src/main/java/com/fdkankan/fusion/service/IHotIconService.java
  46. 25 0
      src/main/java/com/fdkankan/fusion/service/IHotService.java
  47. 27 0
      src/main/java/com/fdkankan/fusion/service/IModelService.java
  48. 37 0
      src/main/java/com/fdkankan/fusion/service/impl/CaseFilesServiceImpl.java
  49. 20 0
      src/main/java/com/fdkankan/fusion/service/impl/CaseFilesTypeServiceImpl.java
  50. 29 0
      src/main/java/com/fdkankan/fusion/service/impl/CaseFusionServiceImpl.java
  51. 7 0
      src/main/java/com/fdkankan/fusion/service/impl/CaseNumServiceImpl.java
  52. 1 1
      src/main/java/com/fdkankan/fusion/service/impl/CaseServiceImpl.java
  53. 1 1
      src/main/java/com/fdkankan/fusion/service/impl/CaseVideoServiceImpl.java
  54. 77 0
      src/main/java/com/fdkankan/fusion/service/impl/CaseViewServiceImpl.java
  55. 5 5
      src/main/java/com/fdkankan/fusion/service/impl/FdHotService.java
  56. 81 0
      src/main/java/com/fdkankan/fusion/service/impl/FusionNumServiceImpl.java
  57. 79 0
      src/main/java/com/fdkankan/fusion/service/impl/HotIconServiceImpl.java
  58. 75 0
      src/main/java/com/fdkankan/fusion/service/impl/HotServiceImpl.java
  59. 128 0
      src/main/java/com/fdkankan/fusion/service/impl/ModelServiceImpl.java
  60. 21 3
      src/main/java/com/fdkankan/fusion/service/impl/SceneService.java
  61. 57 0
      src/main/java/com/fdkankan/fusion/service/impl/UploadService.java
  62. 5 5
      src/main/resources/application.yaml
  63. 5 0
      src/main/resources/mapper/fusion/CaseFilesMapper.xml
  64. 5 0
      src/main/resources/mapper/fusion/CaseFilesTypeMapper.xml
  65. 5 0
      src/main/resources/mapper/fusion/CaseFusionMapper.xml
  66. 5 0
      src/main/resources/mapper/fusion/CaseViewMapper.xml
  67. 5 0
      src/main/resources/mapper/fusion/FusionNumMapper.xml
  68. 5 0
      src/main/resources/mapper/fusion/HotIconMapper.xml
  69. 5 0
      src/main/resources/mapper/fusion/HotMapper.xml
  70. 5 0
      src/main/resources/mapper/fusion/ModelMapper.xml

+ 11 - 0
src/main/java/com/fdkankan/fusion/common/FilePath.java

@@ -0,0 +1,11 @@
+package com.fdkankan.fusion.common;
+
+public class FilePath {
+
+    public final static String hotPath = "scene_view_data/%s/user/hot.json";
+    public final static String hotIconDefaultPath = "fusion/default/tag_icon_default.svg";
+
+    public final static  String OBJ_PATH = "D:\\model\\obj";
+    public final static String GLB_PATH = "D:\\model\\glb";
+    public final static String GLB_OSS_PATH = "fusion/model/glb";
+}

+ 8 - 21
src/main/java/com/fdkankan/fusion/common/ResultCode.java

@@ -1,30 +1,17 @@
 package com.fdkankan.fusion.common;
 
 public enum ResultCode {
-    SUCCESS(0,"操作成功"),
-    ERROR(-1,"操作失败"),
-
-    NOT_LOGIN(2001,"请重新登录!"),
-    USER_NOT_EXIST(2002,"用户不存在!"),
-    FD_USER_NOT_EXIST(2003,"四维用户不存在!"),
-    PHONE_EXIST(2004,"手机号码已注册!"),
-    OTHER_LOGIN(2005,"登录信息失效请重新登录!"),
-    PASSWORD_ERROR(2006,"账号或密码错误!"),
-
-    NOT_RECORD(4001,"没有记录"),
-    PARAM_MISS(40002,"参数缺失!"),
-    NOT_PERM(5014,"您没有该场景的编辑权限!"),
-
-    OLD_PASSWORD_ERROR(50001,"原密码错误!"),
-    OLD_NEW_PASSWORD_EQ(50002,"原密码与新密码一致无需更改!"),
-
-    NOT_DELETE_PARENT_DEPT(6001,"集团总部不可删除"),
-    NOT_DELETE_DEPT_USER(6002,"请先删除专柜下用户"),
-    NOT_DELETE_DEPT_SHOP(6003,"请先删除专柜下店铺"),
 
     UPLOAD_ERROR(7001,"文件上传失败"),
     UPLOAD_FILE_NO_EXIST(7002,"上传文件不存在"),
-    UPLOAD_FILE_TO_LONG(7003,"文件上传过大");
+    UPLOAD_FILE_TO_LONG(7003,"文件上传过大"),
+    UPLOAD_FILE_TYPE_ERROR(7005,"文件类型错误"),
+    UPLOAD_FILE_MSG_ERROR(7006,"文件内容错误"),
+    UPLOAD_FILE_OBJ_ERROR(7007,"文件内容错误,缺少obj,或者mtl文件"),
+    SYSTEM_HOT_ICON_NOT_EXIST(7008,"系统默认icon不存在"),
+    SYSTEM_HOT_ICON_NOT_DELETE(7009,"系统默认icon不能删除"),
+
+    HOT_ICON_NOT_EXIST(7004,"热点icon不存在");
 
     public int code;
     public String msg;

+ 97 - 0
src/main/java/com/fdkankan/fusion/common/util/OBJToGLBUtil.java

@@ -0,0 +1,97 @@
+package com.fdkankan.fusion.common.util;
+
+import com.fdkankan.common.util.CreateObjUtil;
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.exception.BusinessException;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.util.LocaleID;
+
+import java.io.*;
+import java.util.LinkedHashSet;
+
+@Slf4j
+public class OBJToGLBUtil {
+
+    public static void objToGlb(String objPath, String glbPath)  {
+        log.info("obj转换glb开始");
+        String command = "obj2gltf " + objPath + " " + glbPath;
+        log.info("执行obj转换glb命令路径-{}", command);
+        CreateObjUtil.callshell(command);
+        log.info("obj转换glb完毕:" + command);
+    }
+
+    public static boolean checkObj(String objPath) {
+        File file1 = new File(objPath);
+        File[] files = file1.listFiles();
+        if(files == null || files.length <=0){
+            throw new BusinessException(ResultCode.UPLOAD_FILE_NO_EXIST);
+        }
+        File mtlFile = null;
+        File objFile = null;
+        for (File file2 : files) {
+            if(file2.isDirectory()){
+                return checkObj(file2.getPath());
+            }
+            if(file2.getName().contains("obj") ){
+                objFile = file2;
+            }
+            if(file2.getName().contains("mtl") ){
+                mtlFile = file2;
+            }
+        }
+        if(mtlFile == null || objFile == null ){
+            throw new BusinessException(ResultCode.UPLOAD_FILE_OBJ_ERROR);
+        }
+        return checkMtl(file1,mtlFile);
+    }
+
+    private static boolean checkMtl(File allFile,File file) {
+        if(!file.getName().contains("mtl")){
+            return false;
+        }
+        LinkedHashSet<String> imgName = new LinkedHashSet<>();
+        if(allFile == null || allFile.length()<=0 ){
+            return false;
+        }
+        File[] files = allFile.listFiles();
+        if(files == null || files.length<=0 ){
+            return false;
+        }
+        for (File listFile : files) {
+            String modelName = listFile.getName().substring(0,listFile.getName().lastIndexOf("."));
+            imgName.add(modelName);
+        }
+        LinkedHashSet<String> imgMtl = readMtlFile(file.getPath());
+        for (String mtlName : imgMtl) {
+            if(!imgName.contains(mtlName)){
+                throw new BusinessException(-1,mtlName +".jpg 图片缺失!");
+            }
+        }
+        return true;
+    }
+
+    public static LinkedHashSet<String> readMtlFile(String mtlPath) {
+        LinkedHashSet<String> imgName = new LinkedHashSet<>();
+        FileInputStream fis = null;
+        BufferedReader br = null;
+        try {
+            fis = new FileInputStream(new File(mtlPath));
+            br = new BufferedReader(new InputStreamReader(fis));
+            String line = null;
+            while ((line = br.readLine()) != null) {
+                String[] tempsa = line.split("[ ]+");
+                if (tempsa[0].trim().equals("newmtl")) {
+                    imgName.add(tempsa[1]);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return imgName;
+    }
+
+
+    public static void main(String[] args) {
+        System.out.println(checkObj("D:\\model"));
+    }
+}

+ 1 - 1
src/main/java/com/fdkankan/fusion/config/WebAppConfig.java

@@ -24,7 +24,7 @@ public class WebAppConfig implements WebMvcConfigurer {
 	@Override
 	public void addInterceptors(InterceptorRegistry registry) {
 		registry.addInterceptor(tokenInterceptor).addPathPatterns("/**")
-				.excludePathPatterns("/**/login/**","/test/**");
+				.excludePathPatterns("/**/fdLogin/**","/test/**");
 		WebMvcConfigurer.super.addInterceptors(registry);
 	}
 

+ 1 - 1
src/main/java/com/fdkankan/fusion/controller/CaseController.java

@@ -3,7 +3,7 @@ package com.fdkankan.fusion.controller;
 
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.fusion.entity.CaseEntity;
 import com.fdkankan.fusion.request.CaseParam;

+ 53 - 0
src/main/java/com/fdkankan/fusion/controller/CaseFilesController.java

@@ -0,0 +1,53 @@
+package com.fdkankan.fusion.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.fusion.entity.CaseFiles;
+import com.fdkankan.fusion.service.ICaseFilesService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@RestController
+@RequestMapping("/caseFiles")
+public class CaseFilesController {
+
+    @Autowired
+    ICaseFilesService caseFilesService;
+
+    @GetMapping("/allList")
+    public ResultData allList(@RequestParam(required = false) Integer caseId,
+                              @RequestParam(required = false) Integer filesTypeId){
+        return ResultData.ok(caseFilesService.allList(caseId,filesTypeId));
+    }
+
+    @PostMapping("/add")
+    public ResultData add(@RequestBody CaseFiles caseFiles ){
+        if(caseFiles.getCaseId() == null || StringUtils.isEmpty(caseFiles.getFilesTitle())
+                || caseFiles.getFilesTypeId()== null || StringUtils.isEmpty(caseFiles.getFilesUrl())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        caseFilesService.save(caseFiles);
+        return ResultData.ok();
+    }
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody CaseFiles caseFiles ){
+        if(caseFiles.getFilesId() == null ){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        caseFilesService.removeById(caseFiles.getFilesId());
+        return ResultData.ok();
+    }
+}
+

+ 32 - 0
src/main/java/com/fdkankan/fusion/controller/CaseFilesTypeController.java

@@ -0,0 +1,32 @@
+package com.fdkankan.fusion.controller;
+
+
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.fusion.service.ICaseFilesTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@RestController
+@RequestMapping("/caseFilesType")
+public class CaseFilesTypeController {
+
+    @Autowired
+    ICaseFilesTypeService caseFilesTypeService;
+
+    @GetMapping("/allList")
+    public ResultData allList(){
+        return ResultData.ok(caseFilesTypeService.list());
+    }
+}
+

+ 55 - 0
src/main/java/com/fdkankan/fusion/controller/CaseFusionController.java

@@ -0,0 +1,55 @@
+package com.fdkankan.fusion.controller;
+
+
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.fusion.entity.CaseFusion;
+import com.fdkankan.fusion.entity.FusionNum;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.request.FusionParam;
+import com.fdkankan.fusion.service.ICaseFusionService;
+import com.fdkankan.fusion.service.IFusionNumService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-04
+ */
+@RestController
+@RequestMapping("/caseFusion")
+public class CaseFusionController {
+
+    @Autowired
+    ICaseFusionService caseFusionService;
+    @Autowired
+    IFusionNumService fusionNumService;
+
+    @GetMapping("/list")
+    public ResultData allList(@RequestParam(required = false) Integer caseId){
+        return ResultData.ok(fusionNumService.getListByCaseId(caseId));
+    }
+
+    @PostMapping("/add")
+    public ResultData add(@RequestBody FusionParam param){
+        fusionNumService.add(param);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestParam(required = false) Integer id){
+        if(id == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        return ResultData.ok(fusionNumService.removeById(id));
+    }
+}
+

+ 59 - 0
src/main/java/com/fdkankan/fusion/controller/CaseViewController.java

@@ -0,0 +1,59 @@
+package com.fdkankan.fusion.controller;
+
+
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.fusion.entity.CaseView;
+import com.fdkankan.fusion.service.ICaseViewService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@RestController
+@RequestMapping("/caseView")
+public class CaseViewController {
+
+    @Autowired
+    ICaseViewService caseViewService;
+
+
+    @GetMapping("/allList")
+    public ResultData allList(@RequestParam(required = false)Integer caseId,
+                              @RequestParam(required = false) String num,
+                              @RequestParam(required = false,defaultValue = "50") String smallImgH,
+                              @RequestParam(required = false,defaultValue = "50") String smallImgW){
+        return ResultData.ok(caseViewService.allList(caseId,num,smallImgH,smallImgW));
+    }
+
+    @PostMapping("/add")
+    public ResultData add(@RequestBody CaseView caseView){
+        caseViewService.add(caseView);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/updateNameOrSort")
+    public ResultData updateNameOrSort(@RequestBody CaseView caseView){
+        caseViewService.updateNameOrSort(caseView);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody CaseView caseView){
+        if(caseView.getViewId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        caseViewService.removeById(caseView.getViewId());
+        return ResultData.ok();
+    }
+
+
+}
+

+ 62 - 0
src/main/java/com/fdkankan/fusion/controller/HotController.java

@@ -0,0 +1,62 @@
+package com.fdkankan.fusion.controller;
+
+
+import cn.hutool.jwt.JWT;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.fusion.entity.Hot;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.service.IHotIconService;
+import com.fdkankan.fusion.service.IHotService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-03
+ */
+@RestController
+@RequestMapping("/hot")
+public class HotController {
+
+    @Autowired
+    IHotService hotService;
+    @Autowired
+    IHotIconService hotIconService;
+
+    @GetMapping("/list")
+    public ResultData list(@RequestParam(required = false)Integer fusionId, @RequestParam(required = false) Integer caseId){
+        return ResultData.ok(hotService.getList(fusionId,caseId));
+    }
+
+    @PostMapping("/addOrUpdate")
+    public ResultData save(@RequestBody Hot hot,@RequestHeader String token){
+        if(hot.getFusionId() == null || StringUtils.isEmpty(hot.getHotTitle())
+                || hot.getHotIconId() == null || StringUtils.isEmpty(hot.getHotIconUrl())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        //新增时取消icon上次使用标识,增加使用次数,设置新的上次使用标识
+        if(hot.getHotId()==null){
+            hotIconService.addUseNum(hot.getHotIconId());
+        }
+        hotService.saveOrUpdate(hot);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody Hot hot){
+        if(hot.getHotId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        hotService.removeById(hot);
+        return ResultData.ok();
+    }
+
+}
+

+ 80 - 0
src/main/java/com/fdkankan/fusion/controller/HotIconController.java

@@ -0,0 +1,80 @@
+package com.fdkankan.fusion.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.common.response.Result;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.fusion.entity.HotIcon;
+import com.fdkankan.fusion.service.IHotIconService;
+import com.fdkankan.fusion.service.IHotService;
+import com.fdkankan.fusion.service.impl.UploadService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@RestController
+@RequestMapping("/edit/hotIcon")
+public class HotIconController {
+
+    @Autowired
+    IHotIconService hotIconService;
+    @Autowired
+    IHotService hotService;
+    @Autowired
+    UploadService uploadService;
+
+    @GetMapping("/list")
+    public ResultData list(@RequestHeader String token){
+        String username = JwtUtil.getUsername(token);
+        return ResultData.ok(hotIconService.getListByUserName(username));
+    }
+
+    @PostMapping("/add")
+    public ResultData add(@RequestParam(required = false) MultipartFile file, @RequestHeader String token) throws IOException {
+        String iconUrl = uploadService.uploadFile(file, true, "icon/");
+
+        String username = JwtUtil.getUsername(token);
+        HotIcon hotIcon = new HotIcon();
+        hotIcon.setIconUrl(iconUrl);
+        hotIcon.setUserName(username);
+        if(StringUtils.isEmpty(hotIcon.getIconUrl())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        //取消用户之前新增标记
+        hotIconService.cancelIsNew(username);
+        if(StringUtils.isEmpty(hotIcon.getIconTitle())){
+            String fileName = file.getOriginalFilename();
+            assert fileName != null;
+            hotIcon.setIconTitle(fileName.substring(0,fileName.lastIndexOf(".")));
+        }
+        hotIconService.save(hotIcon);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody HotIcon hotIcon){
+        if(hotIcon.getIconId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+
+        hotService.updateDefaultIcon(hotIcon.getIconId());
+        hotIconService.removeById(hotIcon.getIconId());
+        return ResultData.ok();
+    }
+}
+

+ 4 - 1
src/main/java/com/fdkankan/fusion/controller/LoginController.java

@@ -24,6 +24,9 @@ public class LoginController {
     @PostMapping("/fdLogin")
     public ResultData fdLogin(@RequestBody FdkkLoginRequest request){
         FdkkResponse<FdkkLoginVo> fdkkLoginVo = fdKKClient.fdkkLogin(request);
-        return ResultData.ok(fdkkLoginVo.getData());
+        if(fdkkLoginVo.getCode() == 0){
+            return ResultData.ok(fdkkLoginVo.getData());
+        }
+        return ResultData.error(fdkkLoginVo.getCode(),fdkkLoginVo.getMsg());
     }
 }

+ 57 - 0
src/main/java/com/fdkankan/fusion/controller/ModelController.java

@@ -0,0 +1,57 @@
+package com.fdkankan.fusion.controller;
+
+
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.entity.Model;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.request.ModelPram;
+import com.fdkankan.fusion.request.ScenePram;
+import com.fdkankan.fusion.service.ICaseFusionService;
+import com.fdkankan.fusion.service.ICaseNumService;
+import com.fdkankan.fusion.service.IModelService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-03
+ */
+@RestController
+@RequestMapping("/model")
+public class ModelController {
+
+    @Autowired
+    IModelService modelService;
+
+
+    @PostMapping("/uploadObj")
+    public ResultData uploadObj(@RequestParam(required = false) MultipartFile file,
+                                @RequestHeader String token) throws Exception {
+        String username = JwtUtil.getUsername(token);
+        modelService.uploadObj(file,username);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/list")
+    public ResultData list(@RequestBody ModelPram param,@RequestHeader String token){
+        return ResultData.ok(modelService.pageList(param,token));
+    }
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody ModelPram param,@RequestHeader String token){
+        if(param.getModelId() == null){
+            throw  new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        modelService.delete(param.getModelId());
+        return ResultData.ok();
+    }
+}
+

+ 3 - 6
src/main/java/com/fdkankan/fusion/controller/TestController.java

@@ -19,13 +19,10 @@ import javax.annotation.Resource;
 @RestController
 public class TestController {
 
-    @Resource
-    FdKKClient fdKKClient;
 
-    @PostMapping("/test")
-    public String test(@RequestBody FdkkLoginRequest request){
-        FdkkResponse<FdkkLoginVo> fdkkLoginVoFdkkResponse = fdKKClient.fdkkLogin(request);
-        return JSONObject.toJSONString(fdkkLoginVoFdkkResponse);
+    @RequestMapping("/test")
+    public String test(){
+        return JSONObject.toJSONString("");
     }
 
 

+ 7 - 32
src/main/java/com/fdkankan/fusion/controller/UploadController.java

@@ -1,11 +1,13 @@
 package com.fdkankan.fusion.controller;
 
 import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.service.impl.UploadService;
 import com.fdkankan.fyun.oss.UploadToOssUtil;
 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.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -21,40 +23,13 @@ import java.util.UUID;
 @RequestMapping("/upload")
 public class UploadController {
 
-    @Resource
-    private UploadToOssUtil uploadToOssUtil;
-
-    @Value("${upload.file-path}")
-    private String filePath;
-    @Value("${upload.query-path}")
-    private String queryPath;
+    @Autowired
+    UploadService uploadService;
 
 
     @PostMapping("/file")
     public ResultData file(@RequestParam(required = false) MultipartFile file) throws Exception {
-        if(file.isEmpty()){
-            throw new BusinessException(ResultCode.UPLOAD_FILE_NO_EXIST.code,ResultCode.UPLOAD_FILE_NO_EXIST.msg);
-        }
-        if(file.getSize()>10 * 1024 * 1024 * 100){
-            System.out.println(file.getSize());
-            throw new BusinessException(ResultCode.UPLOAD_FILE_TO_LONG.code,ResultCode.UPLOAD_FILE_TO_LONG.msg);
-        }
-        //获取文件名
-        String fileName = file.getOriginalFilename();
-        if(StringUtils.isEmpty(fileName)){
-            throw new BusinessException(ResultCode.UPLOAD_FILE_NO_EXIST.code,ResultCode.UPLOAD_FILE_NO_EXIST.msg);
-        }
-        //获取文件后缀名
-        String suffixName = fileName.substring(fileName.lastIndexOf("."));
-        //重新生成文件名
-        fileName = UUID.randomUUID().toString().replace("-","");
-        File localFile = File.createTempFile(fileName,suffixName);
-        file.transferTo(localFile);
-        String path = localFile.getPath();
-        uploadToOssUtil.upload(path,filePath + fileName + suffixName);
-        if(!uploadToOssUtil.existKey(filePath + fileName + suffixName)){
-            throw new BusinessException(ResultCode.UPLOAD_ERROR.code,ResultCode.UPLOAD_ERROR.msg);
-        }
-        return ResultData.ok( queryPath + filePath + fileName + suffixName);
+
+        return ResultData.ok( uploadService.uploadFile(file,true,"file/"));
     }
 }

+ 62 - 0
src/main/java/com/fdkankan/fusion/entity/CaseFiles.java

@@ -0,0 +1,62 @@
+package com.fdkankan.fusion.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@Getter
+@Setter
+@TableName("t_case_files")
+public class CaseFiles implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 卷宗
+     */
+    @TableId(value = "files_id", type = IdType.AUTO)
+    private Integer filesId;
+
+    @TableField("case_id")
+    private Integer caseId;
+    /**
+     * 附件类型
+     */
+    @TableField("files_type_id")
+    private Integer filesTypeId;
+
+    /**
+     * 附件标题
+     */
+    @TableField("files_title")
+    private String filesTitle;
+
+    @TableField("files_url")
+    private String filesUrl;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private String createTime;
+
+    @TableField("update_time")
+    private String updateTime;
+
+
+}

+ 51 - 0
src/main/java/com/fdkankan/fusion/entity/CaseFilesType.java

@@ -0,0 +1,51 @@
+package com.fdkankan.fusion.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@Getter
+@Setter
+@TableName("t_case_files_type")
+public class CaseFilesType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 附件类型
+     */
+    @TableId(value = "files_type_id", type = IdType.AUTO)
+    private Integer filesTypeId;
+
+    /**
+     * 附件类型名称
+     */
+    @TableField("files_type_name")
+    private String filesTypeName;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private String createTime;
+
+    @TableField("update_time")
+    private String updateTime;
+
+
+}

+ 57 - 0
src/main/java/com/fdkankan/fusion/entity/CaseFusion.java

@@ -0,0 +1,57 @@
+package com.fdkankan.fusion.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-04
+ */
+@Getter
+@Setter
+@TableName("t_case_fusion")
+public class CaseFusion implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 多元融合
+     */
+    @TableId(value = "fusion_id", type = IdType.AUTO)
+    private Integer fusionId;
+
+    /**
+     * 融合标题
+     */
+    @TableField("fusion_title")
+    private String fusionTitle;
+
+    /**
+     * 案件id
+     */
+    @TableField("case_id")
+    private Integer caseId;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private String createTime;
+
+    @TableField("update_time")
+    private String updateTime;
+
+
+}

+ 96 - 0
src/main/java/com/fdkankan/fusion/entity/CaseView.java

@@ -0,0 +1,96 @@
+package com.fdkankan.fusion.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@Getter
+@Setter
+@TableName("t_case_view")
+public class CaseView implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 视图截取
+     */
+    @TableId(value = "view_id", type = IdType.AUTO)
+    private Integer viewId;
+
+    /**
+     * 视图名称
+     */
+    @TableField("view_title")
+    private String viewTitle;
+
+    /**
+     * 场景进入位置
+     */
+    @TableField("view_point")
+    private String viewPoint;
+
+    /**
+     * 视图截图
+     */
+    @TableField("view_img")
+    private String viewImg;
+
+    /**
+     * 视图截图缩略图
+     */
+    @TableField("view_img_small")
+    private String viewImgSmall;
+
+    /**
+     * 案件id
+     */
+    @TableField("case_id")
+    private Integer caseId;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * 场景类型
+     */
+    @TableField("num_type")
+    private Integer numType;
+
+    /**
+     * 场景链接
+     */
+    @TableField("num_thumb")
+    private String numThumb;
+
+    @TableField("sort")
+    private Integer sort;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private String createTime;
+
+    @TableField("update_time")
+    private String updateTime;
+
+
+}

+ 66 - 0
src/main/java/com/fdkankan/fusion/entity/FusionNum.java

@@ -0,0 +1,66 @@
+package com.fdkankan.fusion.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-04
+ */
+@Getter
+@Setter
+@TableName("t_fusion_num")
+public class FusionNum implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 融合场景id
+     */
+    @TableField("fusion_id")
+    private Integer fusionId;
+
+    /**
+     * 场景码或modelId
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * 场景类型 0 看看,1看见,2深时,3三维模型
+     */
+    @TableField("num_type")
+    private Integer numType;
+
+    /**
+     * 位置json
+     */
+    @TableField("fusion_point")
+    private String fusionPoint;
+    /**
+     * 是否隐藏0否,1是
+     */
+    @TableField("hide")
+    private Integer hide;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 87 - 0
src/main/java/com/fdkankan/fusion/entity/Hot.java

@@ -0,0 +1,87 @@
+package com.fdkankan.fusion.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-03
+ */
+@Getter
+@Setter
+@TableName("t_hot")
+public class Hot implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 热点id
+     */
+    @TableId(value = "hot_id", type = IdType.AUTO)
+    private Integer hotId;
+
+    /**
+     * 热点标题
+     */
+    @TableField("hot_title")
+    private String hotTitle;
+
+    /**
+     * 热点内容json
+     */
+    @TableField("hot_msg")
+    private String hotMsg;
+
+    /**
+     * 热点附件链接json
+     */
+    @TableField("hot_info")
+    private String hotInfo;
+
+    /**
+     * 热点位置
+     */
+    @TableField("hot_point")
+    private String hotPoint;
+
+    @TableField("fusion_id")
+    private Integer fusionId;
+
+    /**
+     * 热点icon链接
+     */
+    @TableField("hot_icon_id")
+    private Integer hotIconId;
+    /**
+     * 热点icon链接
+     */
+    @TableField("hot_icon_url")
+    private String hotIconUrl;
+    /**
+     * 热点icon链接
+     */
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private String createTime;
+
+    @TableField("update_time")
+    private String updateTime;
+
+
+
+}

+ 70 - 0
src/main/java/com/fdkankan/fusion/entity/HotIcon.java

@@ -0,0 +1,70 @@
+package com.fdkankan.fusion.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@Getter
+@Setter
+@TableName("t_hot_icon")
+public class HotIcon implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "icon_id", type = IdType.AUTO)
+    private Integer iconId;
+
+    @TableField("icon_title")
+    private String iconTitle;
+
+    @TableField("icon_url")
+    private String iconUrl;
+
+    @TableField("user_name")
+    private String userName;
+
+    /**
+     * 是否系统默认,0否,1是
+     */
+    @TableField("system")
+    private Integer system;
+
+    /**
+     * 使用次数
+     */
+    @TableField("use_num")
+    private Integer useNum;
+    /**
+     * 上次使用0否,1是
+     */
+    @TableField("last_use")
+    private Integer lastUse;
+    /**
+     * 新增0否,1是
+     */
+    @TableField("is_new")
+    private Integer isNew;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private String createTime;
+
+    @TableField("update_time")
+    private String updateTime;
+
+
+}

+ 76 - 0
src/main/java/com/fdkankan/fusion/entity/Model.java

@@ -0,0 +1,76 @@
+package com.fdkankan.fusion.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-03
+ */
+@Getter
+@Setter
+@TableName("t_model")
+public class Model implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 三维模型id
+     */
+    @TableId(value = "model_id", type = IdType.AUTO)
+    private Integer modelId;
+
+    /**
+     * 三维模型标题
+     */
+    @TableField("model_title")
+    private String modelTitle;
+
+    /**
+     * 三维模型数据类型
+     */
+    @TableField("model_date_type")
+    private String modelDateType;
+
+    /**
+     * 大小
+     */
+    @TableField("model_size")
+    private Long modelSize;
+
+    @TableField("model_obj_url")
+    private String modelObjUrl;
+
+    @TableField("model_glb_url")
+    private String modelGlbUrl;
+
+    @TableField("user_name")
+    private String userName;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_status")
+    private Integer createStatus;
+
+    @TableField("create_time")
+    private String createTime;
+
+    @TableField("update_time")
+    private String updateTime;
+
+
+}

+ 27 - 0
src/main/java/com/fdkankan/fusion/exception/BusinessException.java

@@ -0,0 +1,27 @@
+package com.fdkankan.fusion.exception;
+
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.fusion.common.ResultCode;
+import lombok.Data;
+
+/**
+ * 自定义业务异常类
+ */
+@Data
+public class BusinessException extends RuntimeException {
+    private int code;
+    private String message;
+
+    public BusinessException(Integer code, String msg){
+        this.code = code;
+        this.message = msg;
+    }
+    public BusinessException(ErrorCode errorCode) {
+        this.code = errorCode.code();
+        this.message = errorCode.message();
+    }
+    public BusinessException(ResultCode errorCode) {
+        this.code = errorCode.code;
+        this.message = errorCode.msg;
+    }
+}

+ 1 - 1
src/main/java/com/fdkankan/fusion/exception/GlobalExceptionHandler.java

@@ -1,6 +1,6 @@
 package com.fdkankan.fusion.exception;
 
-import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.ExceptionHandler;

+ 2 - 2
src/main/java/com/fdkankan/fusion/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") ;
 
         generate(path,"fusion", getTables(new String[]{
-                "t_case_video",
+                "t_fusion_num",
         }));
 
 //        generate(path,"goods", getTables(new String[]{
@@ -78,7 +78,7 @@ public class AutoGenerate {
 
                             .entityBuilder()
                             .enableLombok()
-                            .logicDeleteColumnName("rec_status")
+                            .logicDeleteColumnName("tb_status")
                             .enableTableFieldAnnotation()
                             //.superClass(BaseEntity.class)
 

+ 0 - 1
src/main/java/com/fdkankan/fusion/httpClient/client/FdKKNewClient.java

@@ -4,7 +4,6 @@ import com.dtflys.forest.annotation.Address;
 import com.dtflys.forest.annotation.Header;
 import com.dtflys.forest.annotation.JSONBody;
 import com.dtflys.forest.annotation.Post;
-import com.fdkankan.fusion.httpClient.address.FdkkAddressSource;
 import com.fdkankan.fusion.httpClient.address.NewFdkkAddressSource;
 import com.fdkankan.fusion.httpClient.request.FdkkLoginRequest;
 import com.fdkankan.fusion.httpClient.response.FdkkLoginVo;

+ 18 - 0
src/main/java/com/fdkankan/fusion/mapper/ICaseFilesMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.mapper;
+
+import com.fdkankan.fusion.entity.CaseFiles;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@Mapper
+public interface ICaseFilesMapper extends BaseMapper<CaseFiles> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/fusion/mapper/ICaseFilesTypeMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.mapper;
+
+import com.fdkankan.fusion.entity.CaseFilesType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@Mapper
+public interface ICaseFilesTypeMapper extends BaseMapper<CaseFilesType> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/fusion/mapper/ICaseFusionMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.mapper;
+
+import com.fdkankan.fusion.entity.CaseFusion;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-04
+ */
+@Mapper
+public interface ICaseFusionMapper extends BaseMapper<CaseFusion> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/fusion/mapper/ICaseViewMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.mapper;
+
+import com.fdkankan.fusion.entity.CaseView;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@Mapper
+public interface ICaseViewMapper extends BaseMapper<CaseView> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/fusion/mapper/IFusionNumMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.mapper;
+
+import com.fdkankan.fusion.entity.FusionNum;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-04
+ */
+@Mapper
+public interface IFusionNumMapper extends BaseMapper<FusionNum> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/fusion/mapper/IHotIconMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.mapper;
+
+import com.fdkankan.fusion.entity.HotIcon;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@Mapper
+public interface IHotIconMapper extends BaseMapper<HotIcon> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/fusion/mapper/IHotMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.mapper;
+
+import com.fdkankan.fusion.entity.Hot;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-03
+ */
+@Mapper
+public interface IHotMapper extends BaseMapper<Hot> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/fusion/mapper/IModelMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.mapper;
+
+import com.fdkankan.fusion.entity.Model;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-03
+ */
+@Mapper
+public interface IModelMapper extends BaseMapper<Model> {
+
+}

+ 10 - 0
src/main/java/com/fdkankan/fusion/request/FusionParam.java

@@ -0,0 +1,10 @@
+package com.fdkankan.fusion.request;
+
+import com.fdkankan.fusion.entity.FusionNum;
+import lombok.Data;
+
+@Data
+public class FusionParam extends FusionNum {
+    private Integer caseId;
+
+}

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

@@ -0,0 +1,13 @@
+package com.fdkankan.fusion.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ModelPram extends RequestBase {
+    private String modelTitle;
+    private Integer createStatus;
+    private Integer modelId;
+}

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

@@ -7,7 +7,7 @@ import java.util.List;
 
 @Data
 public class ScenePram extends RequestBase {
-    private Integer type; //0 看看,看见 ;1深时
+    private Integer type; //0 看看,1看见 ;2深时
     private String sceneName;
     private List<String> numList;
 }

+ 19 - 0
src/main/java/com/fdkankan/fusion/service/ICaseFilesService.java

@@ -0,0 +1,19 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.CaseFiles;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+public interface ICaseFilesService extends IService<CaseFiles> {
+
+    List<CaseFiles> allList(Integer caseId, Integer caseFilesTypeId);
+}

+ 16 - 0
src/main/java/com/fdkankan/fusion/service/ICaseFilesTypeService.java

@@ -0,0 +1,16 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.CaseFilesType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+public interface ICaseFilesTypeService extends IService<CaseFilesType> {
+
+}

+ 19 - 0
src/main/java/com/fdkankan/fusion/service/ICaseFusionService.java

@@ -0,0 +1,19 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.CaseFusion;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-04
+ */
+public interface ICaseFusionService extends IService<CaseFusion> {
+
+    List<CaseFusion> getListByCaseId(Integer caseId);
+}

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

@@ -25,4 +25,6 @@ public interface ICaseNumService extends IService<CaseNumEntity> {
     void deleteByCaseId(Integer caseId);
 
     HashMap<Integer, List<String>> getTypeMap(Integer caseId);
+
+    List<CaseNumEntity> getByNum(String num);
 }

+ 23 - 0
src/main/java/com/fdkankan/fusion/service/ICaseViewService.java

@@ -0,0 +1,23 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.CaseView;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+public interface ICaseViewService extends IService<CaseView> {
+
+    List<CaseView> allList(Integer caseId, String num, String smallImgH, String smallImgW);
+
+    void add(CaseView caseView);
+
+    void updateNameOrSort(CaseView caseView);
+}

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

@@ -0,0 +1,26 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.FusionNum;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.fusion.request.FusionParam;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-04
+ */
+public interface IFusionNumService extends IService<FusionNum> {
+
+    List<FusionNum> getByNum(String num);
+
+    List<FusionNum> getListByFusionIdList(List<Integer> fusionIdList);
+
+    List<FusionNum> getListByCaseId(Integer caseId);
+
+    void add(FusionParam param);
+}

+ 25 - 0
src/main/java/com/fdkankan/fusion/service/IHotIconService.java

@@ -0,0 +1,25 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.HotIcon;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+public interface IHotIconService extends IService<HotIcon> {
+
+    List<HotIcon> getListByUserName(String username);
+
+    HotIcon getDefaultIcon();
+
+    void addUseNum(Integer hotIconId);
+
+    void cancelIsNew(String username);
+}

+ 25 - 0
src/main/java/com/fdkankan/fusion/service/IHotService.java

@@ -0,0 +1,25 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.Hot;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-03
+ */
+public interface IHotService extends IService<Hot> {
+
+    /**
+     * 重置为默认icon
+     * @param iconId id
+     */
+    void updateDefaultIcon(Integer iconId);
+
+    List<Hot> getList(Integer fusionId,Integer caseId);
+}

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

@@ -0,0 +1,27 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.common.response.PageInfo;
+import com.fdkankan.fusion.entity.Model;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.fusion.request.ModelPram;
+import com.fdkankan.fusion.request.ScenePram;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-03
+ */
+public interface IModelService extends IService<Model> {
+
+    void uploadObj(MultipartFile file, String username) throws Exception;
+
+    PageInfo pageList(ModelPram param, String token);
+
+    void delete(Integer modelId);
+}

+ 37 - 0
src/main/java/com/fdkankan/fusion/service/impl/CaseFilesServiceImpl.java

@@ -0,0 +1,37 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.fusion.entity.CaseFiles;
+import com.fdkankan.fusion.mapper.ICaseFilesMapper;
+import com.fdkankan.fusion.service.ICaseFilesService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@Service
+public class CaseFilesServiceImpl extends ServiceImpl<ICaseFilesMapper, CaseFiles> implements ICaseFilesService {
+
+    @Override
+    public List<CaseFiles> allList(Integer caseId, Integer caseFilesTypeId) {
+        if(caseId == null || caseFilesTypeId == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        LambdaQueryWrapper<CaseFiles> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CaseFiles::getCaseId,caseId);
+        wrapper.eq(CaseFiles::getFilesTypeId,caseFilesTypeId);
+        wrapper.orderByDesc(CaseFiles::getCreateTime);
+        return this.list(wrapper);
+    }
+}

+ 20 - 0
src/main/java/com/fdkankan/fusion/service/impl/CaseFilesTypeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.fdkankan.fusion.entity.CaseFilesType;
+import com.fdkankan.fusion.mapper.ICaseFilesTypeMapper;
+import com.fdkankan.fusion.service.ICaseFilesTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@Service
+public class CaseFilesTypeServiceImpl extends ServiceImpl<ICaseFilesTypeMapper, CaseFilesType> implements ICaseFilesTypeService {
+
+}

+ 29 - 0
src/main/java/com/fdkankan/fusion/service/impl/CaseFusionServiceImpl.java

@@ -0,0 +1,29 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.fusion.entity.CaseFusion;
+import com.fdkankan.fusion.mapper.ICaseFusionMapper;
+import com.fdkankan.fusion.service.ICaseFusionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-04
+ */
+@Service
+public class CaseFusionServiceImpl extends ServiceImpl<ICaseFusionMapper, CaseFusion> implements ICaseFusionService {
+
+    @Override
+    public List<CaseFusion> getListByCaseId(Integer caseId) {
+        LambdaQueryWrapper<CaseFusion> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CaseFusion::getCaseId,caseId);
+        return this.list(wrapper);
+    }
+}

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

@@ -78,4 +78,11 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
         }
         return typeMap;
     }
+
+    @Override
+    public List<CaseNumEntity> getByNum(String  num) {
+        LambdaQueryWrapper<CaseNumEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CaseNumEntity::getNum,num);
+        return this.list(wrapper);
+    }
 }

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

@@ -3,7 +3,7 @@ package com.fdkankan.fusion.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.common.response.PageInfo;
 import com.fdkankan.common.util.JwtUtil;
 import com.fdkankan.fusion.entity.CaseEntity;

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

@@ -3,7 +3,7 @@ package com.fdkankan.fusion.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.entity.CaseVideo;
 import com.fdkankan.fusion.mapper.ICaseVideoMapper;
 import com.fdkankan.fusion.request.CaseParam;

+ 77 - 0
src/main/java/com/fdkankan/fusion/service/impl/CaseViewServiceImpl.java

@@ -0,0 +1,77 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.entity.CaseView;
+import com.fdkankan.fusion.mapper.ICaseViewMapper;
+import com.fdkankan.fusion.service.ICaseViewService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@Service
+public class CaseViewServiceImpl extends ServiceImpl<ICaseViewMapper, CaseView> implements ICaseViewService {
+
+   @Value("${oss.small}")
+   private String small;
+
+    @Override
+    public List<CaseView> allList(Integer caseId, String num,String smallImgH, String smallImgW){
+        if(caseId == null && StringUtils.isEmpty(num)){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        LambdaQueryWrapper<CaseView> wrapper = new LambdaQueryWrapper<>();
+        if(caseId != null){
+            wrapper.eq(CaseView::getCaseId,caseId);
+        }
+        if(StringUtils.isNotBlank(num)){
+            wrapper.eq(CaseView::getNum,num);
+        }
+        wrapper.orderByAsc(CaseView::getSort);
+        wrapper.orderByDesc(CaseView::getCreateTime);
+        List<CaseView> list = list(wrapper);
+        list.forEach(entity ->entity.setViewImgSmall(String.format(entity.getViewImgSmall(),smallImgH,smallImgW )));
+        return list;
+    }
+
+    @Override
+    public void add(CaseView caseView) {
+        if(caseView.getCaseId() == null || StringUtils.isEmpty(caseView.getNum()) || StringUtils.isEmpty(caseView.getNumThumb())
+            || caseView.getNumType() == null || StringUtils.isEmpty(caseView.getViewImg()) || StringUtils.isEmpty(caseView.getViewTitle())
+            || StringUtils.isEmpty(caseView.getViewPoint())) {
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        String ImageSmall = caseView.getViewImg() +small;
+        caseView.setViewImgSmall(ImageSmall);
+        this.save(caseView);
+    }
+
+    @Override
+    public void updateNameOrSort(CaseView caseView) {
+        if(caseView.getViewId() == null || (caseView.getSort() == null && StringUtils.isEmpty(caseView.getViewTitle()))) {
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        LambdaUpdateWrapper<CaseView> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(CaseView::getViewId,caseView.getViewId());
+        if(caseView.getSort() != null){
+            updateWrapper.set(CaseView::getSort,caseView.getSort());
+        }
+        if(StringUtils.isNotBlank(caseView.getViewTitle())){
+            updateWrapper.set(CaseView::getViewTitle,caseView.getViewTitle());
+        }
+        this.update(updateWrapper);
+    }
+}

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

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.fusion.common.FilePath;
 import com.fdkankan.fusion.laser.entity.PoiEntity;
 import com.fdkankan.fusion.laser.entity.PoiHotDto;
 import com.fdkankan.fusion.laser.entity.PoiTypeEntity;
@@ -22,8 +23,7 @@ import java.util.stream.Collectors;
 @Service
 public class FdHotService {
 
-    static String hotPath = "scene_view_data/%s/user/hot.json";
-    static String hotIconDefaultPath = "fusion/default/tag_icon_default.svg";
+
 
     @Autowired
     UploadToOssUtil uploadToOssUtil;
@@ -42,7 +42,7 @@ public class FdHotService {
         }
         List<HotVo> list = new ArrayList<>();
         for (String num : numList) {
-            String ossPath = String.format(hotPath, num);
+            String ossPath = String.format(FilePath.hotPath, num);
             if(!uploadToOssUtil.existKey(ossPath)){
                 continue;
             }
@@ -61,7 +61,7 @@ public class FdHotService {
                 hotVo.setContent(jsonObject.getString("content"));
                 hotVo.setNumType(type);
                 hotVo.setType(jsonObject.getString("type"));
-                String icon = StringUtils.isEmpty(jsonObject.getString("icon") ) ? hotIconDefaultPath : jsonObject.getString("icon");
+                String icon = StringUtils.isEmpty(jsonObject.getString("icon") ) ? FilePath.hotIconDefaultPath : jsonObject.getString("icon");
                 hotVo.setIcon(icon);
                 list.add(hotVo);
             }
@@ -96,7 +96,7 @@ public class FdHotService {
             hotVo.setContent(poiHotDto.getContent());
             hotVo.setNumType(2);
             hotVo.setType(poiHotDto.getType().name());
-            String icon = poiHotDto.getHotStyleAtom() == null ? hotIconDefaultPath : poiHotDto.getHotStyleAtom().getIcon();
+            String icon = poiHotDto.getHotStyleAtom() == null ? FilePath.hotIconDefaultPath : poiHotDto.getHotStyleAtom().getIcon();
             hotVo.setIcon(icon);
             voList.add(hotVo);
         }

+ 81 - 0
src/main/java/com/fdkankan/fusion/service/impl/FusionNumServiceImpl.java

@@ -0,0 +1,81 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.fusion.entity.CaseFusion;
+import com.fdkankan.fusion.entity.FusionNum;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.mapper.IFusionNumMapper;
+import com.fdkankan.fusion.request.FusionParam;
+import com.fdkankan.fusion.service.ICaseFusionService;
+import com.fdkankan.fusion.service.IFusionNumService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-04
+ */
+@Service
+public class FusionNumServiceImpl extends ServiceImpl<IFusionNumMapper, FusionNum> implements IFusionNumService {
+
+    @Autowired
+    ICaseFusionService caseFusionService;
+
+    @Override
+    public List<FusionNum> getByNum(String num) {
+        LambdaQueryWrapper<FusionNum> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(FusionNum::getNum,num);
+        return this.list(wrapper);
+    }
+
+    @Override
+    public List<FusionNum> getListByFusionIdList(List<Integer> fusionIdList) {
+        LambdaQueryWrapper<FusionNum> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(FusionNum::getFusionId,fusionIdList);
+        wrapper.orderByDesc(FusionNum::getCreateTime);
+        return this.list(wrapper);
+    }
+
+    @Override
+    public List<FusionNum> getListByCaseId(Integer caseId) {
+        List<CaseFusion> fusionList = caseFusionService.getListByCaseId(caseId);
+        if(fusionList.size()<=0){
+            return new ArrayList<>();
+        }
+        List<Integer> fusionIdList = fusionList.parallelStream().map(CaseFusion::getFusionId).collect(Collectors.toList());
+        return getListByFusionIdList(fusionIdList);
+    }
+
+    @Override
+    public void add(FusionParam param) {
+        if(StringUtils.isEmpty(param.getNum()) || StringUtils.isEmpty(param.getFusionPoint())
+                || param.getNumType() == null || param.getCaseId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        List<CaseFusion> list = caseFusionService.getListByCaseId(param.getCaseId());
+        CaseFusion caseFusion = null;
+        if(list.size() <=0){
+            caseFusion = new CaseFusion();
+            caseFusion.setCaseId(param.getCaseId());
+            caseFusionService.save(caseFusion);
+            list.add(caseFusion);
+        }
+        caseFusion = list.get(0);
+        FusionNum fusionNum = new FusionNum();
+        BeanUtils.copyProperties(param,fusionNum);
+        fusionNum.setFusionId(caseFusion.getFusionId());
+        this.save(fusionNum);
+    }
+}

+ 79 - 0
src/main/java/com/fdkankan/fusion/service/impl/HotIconServiceImpl.java

@@ -0,0 +1,79 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.entity.HotIcon;
+import com.fdkankan.fusion.mapper.IHotIconMapper;
+import com.fdkankan.fusion.service.IHotIconService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-02
+ */
+@Service
+public class HotIconServiceImpl extends ServiceImpl<IHotIconMapper, HotIcon> implements IHotIconService {
+
+    @Override
+    public List<HotIcon> getListByUserName(String username) {
+        LambdaQueryWrapper<HotIcon> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(HotIcon::getUserName,username)
+               .or().eq(HotIcon::getSystem,1);
+        wrapper.orderByDesc(HotIcon::getSystem)           // 官方默认
+                .orderByDesc(HotIcon::getIsNew)           // 新增
+                .orderByDesc(HotIcon::getLastUse)         // 上次使用
+                .orderByDesc(HotIcon::getUseNum)          // 使用次数
+                .orderByDesc(HotIcon::getCreateTime);
+        return this.list(wrapper);
+    }
+
+    @Override
+    public HotIcon getDefaultIcon() {
+        LambdaQueryWrapper<HotIcon> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(HotIcon::getSystem,1);
+        wrapper.orderByDesc(HotIcon::getCreateTime);
+        List<HotIcon> list = this.list(wrapper);
+        if(list!= null && list.size() >0){
+            return list.get(0);
+        }
+        return null;
+    }
+
+    @Override
+    public void addUseNum(Integer hotIconId) {
+        HotIcon hotIcon = this.getById(hotIconId);
+        if(hotIcon == null){
+            throw new BusinessException(ResultCode.HOT_ICON_NOT_EXIST);
+        }
+        hotIcon.setUseNum( hotIcon.getUseNum() + 1);
+        hotIcon.setLastUse(1);
+
+        LambdaUpdateWrapper<HotIcon> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.set(HotIcon::getLastUse,0);
+        wrapper.eq(HotIcon::getUserName,hotIcon.getUserName());
+        this.update(wrapper);
+
+        hotIcon.setUpdateTime(null);
+        this.updateById(hotIcon);
+
+    }
+
+    @Override
+    public void cancelIsNew(String username) {
+        LambdaUpdateWrapper<HotIcon> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.set(HotIcon::getIsNew,1)
+                .eq(HotIcon::getUserName,username);
+        this.update(wrapper);
+    }
+}

+ 75 - 0
src/main/java/com/fdkankan/fusion/service/impl/HotServiceImpl.java

@@ -0,0 +1,75 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.entity.CaseFusion;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.entity.Hot;
+import com.fdkankan.fusion.entity.HotIcon;
+import com.fdkankan.fusion.mapper.IHotMapper;
+import com.fdkankan.fusion.service.ICaseFusionService;
+import com.fdkankan.fusion.service.ICaseService;
+import com.fdkankan.fusion.service.IHotIconService;
+import com.fdkankan.fusion.service.IHotService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-03
+ */
+@Service
+public class HotServiceImpl extends ServiceImpl<IHotMapper, Hot> implements IHotService {
+
+    @Autowired
+    IHotIconService hotIconService;
+    @Autowired
+    ICaseFusionService caseFusionService;
+
+    @Override
+    public void updateDefaultIcon(Integer iconId) {
+        HotIcon hotIcon = hotIconService.getDefaultIcon();
+        if(hotIcon == null){
+            throw new BusinessException(ResultCode.SYSTEM_HOT_ICON_NOT_EXIST);
+        }
+        if(iconId.equals(hotIcon.getIconId())){
+            throw new BusinessException(ResultCode.SYSTEM_HOT_ICON_NOT_DELETE);
+        }
+        LambdaUpdateWrapper<Hot> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(Hot::getHotIconId,iconId)
+                .set(Hot::getHotIconId,hotIcon.getIconId())
+                .set(Hot::getHotIconUrl,hotIcon.getIconUrl());
+        this.update(wrapper);
+    }
+
+    @Override
+    public List<Hot> getList(Integer fusionId,Integer caseId) {
+        if(fusionId == null && caseId == null){
+            return new ArrayList<>();
+        }
+        LambdaQueryWrapper<Hot> wrapper = new LambdaQueryWrapper<>();
+        if(fusionId != null){
+            wrapper.eq(Hot::getFusionId,fusionId);
+        }else {
+            List<CaseFusion> list = caseFusionService.getListByCaseId(caseId);
+            List<Integer> fusionIds = list.parallelStream().map(CaseFusion::getFusionId).collect(Collectors.toList());
+            if(fusionIds.size() <=0){
+                return new ArrayList<>();
+            }
+            wrapper.in(Hot::getFusionId,fusionIds);
+        }
+        wrapper.orderByDesc(Hot::getCreateTime);
+        return this.list(wrapper);
+    }
+}

+ 128 - 0
src/main/java/com/fdkankan/fusion/service/impl/ModelServiceImpl.java

@@ -0,0 +1,128 @@
+package com.fdkankan.fusion.service.impl;
+import java.io.File;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.response.PageInfo;
+import com.fdkankan.common.util.CreateObjUtil;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.fusion.common.FilePath;
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.common.util.OBJToGLBUtil;
+import com.fdkankan.fusion.entity.CaseNumEntity;
+import com.fdkankan.fusion.entity.FusionNum;
+import com.fdkankan.fusion.entity.Model;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.mapper.IModelMapper;
+import com.fdkankan.fusion.request.ModelPram;
+import com.fdkankan.fusion.request.ScenePram;
+import com.fdkankan.fusion.service.ICaseNumService;
+import com.fdkankan.fusion.service.IFusionNumService;
+import com.fdkankan.fusion.service.IModelService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.tools.zip.ZipFile;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-08-03
+ */
+@Service
+public class ModelServiceImpl extends ServiceImpl<IModelMapper, Model> implements IModelService {
+
+    @Autowired
+    UploadToOssUtil uploadToOssUtil;
+    @Autowired
+    ICaseNumService caseNumService;
+    @Autowired
+    IFusionNumService fusionNumService;
+
+    @Override
+    public void uploadObj(MultipartFile file, String username)  {
+        if(file.isEmpty()){
+            throw new BusinessException(ResultCode.UPLOAD_FILE_NO_EXIST);
+        }
+        if(file.getSize()>10 * 1024 * 1024 * 100){
+            System.out.println(file.getSize());
+            throw new BusinessException(ResultCode.UPLOAD_FILE_TO_LONG);
+        }
+        //获取文件名
+        String fileName = file.getOriginalFilename();
+        if(StringUtils.isEmpty(fileName)){
+            throw new BusinessException(ResultCode.UPLOAD_FILE_NO_EXIST);
+        }
+        if(fileName.toLowerCase().contains("zip") || fileName.toLowerCase().contains("rar")){
+            throw new BusinessException(ResultCode.UPLOAD_FILE_TYPE_ERROR);
+        }
+        //获取文件后缀名
+        String modelName = fileName.substring(0,fileName.lastIndexOf("."));
+
+        Model model = new Model();
+        model.setModelTitle(modelName);
+        model.setModelDateType("obj");
+        model.setModelSize(file.getSize());
+        model.setUserName(username);
+        this.save(model);
+        Integer createStatus = -1;
+        try {
+            String objPath = FilePath.OBJ_PATH +"/" + model.getModelId();
+            String glbPath = FilePath.GLB_PATH +"/" + model.getModelId();
+            String glbOssPath = FilePath.GLB_OSS_PATH +"/" + model.getModelId();
+            model.setModelObjUrl(objPath);
+            model.setModelGlbUrl(glbPath);
+
+            File newObjFile = new File(objPath +"/" + fileName);
+            if(!newObjFile.getParentFile().exists()){
+                newObjFile.mkdirs();
+            }
+            file.transferTo(newObjFile);
+            if(fileName.toLowerCase().contains("zip")){
+                CreateObjUtil.unZip(newObjFile.getPath(),objPath);
+            }
+            if(fileName.toLowerCase().contains("rar")){
+                CreateObjUtil.unRar(newObjFile.getPath(),objPath);
+            }
+            OBJToGLBUtil.checkObj(objPath);
+
+            OBJToGLBUtil.objToGlb(objPath,glbPath);
+            uploadToOssUtil.upload(glbPath,glbOssPath);
+            createStatus = 1;   //上传成功
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            model.setCreateStatus(createStatus);
+            this.updateById(model);
+        }
+    }
+
+    @Override
+    public PageInfo pageList(ModelPram param, String token) {
+        String username = JwtUtil.getUsername(token);
+        LambdaQueryWrapper<Model> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Model::getUserName,username);
+        if(StringUtils.isEmpty(param.getModelTitle())){
+            wrapper.like(Model::getModelTitle,param.getModelTitle());
+        }
+        wrapper.orderByDesc(Model::getCreateTime);
+        Page<Model> page = this.page(new Page<>(param.getPageNum(),param.getPageSize()),wrapper);
+        return PageInfo.PageInfo(page);
+    }
+
+    @Override
+    public void delete(Integer modelId) {
+        List<CaseNumEntity> caseNumEntityList = caseNumService.getByNum(modelId.toString());
+        List<FusionNum> fusionNumList = fusionNumService.getByNum(modelId.toString());
+    }
+}

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

@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.common.response.PageInfo;
 import com.fdkankan.fusion.httpClient.client.FdKKClient;
 import com.fdkankan.fusion.httpClient.client.FdKKNewClient;
@@ -14,8 +14,10 @@ import com.fdkankan.fusion.httpClient.response.FdkkResponse;
 import com.fdkankan.fusion.httpClient.response.FdkkScenePlusVo;
 import com.fdkankan.fusion.request.ScenePram;
 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.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -29,6 +31,8 @@ public class SceneService implements ISceneService {
     FdKKNewClient fdKKNewClient;
     @Resource
     LaserClient laserClient;
+    @Autowired
+    IModelService modelService;
 
     @Override
     public PageInfo pageList(ScenePram param, String token) {
@@ -95,10 +99,10 @@ public class SceneService implements ISceneService {
             sceneVo.setCreateTime(fdkkScenePlusVo.getCreateTime());
             sceneVo.setName(fdkkScenePlusVo.getTitle());
             sceneVo.setNum(fdkkScenePlusVo.getNum());
-            sceneVo.setPayStatus(fdkkScenePlusVo.getPayStatus());
+            sceneVo.setPayStatus(1);
             sceneVo.setSceneName(fdkkScenePlusVo.getTitle());
             sceneVo.setSnCode(fdkkScenePlusVo.getSnCode());
-            sceneVo.setStatus(fdkkScenePlusVo.getSceneStatus());
+            sceneVo.setStatus(setLaserStatus(fdkkScenePlusVo.getSceneStatus(),fdkkScenePlusVo.getPayStatus()));
             sceneVo.setThumb(fdkkScenePlusVo.getPlusExt().getThumb());
             sceneVo.setTitle(fdkkScenePlusVo.getTitle());
             sceneVo.setViewCount(fdkkScenePlusVo.getPlusExt().getViewCount());
@@ -108,4 +112,18 @@ public class SceneService implements ISceneService {
         }
         return sceneVoList;
     }
+
+    private Integer setLaserStatus(Integer status,Integer payStatus){
+        //深时状态,-1:场景被删 0:计算中 1计算失败 2计算成功 3封存 4生成OBJ中
+        if(payStatus != 1){    //封存
+            return 3;
+        }
+        if(status == -1){
+            return 1;
+        }
+        if(status == -2){
+            return 2;
+        }
+        return status;
+    }
 }

+ 57 - 0
src/main/java/com/fdkankan/fusion/service/impl/UploadService.java

@@ -0,0 +1,57 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.IOException;
+import java.util.UUID;
+
+@Service
+public class UploadService {
+
+    @Resource
+    private UploadToOssUtil uploadToOssUtil;
+
+    @Value("${upload.file-path}")
+    private String filePath;
+    @Value("${upload.query-path}")
+    private String queryPath;
+
+    public String uploadFile(MultipartFile file, boolean newName, String filePathAdd) throws IOException {
+        if(file.isEmpty()){
+            throw new BusinessException(ResultCode.UPLOAD_FILE_NO_EXIST);
+        }
+        if(file.getSize()>10 * 1024 * 1024 * 100){
+            System.out.println(file.getSize());
+            throw new BusinessException(ResultCode.UPLOAD_FILE_TO_LONG);
+        }
+        //获取文件名
+        String fileName = file.getOriginalFilename();
+        if(StringUtils.isEmpty(fileName)){
+            throw new BusinessException(ResultCode.UPLOAD_FILE_NO_EXIST);
+        }
+        //获取文件后缀名
+        String suffixName = fileName.substring(fileName.lastIndexOf("."));
+        //重新生成文件名
+        if(newName){
+            fileName = UUID.randomUUID().toString().replace("-","") + suffixName;
+        }else {
+            fileName= fileName.substring(0,fileName.lastIndexOf("."));
+        }
+        File localFile = File.createTempFile(fileName,suffixName);
+        file.transferTo(localFile);
+        String path = localFile.getPath();
+        uploadToOssUtil.upload(path,filePath +filePathAdd+ fileName + suffixName);
+        if(!uploadToOssUtil.existKey(filePath +filePathAdd + fileName + suffixName)){
+            throw new BusinessException(ResultCode.UPLOAD_ERROR.code,ResultCode.UPLOAD_ERROR.msg);
+        }
+        return queryPath + filePath +filePathAdd+ fileName + suffixName;
+    }
+}

+ 5 - 5
src/main/resources/application.yaml

@@ -13,7 +13,7 @@ spring:
       username: root
       password: 123456
   redis:
-    host: 120.24.144.164
+    host: 120.25.146.52
     port: 6379
     timeout: 6000ms
     password:
@@ -30,7 +30,6 @@ spring:
       uri: mongodb://4dage:1234@120.25.146.52:27017/laser
 
 
-
 logging:
   config: classpath:logback-spring.xml
 mybatis-plus:
@@ -48,8 +47,8 @@ mybatis-plus:
     port: 80
   newFdService:
     #官网生产环境:https://www.4dkankan.com
-    basePath: http://127.0.0.1
-    port: 8802
+    basePath: http://v4-test.4dkankan.com
+    port: 80
   overallService:
     #全景看看生产环境 host: https://www.4dkankan.com/qjkankan
     basePath: http://test.4dkankan.com/qjkankan
@@ -74,7 +73,7 @@ forest:
 
 upload:
   type: oss
-  file-path : fusion/file/
+  file-path : fusion/
   query-path: https://4dkk.4dage.com/
 oss:
   #point: http://oss-cn-shenzhen-internal.aliyuncs.com
@@ -83,6 +82,7 @@ oss:
   secrey: JLOVl0k8Ke0aaM8nLMMiUAZ3EiiqI4
   bucket: 4dkankan
   sdk: 4dscene
+  small: ?x-oss-process=image/resize,m_fill,h_%s,w_%s
   prefix:
     ali: https://4dkk.4dage.com/
     sdk: https://4dscene.4dage.com/

+ 5 - 0
src/main/resources/mapper/fusion/CaseFilesMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.fusion.mapper.ICaseFilesMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/fusion/CaseFilesTypeMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.fusion.mapper.ICaseFilesTypeMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/fusion/CaseFusionMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.fusion.mapper.ICaseFusionMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/fusion/CaseViewMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.fusion.mapper.ICaseViewMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/fusion/FusionNumMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.fusion.mapper.IFusionNumMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/fusion/HotIconMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.fusion.mapper.IHotIconMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/fusion/HotMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.fusion.mapper.IHotMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/fusion/ModelMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.fusion.mapper.IModelMapper">
+
+</mapper>