lyhzzz 3 年之前
父节点
当前提交
f2c74562c4
共有 63 个文件被更改,包括 2187 次插入3 次删除
  1. 5 0
      pom.xml
  2. 71 0
      src/main/java/com/fdkankan/fusion/controller/CaseController.java
  3. 62 0
      src/main/java/com/fdkankan/fusion/controller/CaseVideoController.java
  4. 29 0
      src/main/java/com/fdkankan/fusion/controller/LoginController.java
  5. 20 0
      src/main/java/com/fdkankan/fusion/controller/SceneController.java
  6. 33 0
      src/main/java/com/fdkankan/fusion/controller/TestController.java
  7. 54 0
      src/main/java/com/fdkankan/fusion/entity/CaseEntity.java
  8. 40 0
      src/main/java/com/fdkankan/fusion/entity/CaseNumEntity.java
  9. 51 0
      src/main/java/com/fdkankan/fusion/entity/CaseVideo.java
  10. 36 0
      src/main/java/com/fdkankan/fusion/exception/GlobalExceptionHandler.java
  11. 1 1
      src/main/java/com/fdkankan/fusion/generate/AutoGenerate.java
  12. 22 0
      src/main/java/com/fdkankan/fusion/httpClient/address/FdkkAddressSource.java
  13. 22 0
      src/main/java/com/fdkankan/fusion/httpClient/address/LaserAddressSource.java
  14. 22 0
      src/main/java/com/fdkankan/fusion/httpClient/address/NewFdkkAddressSource.java
  15. 22 0
      src/main/java/com/fdkankan/fusion/httpClient/address/OverallAddressSource.java
  16. 31 0
      src/main/java/com/fdkankan/fusion/httpClient/client/FdKKClient.java
  17. 36 0
      src/main/java/com/fdkankan/fusion/httpClient/client/FdKKNewClient.java
  18. 23 0
      src/main/java/com/fdkankan/fusion/httpClient/client/LaserClient.java
  19. 18 0
      src/main/java/com/fdkankan/fusion/httpClient/client/OverallClient.java
  20. 11 0
      src/main/java/com/fdkankan/fusion/httpClient/request/FdkkLoginRequest.java
  21. 14 0
      src/main/java/com/fdkankan/fusion/httpClient/request/LaserSceneParam.java
  22. 9 0
      src/main/java/com/fdkankan/fusion/httpClient/response/FdkkLoginVo.java
  23. 10 0
      src/main/java/com/fdkankan/fusion/httpClient/response/FdkkResponse.java
  24. 95 0
      src/main/java/com/fdkankan/fusion/httpClient/response/FdkkScenePlus.java
  25. 130 0
      src/main/java/com/fdkankan/fusion/httpClient/response/FdkkScenePlusExt.java
  26. 9 0
      src/main/java/com/fdkankan/fusion/httpClient/response/FdkkScenePlusVo.java
  27. 25 0
      src/main/java/com/fdkankan/fusion/httpClient/response/FdkkUserVo.java
  28. 60 0
      src/main/java/com/fdkankan/fusion/laser/entity/GeoPoint.java
  29. 27 0
      src/main/java/com/fdkankan/fusion/laser/entity/HotType.java
  30. 13 0
      src/main/java/com/fdkankan/fusion/laser/entity/MetaPO.java
  31. 72 0
      src/main/java/com/fdkankan/fusion/laser/entity/PoiEntity.java
  32. 66 0
      src/main/java/com/fdkankan/fusion/laser/entity/PoiHotDto.java
  33. 28 0
      src/main/java/com/fdkankan/fusion/laser/entity/PoiTypeDto.java
  34. 37 0
      src/main/java/com/fdkankan/fusion/laser/entity/PoiTypeEntity.java
  35. 22 0
      src/main/java/com/fdkankan/fusion/laser/entity/PointPO.java
  36. 18 0
      src/main/java/com/fdkankan/fusion/laser/entity/SearchDTO.java
  37. 21 0
      src/main/java/com/fdkankan/fusion/laser/service/PoiService.java
  38. 39 0
      src/main/java/com/fdkankan/fusion/laser/service/PoiServiceImpl.java
  39. 27 0
      src/main/java/com/fdkankan/fusion/laser/service/PoiTypeService.java
  40. 63 0
      src/main/java/com/fdkankan/fusion/laser/service/PoiTypeServiceImpl.java
  41. 18 0
      src/main/java/com/fdkankan/fusion/mapper/ICaseMapper.java
  42. 18 0
      src/main/java/com/fdkankan/fusion/mapper/ICaseNumMapper.java
  43. 18 0
      src/main/java/com/fdkankan/fusion/mapper/ICaseVideoMapper.java
  44. 11 0
      src/main/java/com/fdkankan/fusion/request/CaseParam.java
  45. 15 0
      src/main/java/com/fdkankan/fusion/request/CaseVideoParam.java
  46. 11 0
      src/main/java/com/fdkankan/fusion/request/SceneNumParam.java
  47. 13 0
      src/main/java/com/fdkankan/fusion/request/ScenePram.java
  48. 13 0
      src/main/java/com/fdkankan/fusion/response/CaseVo.java
  49. 15 0
      src/main/java/com/fdkankan/fusion/response/HotVo.java
  50. 21 0
      src/main/java/com/fdkankan/fusion/response/SceneVo.java
  51. 28 0
      src/main/java/com/fdkankan/fusion/service/ICaseNumService.java
  52. 34 0
      src/main/java/com/fdkankan/fusion/service/ICaseService.java
  53. 23 0
      src/main/java/com/fdkankan/fusion/service/ICaseVideoService.java
  54. 9 0
      src/main/java/com/fdkankan/fusion/service/ISceneService.java
  55. 81 0
      src/main/java/com/fdkankan/fusion/service/impl/CaseNumServiceImpl.java
  56. 139 0
      src/main/java/com/fdkankan/fusion/service/impl/CaseServiceImpl.java
  57. 58 0
      src/main/java/com/fdkankan/fusion/service/impl/CaseVideoServiceImpl.java
  58. 106 0
      src/main/java/com/fdkankan/fusion/service/impl/FdHotService.java
  59. 111 0
      src/main/java/com/fdkankan/fusion/service/impl/SceneService.java
  60. 36 2
      src/main/resources/application.yaml
  61. 5 0
      src/main/resources/mapper/fusion/CaseMapper.xml
  62. 5 0
      src/main/resources/mapper/fusion/CaseNumMapper.xml
  63. 5 0
      src/main/resources/mapper/fusion/CaseVideoMapper.xml

+ 5 - 0
pom.xml

@@ -37,6 +37,11 @@
             <version>2.0.0-SNAPSHOT</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.fdkankan</groupId>
+            <artifactId>4dkankan-utils-mongodb</artifactId>
+            <version>2.0.0-SNAPSHOT</version>
+        </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>

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

@@ -0,0 +1,71 @@
+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.common.response.ResultData;
+import com.fdkankan.fusion.entity.CaseEntity;
+import com.fdkankan.fusion.request.CaseParam;
+import com.fdkankan.fusion.service.ICaseNumService;
+import com.fdkankan.fusion.service.ICaseService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 案件管理
+ */
+@RestController
+@RequestMapping("/case")
+public class CaseController {
+
+    @Autowired
+    ICaseService caseService;
+
+    @PostMapping("/list")
+    public ResultData list(@RequestBody CaseParam param, @RequestHeader String token ){
+
+        return ResultData.ok(caseService.pageList(param,token));
+    }
+
+    /**
+     * 案件关联场景数据
+     */
+    @PostMapping("/sceneList")
+    public ResultData sceneList(@RequestBody CaseParam param, @RequestHeader String token ){
+
+        return ResultData.ok(caseService.sceneList(param,token));
+    }
+
+    @PostMapping("/addOrUpdate")
+    public ResultData addOrUpdate(@RequestBody CaseParam param, @RequestHeader String token){
+        caseService.addOrUpdate(param,token);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody CaseParam param, @RequestHeader String token){
+
+        caseService.delete(param.getCaseId());
+        return ResultData.ok();
+    }
+
+
+    @PostMapping("/addScene")
+    public ResultData addScene(@RequestBody CaseParam param){
+        caseService.addScene(param);
+        return ResultData.ok();
+    }
+
+    /**
+     * 案件关联场景的热点数据
+     */
+    @PostMapping("/hotList")
+    public ResultData hotList(@RequestBody CaseParam param){
+        return ResultData.ok( caseService.hotList(param.getCaseId()));
+    }
+
+
+}
+

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

@@ -0,0 +1,62 @@
+package com.fdkankan.fusion.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.response.Result;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.fusion.entity.CaseVideo;
+import com.fdkankan.fusion.request.CaseParam;
+import com.fdkankan.fusion.request.CaseVideoParam;
+import com.fdkankan.fusion.service.ICaseVideoService;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2022-07-29
+ */
+@RestController
+@RequestMapping("/caseVideo")
+public class CaseVideoController {
+
+    @Autowired
+    ICaseVideoService caseVideoService;
+    @Autowired
+    UploadToOssUtil uploadToOssUtil;
+    @Value("${oss.prefix.ali}")
+    private String ossVideoPath;
+
+    @PostMapping("/list")
+    public ResultData list(@RequestBody CaseVideoParam param){
+        return ResultData.ok(caseVideoService.getList(param));
+    }
+
+    @PostMapping("/add")
+    public ResultData add(@RequestBody CaseVideoParam caseVideoParam){
+        caseVideoService.add(caseVideoParam);
+        return ResultData.ok();
+    }
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody CaseVideoParam param)  {
+        CaseVideo caseVideo = caseVideoService.getById(param.getVideoId());
+        caseVideoService.removeById(param.getVideoId());
+        try {
+            String replace = caseVideo.getVideoPath().replace(ossVideoPath, "");
+            uploadToOssUtil.delete(replace);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return ResultData.ok();
+    }
+
+}
+

+ 29 - 0
src/main/java/com/fdkankan/fusion/controller/LoginController.java

@@ -0,0 +1,29 @@
+package com.fdkankan.fusion.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.fusion.httpClient.client.FdKKClient;
+import com.fdkankan.fusion.httpClient.request.FdkkLoginRequest;
+import com.fdkankan.fusion.httpClient.response.FdkkLoginVo;
+import com.fdkankan.fusion.httpClient.response.FdkkResponse;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping
+public class LoginController {
+
+
+    @Resource
+    FdKKClient fdKKClient;
+
+    @PostMapping("/fdLogin")
+    public ResultData fdLogin(@RequestBody FdkkLoginRequest request){
+        FdkkResponse<FdkkLoginVo> fdkkLoginVo = fdKKClient.fdkkLogin(request);
+        return ResultData.ok(fdkkLoginVo.getData());
+    }
+}

+ 20 - 0
src/main/java/com/fdkankan/fusion/controller/SceneController.java

@@ -0,0 +1,20 @@
+package com.fdkankan.fusion.controller;
+
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.fusion.request.ScenePram;
+import com.fdkankan.fusion.service.ISceneService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/scene")
+public class SceneController {
+
+    @Autowired
+    ISceneService sceneService;
+
+    @PostMapping("/list")
+    public ResultData list(@RequestBody ScenePram param, @RequestHeader String token){
+        return ResultData.ok(sceneService.pageList(param,token));
+    }
+}

+ 33 - 0
src/main/java/com/fdkankan/fusion/controller/TestController.java

@@ -0,0 +1,33 @@
+package com.fdkankan.fusion.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.fusion.httpClient.client.FdKKClient;
+import com.fdkankan.fusion.httpClient.client.LaserClient;
+import com.fdkankan.fusion.httpClient.client.OverallClient;
+import com.fdkankan.fusion.httpClient.request.FdkkLoginRequest;
+import com.fdkankan.fusion.httpClient.response.FdkkLoginVo;
+import com.fdkankan.fusion.httpClient.response.FdkkResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.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);
+    }
+
+
+
+}

+ 54 - 0
src/main/java/com/fdkankan/fusion/entity/CaseEntity.java

@@ -0,0 +1,54 @@
+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-07-27
+ */
+@Getter
+@Setter
+@TableName("t_case")
+public class CaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 案件表
+     */
+    @TableId(value = "case_id", type = IdType.AUTO)
+    private Integer caseId;
+
+    /**
+     * 案件标题
+     */
+    @TableField("case_title")
+    private String caseTitle;
+
+    /**
+     * 四维用户名
+     */
+    @TableField("user_name")
+    private String userName;
+
+    @TableField("tb_status")
+    @TableLogic(value = "0",delval = "1")
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 40 - 0
src/main/java/com/fdkankan/fusion/entity/CaseNumEntity.java

@@ -0,0 +1,40 @@
+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 lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-27
+ */
+@Getter
+@Setter
+@TableName("t_case_num")
+public class CaseNumEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("case_id")
+    private Integer caseId;
+
+    @TableField("num_type")
+    private Integer numType;
+
+    @TableField("num")
+    private String num;
+
+
+
+}

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

@@ -0,0 +1,51 @@
+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-07-29
+ */
+@Getter
+@Setter
+@TableName("t_case_video")
+public class CaseVideo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "video_id", type = IdType.AUTO)
+    private Integer videoId;
+
+    @TableField("case_id")
+    private Integer caseId;
+
+    @TableField("video_path")
+    private String videoPath;
+
+    @TableField("voide_name")
+    private String voideName;
+
+    @TableField("sort")
+    private Integer sort;
+
+    @TableField("tb_status")
+    @TableLogic(value = "0",delval = "1")
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private String createTime;
+
+    @TableField("update_time")
+    private String updateTime;
+
+
+}

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

@@ -0,0 +1,36 @@
+package com.fdkankan.fusion.exception;
+
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+/**
+ * 全局异常处理器
+ */
+@RestControllerAdvice
+@Slf4j
+public class GlobalExceptionHandler {
+
+    /**
+     * 处理未知异常
+     */
+    @ResponseBody
+    @ExceptionHandler(value = Exception.class)
+    public ResultData exceptionHandler(Exception e) throws Exception {
+        log.error("服务错误:", e);
+        return ResultData.error( 500, e.getMessage());
+    }
+
+    /**
+     * 处理业务异常
+     */
+    @ResponseBody
+    @ExceptionHandler(value = BusinessException.class)
+    public ResultData businessExceptionHandler(BusinessException e) {
+        log.info("业务异常code:{},message:{}", e.getCode(), e.getMessage());
+        return ResultData.error(e.getCode(), e.getMessage());
+    }
+}

+ 1 - 1
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_intercom_message",
+                "t_case_video",
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 22 - 0
src/main/java/com/fdkankan/fusion/httpClient/address/FdkkAddressSource.java

@@ -0,0 +1,22 @@
+package com.fdkankan.fusion.httpClient.address;
+
+import com.dtflys.forest.callback.AddressSource;
+import com.dtflys.forest.http.ForestAddress;
+import com.dtflys.forest.http.ForestRequest;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+public class FdkkAddressSource implements AddressSource {
+
+    @Value("${4dkk.fdService.basePath}")
+    private String basePath;
+
+    @Value("${4dkk.fdService.port}")
+    private String port;
+
+    @Override
+    public ForestAddress getAddress(ForestRequest forestRequest) {
+        return new ForestAddress("","",Integer.valueOf(port),basePath);
+    }
+}

+ 22 - 0
src/main/java/com/fdkankan/fusion/httpClient/address/LaserAddressSource.java

@@ -0,0 +1,22 @@
+package com.fdkankan.fusion.httpClient.address;
+
+import com.dtflys.forest.callback.AddressSource;
+import com.dtflys.forest.http.ForestAddress;
+import com.dtflys.forest.http.ForestRequest;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+public class LaserAddressSource implements AddressSource {
+
+    @Value("${4dkk.laserService.basePath}")
+    private String basePath;
+
+    @Value("${4dkk.laserService.port}")
+    private String port;
+
+    @Override
+    public ForestAddress getAddress(ForestRequest forestRequest) {
+        return new ForestAddress("","",Integer.valueOf(port),basePath);
+    }
+}

+ 22 - 0
src/main/java/com/fdkankan/fusion/httpClient/address/NewFdkkAddressSource.java

@@ -0,0 +1,22 @@
+package com.fdkankan.fusion.httpClient.address;
+
+import com.dtflys.forest.callback.AddressSource;
+import com.dtflys.forest.http.ForestAddress;
+import com.dtflys.forest.http.ForestRequest;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+public class NewFdkkAddressSource implements AddressSource {
+
+    @Value("${4dkk.newFdService.basePath}")
+    private String basePath;
+
+    @Value("${4dkk.newFdService.port}")
+    private String port;
+
+    @Override
+    public ForestAddress getAddress(ForestRequest forestRequest) {
+        return new ForestAddress("","",Integer.valueOf(port),basePath);
+    }
+}

+ 22 - 0
src/main/java/com/fdkankan/fusion/httpClient/address/OverallAddressSource.java

@@ -0,0 +1,22 @@
+package com.fdkankan.fusion.httpClient.address;
+
+import com.dtflys.forest.callback.AddressSource;
+import com.dtflys.forest.http.ForestAddress;
+import com.dtflys.forest.http.ForestRequest;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+public class OverallAddressSource implements AddressSource {
+
+    @Value("${4dkk.overallService.basePath}")
+    private String basePath;
+
+    @Value("${4dkk.overallService.port}")
+    private String port;
+
+    @Override
+    public ForestAddress getAddress(ForestRequest forestRequest) {
+        return new ForestAddress("","",Integer.valueOf(port),basePath);
+    }
+}

+ 31 - 0
src/main/java/com/fdkankan/fusion/httpClient/client/FdKKClient.java

@@ -0,0 +1,31 @@
+package com.fdkankan.fusion.httpClient.client;
+
+import com.alibaba.fastjson.JSONObject;
+import com.dtflys.forest.annotation.*;
+import com.fdkankan.common.response.PageInfo;
+import com.fdkankan.fusion.httpClient.address.FdkkAddressSource;
+import com.fdkankan.fusion.httpClient.request.FdkkLoginRequest;
+import com.fdkankan.fusion.httpClient.response.FdkkLoginVo;
+import com.fdkankan.fusion.httpClient.response.FdkkResponse;
+import com.fdkankan.fusion.request.ScenePram;
+
+import java.util.HashMap;
+
+/**
+ * 获取,调用4dkk服务
+ */
+@Address(source = FdkkAddressSource.class)
+public interface FdKKClient {
+
+    /**
+     * 登录
+     */
+    @Post("/api/sso/user/login")
+    FdkkResponse<FdkkLoginVo> fdkkLogin(@JSONBody FdkkLoginRequest fdkkLoginRequest);
+    /**
+     * 校验token
+     */
+    @Post("/api/user/checkToken")
+    FdkkResponse checkToken(@Header("token")  String token);
+
+}

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

@@ -0,0 +1,36 @@
+package com.fdkankan.fusion.httpClient.client;
+
+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;
+import com.fdkankan.fusion.httpClient.response.FdkkResponse;
+import com.fdkankan.fusion.request.ScenePram;
+
+/**
+ * 获取,调用4dkk服务
+ */
+@Address(source = NewFdkkAddressSource.class)
+public interface FdKKNewClient {
+
+    /**
+     * 登录
+     */
+    @Post("/ucenter/sso/user/login")
+    FdkkResponse<FdkkLoginVo> fdkkLogin(@JSONBody FdkkLoginRequest fdkkLoginRequest);
+    /**
+     * 校验token
+     */
+    @Post("/ucenter/user/checkToken")
+    FdkkResponse checkToken(@Header("token")  String token);
+
+    /**
+     * 获取v4场景数据
+     */
+    @Post("/ucenter/fusion/scene/list")
+    FdkkResponse sceneList(@JSONBody ScenePram param, @Header("token") String token);
+}

+ 23 - 0
src/main/java/com/fdkankan/fusion/httpClient/client/LaserClient.java

@@ -0,0 +1,23 @@
+package com.fdkankan.fusion.httpClient.client;
+
+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.LaserAddressSource;
+import com.fdkankan.fusion.httpClient.request.LaserSceneParam;
+import com.fdkankan.fusion.httpClient.response.FdkkResponse;
+import com.fdkankan.fusion.request.ScenePram;
+
+/**
+ * 获取,调用laser服务
+ */
+@Address(source = LaserAddressSource.class)
+public interface LaserClient {
+
+    /**
+     * 获取深时场景数据
+     */
+    @Post("/laser/4dage/sceneList")
+    FdkkResponse sceneList(@JSONBody LaserSceneParam param, @Header("fdToken") String token);
+}

+ 18 - 0
src/main/java/com/fdkankan/fusion/httpClient/client/OverallClient.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.httpClient.client;
+
+import com.alibaba.fastjson.JSONObject;
+import com.dtflys.forest.annotation.*;
+import com.fdkankan.fusion.httpClient.address.OverallAddressSource;
+
+/**
+ * 获取,调用全景看看服务
+ */
+@Address(source = OverallAddressSource.class)
+public interface OverallClient {
+
+    @Post("/manage/age/list")
+    JSONObject list(@JSONBody JSONObject param, @Header("token") String token);
+
+    @Post("/manage/age/remove/{id}")
+    JSONObject delete(@Var("id") String id, @Header("token") String token);
+}

+ 11 - 0
src/main/java/com/fdkankan/fusion/httpClient/request/FdkkLoginRequest.java

@@ -0,0 +1,11 @@
+package com.fdkankan.fusion.httpClient.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class FdkkLoginRequest {
+    private String phoneNum;
+    private String password;
+}

+ 14 - 0
src/main/java/com/fdkankan/fusion/httpClient/request/LaserSceneParam.java

@@ -0,0 +1,14 @@
+package com.fdkankan.fusion.httpClient.request;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class LaserSceneParam {
+    private Integer pageNum;
+    private Integer pageSize;
+    private Integer selectType = 1;
+    private List<String> sceneCodes;
+    private String title;
+}

+ 9 - 0
src/main/java/com/fdkankan/fusion/httpClient/response/FdkkLoginVo.java

@@ -0,0 +1,9 @@
+package com.fdkankan.fusion.httpClient.response;
+
+import lombok.Data;
+
+@Data
+public class FdkkLoginVo {
+    private String token;
+    private FdkkUserVo user;
+}

+ 10 - 0
src/main/java/com/fdkankan/fusion/httpClient/response/FdkkResponse.java

@@ -0,0 +1,10 @@
+package com.fdkankan.fusion.httpClient.response;
+
+import lombok.Data;
+
+@Data
+public class FdkkResponse<T> {
+    private Integer code;
+    private String msg;
+    private T data;
+}

+ 95 - 0
src/main/java/com/fdkankan/fusion/httpClient/response/FdkkScenePlus.java

@@ -0,0 +1,95 @@
+package com.fdkankan.fusion.httpClient.response;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 场景主表
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-04
+ */
+@Getter
+@Setter
+public class FdkkScenePlus implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    /**
+     * 场景码
+     */
+    private String num;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 相机id
+     */
+    private Long cameraId;
+
+    /**
+     * 手机id
+     */
+    private String phoneId;
+
+    /**
+     * 场景名称
+     */
+    private String title;
+
+    /**
+     * 场景描述
+     */
+    private String description;
+
+    /**
+     * 场景状态:0-未建好,1--已建好,-1-计算出错,-2--不在官网显示
+     */
+    private Integer sceneStatus;
+
+    /**
+     * 场景来源:相机拍摄10以内表示,1表示八目,2双目,3转台,4 激光  其他来源10以上,11:一键换装,12:123看房,13文通虚拟场景
+     */
+    private Integer sceneSource;
+
+    /**
+     * 支付状态:0表示未付款,1表示付款了,-1表示欠费,-2表示容量不足
+     */
+    private Integer payStatus;
+
+    /**
+     * 场景类型  0-其他,1-文博,2-地产,3-电商,4-餐饮,5-家居,99-一件换装虚拟房源
+     */
+    private Integer sceneType;
+
+    /**
+     * 是否推荐:0-否,1-是
+     */
+    private Integer recommend;
+
+    /**
+     * 创建时间
+     */
+    private String createTime;
+
+    /**
+     * 更新时间
+     */
+    private String updateTime;
+
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    private String recStatus;
+}

+ 130 - 0
src/main/java/com/fdkankan/fusion/httpClient/response/FdkkScenePlusExt.java

@@ -0,0 +1,130 @@
+package com.fdkankan.fusion.httpClient.response;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-04
+ */
+@Getter
+@Setter
+public class FdkkScenePlusExt implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    /**
+     * t_scene_plus主键
+     */
+    private Long plusId;
+
+    /**
+     * 场景数据目录
+     */
+    private String dataSource;
+
+    /**
+     * 场景链接
+     */
+    private String webSite;
+
+    /**
+     * 缩略图链接
+     */
+    private String thumb;
+
+    /**
+     * 方案:1-双目,2-转台,3-六目,4-八目,10-获取4k图,11-获取2k,12-获取1k
+     */
+    private Integer sceneScheme;
+
+    /**
+     * 使用用量
+     */
+    private Long space;
+
+    /**
+     * 云服务器类型
+     */
+    private String ecs;
+
+    /**
+     * 点位数量
+     */
+    private Integer shootCount;
+
+    /**
+     * 浏览次数
+     */
+    private Integer viewCount;
+
+    /**
+     * gps定位
+     */
+    private String gps;
+
+    /**
+     * 算法类型(slam、sfm)
+     */
+    private String algorithm;
+
+    /**
+     * 固件版本
+     */
+    private String firmwareVersion;
+
+    /**
+     * 算法类型(V2,V3)
+     */
+    private String buildType;
+
+    /**
+     * 分辨率(2k,4k)
+     */
+    private String sceneResolution;
+
+    /**
+     * 场景来源,lite:双目lite相机,pro:八目相机,minion:双面转台相机,laser:激光相机,virtual:虚拟场景,sketch:图片建模场景
+     */
+    private String sceneFrom;
+
+    /**
+     * 切图方式(tiles:瓦片图,face:切片图,pan:全景图 ,local:本地切片,cube:立体图)
+     */
+    private String sceneKind;
+
+    /**
+     * 点位视频
+     */
+    private String videos;
+
+    /**
+     * 计算耗时
+     */
+    private Long computeTime;
+
+    /**
+     * 创建时间
+     */
+    private String createTime;
+
+    /**
+     * 更新时间
+     */
+    private String updateTime;
+
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    private String recStatus;
+}

+ 9 - 0
src/main/java/com/fdkankan/fusion/httpClient/response/FdkkScenePlusVo.java

@@ -0,0 +1,9 @@
+package com.fdkankan.fusion.httpClient.response;
+
+import lombok.Data;
+
+@Data
+public class FdkkScenePlusVo extends FdkkScenePlus {
+    private FdkkScenePlusExt plusExt;
+    private String snCode;
+}

+ 25 - 0
src/main/java/com/fdkankan/fusion/httpClient/response/FdkkUserVo.java

@@ -0,0 +1,25 @@
+package com.fdkankan.fusion.httpClient.response;
+
+import lombok.Data;
+
+@Data
+public class FdkkUserVo {
+    private Long id ;
+    private String userName;                    //用户名
+    private String head;                        //头像
+    private String nickName;                    //昵称
+    private String email;                       //邮箱
+    private Integer availableSpace;             //可用空间
+    private Long cameraCount;                   //已绑相机
+    private Integer downloadNum;                //已下载场景总数
+    private Integer downloadNumTotal;           //总的下载场景总数
+    private Long incrementBindNum;              //已绑定的会员权益数量
+    private Long incrementNum;                  //会员权益数量
+
+    private Long cameraId;
+    private Integer cameraLogin;
+
+    private Long sceneCount;
+    private Long expansionTotal;
+
+}

+ 60 - 0
src/main/java/com/fdkankan/fusion/laser/entity/GeoPoint.java

@@ -0,0 +1,60 @@
+package com.fdkankan.fusion.laser.entity;
+
+import lombok.Data;
+
+/**
+ * @author Xiewj
+ * @date 2021/11/9
+ */
+@Data
+public class GeoPoint {
+
+    public GeoPoint() {
+    }
+
+    public GeoPoint(Double lon, Double lat) {
+        this.lon = lon;
+        this.lat = lat;
+    }
+    public GeoPoint(Double[] point) {
+        if (point != null && point.length != 0) {
+            if (point.length == 1) {
+                this.lon = point[0];
+            } else {
+                this.lon = point[0];
+                this.lat = point[1];
+            }
+        } else {
+            this.lon = 0.0D;
+            this.lat = 0.0D;
+        }
+    }
+    public double[] getCoordinates() {
+        return new double[]{this.lon, this.lat};
+    }
+
+    public void setCoordinates(double[] coordinates) {
+        if (coordinates != null && coordinates.length != 0) {
+            if (coordinates.length == 1) {
+                this.lon = coordinates[0];
+            } else {
+                this.lon = coordinates[0];
+                this.lat = coordinates[1];
+                this.alt = coordinates[2];
+            }
+        } else {
+            this.lon = 0.0D;
+            this.lat = 0.0D;
+            this.alt = 0.0D;
+        }
+    }
+    
+    /* 经度 */
+    private Double lon;
+    /* 纬度 */
+    private Double lat;
+    //高程
+    private Double alt;
+
+    private int id;
+}

+ 27 - 0
src/main/java/com/fdkankan/fusion/laser/entity/HotType.java

@@ -0,0 +1,27 @@
+package com.fdkankan.fusion.laser.entity;
+
+/**
+ * @author Xiewj
+ * @date 2021/11/30
+ */
+public     enum HotType{
+    //定义枚举的值
+    TEXT(0,"text"),IMAGE(1,"image"),AUDIO(2,"audio"),VIDEO(3, "video"),WEB(4, "web");;
+
+    private int state;
+    private String info;
+
+    //构造方法(枚举的构造方法只允许private类型)
+    private HotType(int state, String info){
+        this.state = state;
+        this.info = info;
+    }
+
+    public int getState(){
+        return state;
+    }
+
+    public String getInfo(){
+        return info;
+    }
+}

+ 13 - 0
src/main/java/com/fdkankan/fusion/laser/entity/MetaPO.java

@@ -0,0 +1,13 @@
+package com.fdkankan.fusion.laser.entity;
+
+import lombok.Data;
+
+/**
+ * @author Xiewj
+ * @date 2021/11/29
+ */
+@Data
+public class MetaPO {
+   private String name;
+   private String url;
+}

+ 72 - 0
src/main/java/com/fdkankan/fusion/laser/entity/PoiEntity.java

@@ -0,0 +1,72 @@
+package com.fdkankan.fusion.laser.entity;
+
+
+import com.fdkankan.mongodb.base.BaseMongoEntity;
+import lombok.Data;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.List;
+
+
+/**
+ * Created by Xiewj on 2021/7/27 0027 10:42
+ * poi 热点
+ */
+@Data
+@Document(collection = "t_poi")
+public class PoiEntity extends BaseMongoEntity {
+
+    /**
+     * 场景码
+     */
+    private String sceneCode;
+
+    /**
+     * 数据集id
+     */
+    private String datasetId;
+
+    /**
+     * 经纬度 暂留
+     */
+    private GeoPoint gis;
+
+    /**
+     * 坐标
+     */
+    private PointPO pos;
+
+    /**
+     * 坐标
+     */
+    private PointPO dataset_location;
+
+    /**
+     * 热点类型   'text' | 'image' | 'audio' | 'video'  | 'web'
+     */
+    private HotType type;
+
+    /**
+     * 类型id
+     */
+    private String title;
+
+    /**
+     * 类型id
+     */
+    private String poiStyleId;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 内容
+     */
+    private List<MetaPO> meta;
+
+    private Double[] visualRange;
+
+
+}

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

@@ -0,0 +1,66 @@
+package com.fdkankan.fusion.laser.entity;
+
+import com.fdkankan.mongodb.base.BaseRequestMongo;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by Xiewj on 2021/7/27 0027 10:42
+ * poi 热点
+ */
+@Data
+public class PoiHotDto extends BaseRequestMongo {
+
+    private String id;
+    /**
+     * 场景码
+     */
+    private String sceneCode;
+
+    /**
+     * 数据集id
+     */
+    private String datasetId;
+
+    /**
+     * 经纬度 暂留
+     */
+    private GeoPoint gis;
+
+    private PointPO dataset_location;
+
+    /**
+     * 坐标
+     */
+    private PointPO pos;
+
+    /**
+     * 热点类型   'text' | 'image' | 'audio' | 'video'  | 'web'
+     */
+    private HotType type;
+
+    /**
+     * 类型id
+     */
+    private String title;
+
+    /**
+     * 类型id
+     */
+    private PoiTypeEntity hotStyleAtom;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 内容
+     */
+    private List<MetaPO> meta;
+
+    private Double[] visualRange;
+
+
+}

+ 28 - 0
src/main/java/com/fdkankan/fusion/laser/entity/PoiTypeDto.java

@@ -0,0 +1,28 @@
+package com.fdkankan.fusion.laser.entity;
+
+import com.fdkankan.mongodb.base.BaseRequestMongo;
+import lombok.Data;
+
+/**
+ * Created by Xiewj on 2021/7/26 0026 10:21
+ */
+@Data
+public class PoiTypeDto extends BaseRequestMongo {
+
+    private String id;
+
+    /**
+     * 热点名
+     */
+    private String name;
+
+    /**
+     * 场景码
+     */
+    private String sceneCode;
+
+    /**
+     * 图标基础路径
+     */
+    private String icon;
+}

+ 37 - 0
src/main/java/com/fdkankan/fusion/laser/entity/PoiTypeEntity.java

@@ -0,0 +1,37 @@
+package com.fdkankan.fusion.laser.entity;
+
+import com.fdkankan.mongodb.base.BaseMongoEntity;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * 初始化信息对象 t_poi_types
+ *
+ * @author fdkk
+ * @date 2021-11-22
+ */
+@Data
+@Accessors(chain = true)
+@Document("t_poi_types")
+public class PoiTypeEntity extends BaseMongoEntity {
+    /**
+     * 热点名
+     */
+    private String name;
+
+    /**
+     * 场景码
+     */
+    private String sceneCode;
+
+    /**
+     * 图标基础路径
+     */
+    private String icon;
+
+    /**
+     * 是否默认
+     */
+    private boolean isDefault;
+}

+ 22 - 0
src/main/java/com/fdkankan/fusion/laser/entity/PointPO.java

@@ -0,0 +1,22 @@
+package com.fdkankan.fusion.laser.entity;
+
+import lombok.Data;
+
+/**
+ * @author Xiewj
+ * @date 2021/11/29
+ */
+@Data
+public class PointPO {
+   private Double x;
+   private Double y;
+   private Double z;
+
+   public PointPO(Double x, Double y, Double z) {
+      this.x = x;
+      this.y = y;
+      this.z = z;
+   }
+   public PointPO( ) {
+   }
+}

+ 18 - 0
src/main/java/com/fdkankan/fusion/laser/entity/SearchDTO.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.laser.entity;
+
+import lombok.Data;
+
+/**
+ * Created by xiewj 2021年12月16日10:26:44
+ *
+ * 多数据集剪裁参数
+ * @author xiewj
+ */
+@Data
+public class SearchDTO {
+
+    private String query;
+
+    private Integer size;
+
+}

+ 21 - 0
src/main/java/com/fdkankan/fusion/laser/service/PoiService.java

@@ -0,0 +1,21 @@
+package com.fdkankan.fusion.laser.service;
+
+
+import com.fdkankan.fusion.laser.entity.PoiEntity;
+import com.fdkankan.fusion.laser.entity.PoiHotDto;
+import com.fdkankan.mongodb.base.MongoPageResult;
+import com.fdkankan.mongodb.service.MongodbBaseService;
+
+import java.util.List;
+
+/**
+ * Created by Xiewj on 2021/7/14 0014 14:31
+ */
+public interface PoiService extends MongodbBaseService<PoiEntity> {
+
+
+    MongoPageResult<PoiEntity> ListByPage(PoiHotDto parmes);
+
+    List<PoiEntity> getHotList(List<String> numList);
+
+}

+ 39 - 0
src/main/java/com/fdkankan/fusion/laser/service/PoiServiceImpl.java

@@ -0,0 +1,39 @@
+package com.fdkankan.fusion.laser.service;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.fdkankan.fusion.laser.entity.PoiEntity;
+import com.fdkankan.fusion.laser.entity.PoiHotDto;
+import com.fdkankan.mongodb.base.MongoPageResult;
+import com.fdkankan.mongodb.service.impl.MongodbBaseServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * Created by Xiewj on 2021/7/14 0014 14:31
+ */
+@Slf4j
+@Service
+public class PoiServiceImpl extends MongodbBaseServiceImpl<PoiEntity> implements PoiService {
+
+
+    @Override
+    public MongoPageResult<PoiEntity> ListByPage(PoiHotDto parmes) {
+        Query query = new Query();
+        if (ObjectUtil.isNotNull(parmes.getSceneCode())) {
+            query.addCriteria(Criteria.where("sceneCode").is(parmes.getSceneCode()));
+        }
+
+        return pageQuery(parmes, query);
+    }
+
+    @Override
+    public List<PoiEntity> getHotList(List<String> numList) {
+        Query query = new Query();
+        query.addCriteria(Criteria.where("sceneCode").in(numList));
+        return find(query);
+    }
+}

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

@@ -0,0 +1,27 @@
+package com.fdkankan.fusion.laser.service;
+
+
+import com.fdkankan.fusion.laser.entity.PoiTypeDto;
+import com.fdkankan.fusion.laser.entity.PoiTypeEntity;
+import com.fdkankan.mongodb.base.MongoPageResult;
+import com.fdkankan.mongodb.service.MongodbBaseService;
+
+import java.util.List;
+
+/**
+ * Created by Xiewj on 2021/11/23 0026 10:14
+ */
+public interface PoiTypeService extends MongodbBaseService<PoiTypeEntity> {
+    void removeByIds(String[] ids);
+
+    void removeById(String id);
+
+    void removeBySceneCode(String sceneCode);
+
+    List<PoiTypeEntity> findBySceneCode(String sceneCode);
+
+    MongoPageResult<PoiTypeEntity> ListByPage(PoiTypeDto parmes);
+
+    PoiTypeEntity findByIsDefault();
+
+}

+ 63 - 0
src/main/java/com/fdkankan/fusion/laser/service/PoiTypeServiceImpl.java

@@ -0,0 +1,63 @@
+package com.fdkankan.fusion.laser.service;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.fdkankan.fusion.laser.entity.PoiTypeDto;
+import com.fdkankan.fusion.laser.entity.PoiTypeEntity;
+import com.fdkankan.mongodb.base.MongoPageResult;
+import com.fdkankan.mongodb.service.impl.MongodbBaseServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+/**
+ * Created by Xiewj on 2021/11/23 0026 10:14
+ */
+@Slf4j
+@Service
+public class PoiTypeServiceImpl extends MongodbBaseServiceImpl<PoiTypeEntity> implements PoiTypeService {
+    @Override
+    public void removeByIds(String[] ids) {
+        for (String id : ids) {
+            deleteById(id);
+        }
+    }
+
+    @Override
+    public void removeById(String id) {
+        deleteById(id);
+    }
+
+    @Override
+    public void removeBySceneCode(String sceneCode) {
+        Query query = new Query(Criteria.where("sceneCode").is(sceneCode));
+        delete(query);
+    }
+
+    @Override
+    public List<PoiTypeEntity> findBySceneCode(String sceneCode) {
+        Query query = new Query(Criteria.where("sceneCode").is(sceneCode));
+        return find(query);
+    }
+
+    @Override
+    public MongoPageResult<PoiTypeEntity> ListByPage(PoiTypeDto parmes) {
+        Query query = new Query();
+        Criteria sceneCode = null;
+        if (ObjectUtil.isNotNull(parmes.getSceneCode())) {
+            sceneCode = Criteria.where("sceneCode").in("DEFAULT", parmes.getSceneCode());
+        }
+        query.addCriteria(sceneCode);
+        parmes.setSortBy("createTime");
+        return pageQuery(parmes, query);
+    }
+
+    @Override
+    public PoiTypeEntity findByIsDefault() {
+        Query query = new Query(Criteria.where("isDefault").is(true));
+        return findOne(query);
+    }
+}

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

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

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

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

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

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

+ 11 - 0
src/main/java/com/fdkankan/fusion/request/CaseParam.java

@@ -0,0 +1,11 @@
+package com.fdkankan.fusion.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+@Data
+public class CaseParam extends RequestBase {
+    private Integer caseId;
+    private String caseTitle;
+    private SceneNumParam sceneNumParam;
+}

+ 15 - 0
src/main/java/com/fdkankan/fusion/request/CaseVideoParam.java

@@ -0,0 +1,15 @@
+package com.fdkankan.fusion.request;
+
+import lombok.Data;
+
+@Data
+public class CaseVideoParam {
+    private Integer videoId;
+    private Integer caseId;
+    private String videoPath;
+    private String videoName;
+    private Integer sort;
+
+    private String orderBy = "sort";
+    private String sortBy = "ASC";
+}

+ 11 - 0
src/main/java/com/fdkankan/fusion/request/SceneNumParam.java

@@ -0,0 +1,11 @@
+package com.fdkankan.fusion.request;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SceneNumParam {
+    private Integer type;
+    private List<String> numList;
+}

+ 13 - 0
src/main/java/com/fdkankan/fusion/request/ScenePram.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 ScenePram extends RequestBase {
+    private Integer type; //0 看看,看见 ;1深时
+    private String sceneName;
+    private List<String> numList;
+}

+ 13 - 0
src/main/java/com/fdkankan/fusion/response/CaseVo.java

@@ -0,0 +1,13 @@
+package com.fdkankan.fusion.response;
+
+import com.fdkankan.fusion.entity.CaseEntity;
+import com.fdkankan.fusion.request.SceneNumParam;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CaseVo extends CaseEntity {
+
+    private List<SceneNumParam> sceneNumParam;
+}

+ 15 - 0
src/main/java/com/fdkankan/fusion/response/HotVo.java

@@ -0,0 +1,15 @@
+package com.fdkankan.fusion.response;
+
+import lombok.Data;
+
+@Data
+public class HotVo {
+
+    private String id;              //热点id
+    private String num;             //场景码
+    private String title;           //热点标题
+    private String content;         //热点内容
+    private Integer numType;        //场景码类型
+    private String  type;           //热点类型
+    private String  icon;           //热点图标
+}

+ 21 - 0
src/main/java/com/fdkankan/fusion/response/SceneVo.java

@@ -0,0 +1,21 @@
+package com.fdkankan.fusion.response;
+
+import lombok.Data;
+
+@Data
+public class SceneVo {
+    private Long id;
+    private Integer buildObjStatus;
+    private String createTime;
+    private String name;
+    private String num;
+    private Integer payStatus;
+    private String sceneName;
+    private String snCode;
+    private Integer status;
+    private String thumb;
+    private String title;
+    private Integer viewCount;
+    private Boolean isLaser;
+    private Integer type;       // 0 四维看看,看见场景,1 深时场景
+}

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

@@ -0,0 +1,28 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.CaseNumEntity;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.fusion.request.SceneNumParam;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-27
+ */
+public interface ICaseNumService extends IService<CaseNumEntity> {
+
+    List<CaseNumEntity> getByCaseId(Integer caseId);
+
+
+    void addBatch(Integer caseId, SceneNumParam sceneNumParam);
+
+    void deleteByCaseId(Integer caseId);
+
+    HashMap<Integer, List<String>> getTypeMap(Integer caseId);
+}

+ 34 - 0
src/main/java/com/fdkankan/fusion/service/ICaseService.java

@@ -0,0 +1,34 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.common.response.PageInfo;
+import com.fdkankan.fusion.entity.CaseEntity;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.fusion.request.CaseParam;
+import com.fdkankan.fusion.response.HotVo;
+import com.fdkankan.fusion.response.SceneVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-27
+ */
+public interface ICaseService extends IService<CaseEntity> {
+
+
+    PageInfo pageList(CaseParam param,String token);
+
+    void addOrUpdate(CaseParam param, String token);
+
+    void addScene(CaseParam param);
+
+    void delete(Integer caseId);
+
+    List<SceneVo> sceneList(CaseParam param, String token);
+
+    List<HotVo> hotList(Integer caseId);
+}

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

@@ -0,0 +1,23 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.CaseVideo;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.fusion.request.CaseParam;
+import com.fdkankan.fusion.request.CaseVideoParam;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author
+ * @since 2022-07-29
+ */
+public interface ICaseVideoService extends IService<CaseVideo> {
+
+    List<CaseVideo> getList(CaseVideoParam param);
+
+    void add(CaseVideoParam caseVideoParam);
+}

+ 9 - 0
src/main/java/com/fdkankan/fusion/service/ISceneService.java

@@ -0,0 +1,9 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.common.response.PageInfo;
+import com.fdkankan.fusion.request.ScenePram;
+
+public interface ISceneService {
+
+    PageInfo pageList(ScenePram param, String token);
+}

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

@@ -0,0 +1,81 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.fusion.entity.CaseNumEntity;
+import com.fdkankan.fusion.mapper.ICaseNumMapper;
+import com.fdkankan.fusion.request.SceneNumParam;
+import com.fdkankan.fusion.service.ICaseNumService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-27
+ */
+@Service
+public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntity> implements ICaseNumService {
+
+    @Override
+    public List<CaseNumEntity> getByCaseId(Integer caseId) {
+        LambdaQueryWrapper<CaseNumEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CaseNumEntity::getCaseId,caseId);
+        return this.list(wrapper);
+    }
+
+
+    @Override
+    public void addBatch(Integer caseId, SceneNumParam sceneNumParam) {
+
+        List<CaseNumEntity> caseNumEntityList = this.getByCaseId(caseId);
+        List<CaseNumEntity> newCaseNums = new ArrayList<>();
+        for (String num : sceneNumParam.getNumList()) {
+            if(caseNumEntityList.size() >0){
+                List<String> inNums = caseNumEntityList.parallelStream().map(CaseNumEntity::getNum).collect(Collectors.toList());
+                if(inNums.contains(num)){
+                    continue;
+                }
+            }
+            CaseNumEntity caseNumEntity = new CaseNumEntity();
+            caseNumEntity.setCaseId(caseId);
+            caseNumEntity.setNumType(sceneNumParam.getType());
+            caseNumEntity.setNum(num);
+            newCaseNums.add(caseNumEntity);
+        }
+        if(newCaseNums.size() >0){
+            this.saveBatch(newCaseNums);
+        }
+    }
+
+    @Override
+    public void deleteByCaseId(Integer caseId) {
+        LambdaQueryWrapper<CaseNumEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CaseNumEntity::getCaseId,caseId);
+        this.remove(wrapper);
+    }
+
+    @Override
+    public HashMap<Integer, List<String>> getTypeMap(Integer caseId) {
+        List<CaseNumEntity> caseNumList = this.getByCaseId(caseId);
+        HashMap<Integer,List<String>> typeMap = new HashMap<>();
+        for (CaseNumEntity caseNumEntity : caseNumList) {
+            List<String> numList ;
+            if(typeMap.get(caseNumEntity.getNumType()) == null){
+                numList = new ArrayList<>();
+            }else {
+                numList = typeMap.get(caseNumEntity.getNumType());
+            }
+            numList.add(caseNumEntity.getNum());
+            typeMap.put(caseNumEntity.getNumType(),numList);
+        }
+        return typeMap;
+    }
+}

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

@@ -0,0 +1,139 @@
+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.common.response.PageInfo;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.fusion.entity.CaseEntity;
+import com.fdkankan.fusion.mapper.ICaseMapper;
+import com.fdkankan.fusion.request.CaseParam;
+import com.fdkankan.fusion.request.ScenePram;
+import com.fdkankan.fusion.response.HotVo;
+import com.fdkankan.fusion.response.SceneVo;
+import com.fdkankan.fusion.service.ICaseNumService;
+import com.fdkankan.fusion.service.ICaseService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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 java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-27
+ */
+@Service
+public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implements ICaseService {
+
+    @Autowired
+    ISceneService sceneService;
+    @Autowired
+    ICaseNumService caseNumService;
+    @Autowired
+    FdHotService fdHotService;
+
+    @Override
+    public PageInfo pageList(CaseParam param,String token) {
+        String userName = JwtUtil.getUsername(token);
+        LambdaQueryWrapper<CaseEntity> wrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(param.getCaseTitle())){
+            wrapper.like(CaseEntity::getCaseTitle,param.getCaseTitle());
+        }
+        wrapper.eq(CaseEntity::getUserName,userName);
+        wrapper.orderByDesc(CaseEntity::getCreateTime);
+        Page<CaseEntity> page = this.page( new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
+        return PageInfo.PageInfo(page);
+    }
+
+    @Override
+    public List<SceneVo> sceneList(CaseParam param, String token) {
+        if(param.getCaseId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        HashMap<Integer, List<String>> typeMap = caseNumService.getTypeMap(param.getCaseId());
+        List<SceneVo> listAll = new ArrayList<>();
+        for (Integer type : typeMap.keySet()) {
+            List<String> numList = typeMap.get(type);
+            if(numList ==null || numList.size() <=0){
+                continue;
+            }
+            ScenePram scenePram = new ScenePram();
+            scenePram.setType(type);
+            scenePram.setPageNum(1);
+            scenePram.setPageSize(99999);
+            scenePram.setNumList(typeMap.get(type));
+            PageInfo pageInfo = sceneService.pageList(scenePram,token);
+            List<SceneVo> list1 = (List<SceneVo>) pageInfo.getList();
+            listAll.addAll(list1);
+        }
+        return listAll;
+    }
+
+    @Override
+    public void addOrUpdate(CaseParam param, String token) {
+        String userName = JwtUtil.getUsername(token);
+        if(StringUtils.isEmpty(param.getCaseTitle())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        CaseEntity caseEntity ;
+        if(param.getCaseId() == null){
+            caseEntity = new CaseEntity();
+            caseEntity.setUserName(userName);
+        }else {
+            caseEntity = this.getById(param.getCaseId());
+        }
+        caseEntity.setCaseTitle(param.getCaseTitle());
+        caseEntity.setUpdateTime(null);
+        this.saveOrUpdate(caseEntity);
+    }
+
+    @Override
+    public void addScene(CaseParam param) {
+        if(param.getCaseId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        CaseEntity caseEntity = this.getById(param.getCaseId());
+        if(caseEntity == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        caseNumService.addBatch(param.getCaseId(),param.getSceneNumParam());
+    }
+
+    @Override
+    public void delete(Integer caseId) {
+        if(caseId == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        //删除关联的场景
+        caseNumService.deleteByCaseId(caseId);
+
+        this.removeById(caseId);
+    }
+
+
+    @Override
+    public List<HotVo> hotList(Integer caseId) {
+        HashMap<Integer, List<String>> typeMap = caseNumService.getTypeMap(caseId);
+        List<HotVo> listAll = new ArrayList<>();
+        for (Integer type : typeMap.keySet()) {
+            List<String> numList = typeMap.get(type);
+            if(numList ==null || numList.size() <=0){
+                continue;
+            }
+            List<HotVo> hotList = fdHotService.getHotList(numList, type);
+            listAll.addAll(hotList);
+        }
+        return listAll;
+    }
+
+}

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

@@ -0,0 +1,58 @@
+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.entity.CaseVideo;
+import com.fdkankan.fusion.mapper.ICaseVideoMapper;
+import com.fdkankan.fusion.request.CaseParam;
+import com.fdkankan.fusion.request.CaseVideoParam;
+import com.fdkankan.fusion.service.ICaseVideoService;
+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-07-29
+ */
+@Service
+public class CaseVideoServiceImpl extends ServiceImpl<ICaseVideoMapper, CaseVideo> implements ICaseVideoService {
+
+    @Override
+    public List<CaseVideo> getList(CaseVideoParam param) {
+        if(param.getCaseId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        QueryWrapper<CaseVideo> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(CaseVideo::getCaseId,param.getCaseId());
+        if(StringUtils.isNotBlank(param.getOrderBy())){
+            if(param.getSortBy().toLowerCase().equals("desc")){
+                wrapper.orderByDesc(param.getOrderBy());
+            }else {
+                wrapper.orderByAsc(param.getOrderBy());
+            }
+        }
+        return this.list(wrapper);
+    }
+
+    @Override
+    public void add(CaseVideoParam param) {
+        if(param.getCaseId() == null || StringUtils.isEmpty(param.getVideoName()) || StringUtils.isEmpty(param.getVideoPath())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        CaseVideo caseVideo = new CaseVideo();
+        caseVideo.setCaseId(param.getCaseId());
+        caseVideo.setVideoPath(param.getVideoPath());
+        caseVideo.setVoideName(param.getVideoName());
+        caseVideo.setSort(param.getSort());
+        this.save(caseVideo);
+    }
+}

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

@@ -0,0 +1,106 @@
+package com.fdkankan.fusion.service.impl;
+
+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.laser.entity.PoiEntity;
+import com.fdkankan.fusion.laser.entity.PoiHotDto;
+import com.fdkankan.fusion.laser.entity.PoiTypeEntity;
+import com.fdkankan.fusion.laser.service.PoiService;
+import com.fdkankan.fusion.laser.service.PoiTypeService;
+import com.fdkankan.fusion.response.HotVo;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import org.apache.commons.lang3.StringUtils;
+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;
+
+@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;
+
+    @Autowired
+    PoiService poiService;
+    @Autowired
+    private PoiTypeService poiTypeService;
+    /**
+     * 获取四维热点数据 to oss
+     * @return
+     */
+    public List<HotVo> getHotList(List<String> numList, Integer type){
+        if(type == 2){
+            return getLaserHot(numList);
+        }
+        List<HotVo> list = new ArrayList<>();
+        for (String num : numList) {
+            String ossPath = String.format(hotPath, num);
+            if(!uploadToOssUtil.existKey(ossPath)){
+                continue;
+            }
+            String hotString = uploadToOssUtil.getObjectContent("4dkankan",ossPath );
+            if(StringUtils.isEmpty(hotString)){
+                continue;
+            }
+            JSONArray array = JSONObject.parseArray(hotString);
+            for (Object obj : array) {
+
+                JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(obj));
+                HotVo hotVo = new HotVo();
+                hotVo.setId(jsonObject.getString("sid"));
+                hotVo.setTitle(jsonObject.getString("title"));
+                hotVo.setNum(num);
+                hotVo.setContent(jsonObject.getString("content"));
+                hotVo.setNumType(type);
+                hotVo.setType(jsonObject.getString("type"));
+                String icon = StringUtils.isEmpty(jsonObject.getString("icon") ) ? hotIconDefaultPath : jsonObject.getString("icon");
+                hotVo.setIcon(icon);
+                list.add(hotVo);
+            }
+        }
+
+        return list;
+    }
+
+
+    /**
+     * 获取机关热点数据
+     */
+    private List<HotVo> getLaserHot(List<String> numList){
+        List<HotVo> voList = new ArrayList<>();
+
+        List<PoiEntity> list = poiService.getHotList(numList);
+         List<PoiHotDto> poiHotDtoList = list.stream().map(a -> {
+            PoiHotDto dto = new PoiHotDto();
+            BeanUtil.copyProperties(a, dto);
+            PoiTypeEntity poiType = poiTypeService.findById(a.getPoiStyleId());
+            if (ObjectUtil.isNotNull(poiType)) {
+                dto.setHotStyleAtom(poiType);
+            }
+            return dto;
+        }).collect(Collectors.toList());
+
+        for (PoiHotDto poiHotDto : poiHotDtoList) {
+            HotVo hotVo = new HotVo();
+            hotVo.setId(poiHotDto.getId());
+            hotVo.setTitle(poiHotDto.getTitle());
+            hotVo.setNum(poiHotDto.getSceneCode());
+            hotVo.setContent(poiHotDto.getContent());
+            hotVo.setNumType(2);
+            hotVo.setType(poiHotDto.getType().name());
+            String icon = poiHotDto.getHotStyleAtom() == null ? hotIconDefaultPath : poiHotDto.getHotStyleAtom().getIcon();
+            hotVo.setIcon(icon);
+            voList.add(hotVo);
+        }
+         return voList;
+    }
+
+}

+ 111 - 0
src/main/java/com/fdkankan/fusion/service/impl/SceneService.java

@@ -0,0 +1,111 @@
+package com.fdkankan.fusion.service.impl;
+
+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.common.response.PageInfo;
+import com.fdkankan.fusion.httpClient.client.FdKKClient;
+import com.fdkankan.fusion.httpClient.client.FdKKNewClient;
+import com.fdkankan.fusion.httpClient.client.LaserClient;
+import com.fdkankan.fusion.httpClient.request.LaserSceneParam;
+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.ISceneService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class SceneService implements ISceneService {
+
+    @Resource
+    FdKKNewClient fdKKNewClient;
+    @Resource
+    LaserClient laserClient;
+
+    @Override
+    public PageInfo pageList(ScenePram param, String token) {
+        if(param.getType() == null){
+           throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        List<SceneVo> sceneVoList = new ArrayList<>();
+        long total = 0;
+        if(param.getType() == 0 || param.getType() == 1){      //看看,看见
+            //获取四维(看看,看见)场景数据
+            FdkkResponse fdkkResponse = fdKKNewClient.sceneList(param,token);
+            if(fdkkResponse.getCode() !=0){
+                throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMsg());
+            }
+            PageInfo pageInfo = JSONObject.parseObject(JSONObject.toJSONString(fdkkResponse.getData()), PageInfo.class);
+            total =  pageInfo.getTotal();
+            JSONArray list = JSONArray.parseArray(JSONObject.toJSONString( pageInfo.getList()));
+            sceneVoList = overSceneVo(list);
+
+        }
+        if(param.getType() == 2){       //深时
+            //获取激光(深时)场景数据
+            LaserSceneParam laserSceneParam = new LaserSceneParam();
+            laserSceneParam.setPageNum(param.getPageNum());
+            laserSceneParam.setPageSize(param.getPageSize());
+            if(StringUtils.isNotBlank(param.getSceneName())){
+                laserSceneParam.setTitle(param.getSceneName());
+            }
+            if(param.getNumList() != null && param.getNumList().size() >0){
+                laserSceneParam.setSceneCodes(param.getNumList());
+            }
+            FdkkResponse fdkkResponse = laserClient.sceneList(laserSceneParam, token);
+            if(fdkkResponse.getCode() !=200){
+                throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMsg());
+            }
+            JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(fdkkResponse.getData())).getJSONObject("pageInfo");
+            total = jsonObject.getLong("total");
+            JSONArray list = jsonObject.getJSONArray("list");
+            for (Object o : list) {
+                String res = JSONObject.toJSONString(o);
+                SceneVo vo = JSONObject.parseObject(res,SceneVo.class);
+                vo.setType(2);
+                sceneVoList.add(vo);
+            }
+        }
+
+        Page<SceneVo> voPage = new Page<>(param.getPageNum(),param.getPageSize());
+        voPage.setRecords(sceneVoList);
+        voPage.setTotal(total);
+        return PageInfo.PageInfo(voPage);
+    }
+
+    /**
+     * 四维看看返回数据格式转换
+     */
+    private List<SceneVo> overSceneVo(JSONArray list) {
+        List<SceneVo> sceneVoList = new ArrayList<>();
+        for (Object obj : list) {
+            String res = JSONObject.toJSONString(obj);
+            FdkkScenePlusVo fdkkScenePlusVo = JSONObject.parseObject(res,FdkkScenePlusVo.class);
+            SceneVo sceneVo = new SceneVo();
+            sceneVo.setId(fdkkScenePlusVo.getId());
+            sceneVo.setBuildObjStatus(0);
+            sceneVo.setCreateTime(fdkkScenePlusVo.getCreateTime());
+            sceneVo.setName(fdkkScenePlusVo.getTitle());
+            sceneVo.setNum(fdkkScenePlusVo.getNum());
+            sceneVo.setPayStatus(fdkkScenePlusVo.getPayStatus());
+            sceneVo.setSceneName(fdkkScenePlusVo.getTitle());
+            sceneVo.setSnCode(fdkkScenePlusVo.getSnCode());
+            sceneVo.setStatus(fdkkScenePlusVo.getSceneStatus());
+            sceneVo.setThumb(fdkkScenePlusVo.getPlusExt().getThumb());
+            sceneVo.setTitle(fdkkScenePlusVo.getTitle());
+            sceneVo.setViewCount(fdkkScenePlusVo.getPlusExt().getViewCount());
+            sceneVo.setIsLaser(false);
+            sceneVo.setType(fdkkScenePlusVo.getSceneType());
+            sceneVoList.add(sceneVo);
+        }
+        return sceneVoList;
+    }
+}

+ 36 - 2
src/main/resources/application.yaml

@@ -25,11 +25,17 @@ spring:
         max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
     lettuce:
       shutdown-timeout: 0ms
+  data:
+    mongodb:
+      uri: mongodb://4dage:1234@120.25.146.52:27017/laser
+
 
 
 logging:
   config: classpath:logback-spring.xml
-  path: /mnt/4Dkankan/v4/logs
+mybatis-plus:
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志
 
 4dkk:
   laserService:
@@ -37,9 +43,13 @@ logging:
     basePath: http://uat-laser.4dkankan.com
     port: 80
   fdService:
-    #官网生产环境:https://www.4dkankan.com
+    #官网生产环境:https://www.4dkankan.com      http://test.4dkankan.com
     basePath: http://test.4dkankan.com
     port: 80
+  newFdService:
+    #官网生产环境:https://www.4dkankan.com
+    basePath: http://127.0.0.1
+    port: 8802
   overallService:
     #全景看看生产环境 host: https://www.4dkankan.com/qjkankan
     basePath: http://test.4dkankan.com/qjkankan
@@ -62,3 +72,27 @@ forest:
   connect-timeout: 3000000
 
 
+upload:
+  type: oss
+
+oss:
+  #point: http://oss-cn-shenzhen-internal.aliyuncs.com
+  point: http://oss-cn-shenzhen.aliyuncs.com
+  key: LTAIUrvuHqj8pvry
+  secrey: JLOVl0k8Ke0aaM8nLMMiUAZ3EiiqI4
+  bucket: 4dkankan
+  sdk: 4dscene
+  prefix:
+    ali: https://4dkk.4dage.com/
+    sdk: https://4dscene.4dage.com/
+    url: https://4dkk.4dage.com/
+  dir:
+    invoice: invoice
+
+aws:
+  s3key: AKIAWCV5QFZ3ZNELKYUY
+  s3secrey: epS5ghyR4LJ7rxk/qJO9ZYh6m9Oz6g5haKDu4yws
+  s3bucket: 4dkankan
+
+local:
+  path: /home/4dkankan/

+ 5 - 0
src/main/resources/mapper/fusion/CaseMapper.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.ICaseMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/fusion/CaseNumMapper.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.ICaseNumMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/fusion/CaseVideoMapper.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.ICaseVideoMapper">
+
+</mapper>