Kaynağa Gözat

添加接口

tianboguang 2 yıl önce
ebeveyn
işleme
3f74732431

+ 43 - 0
src/main/java/com/fdkankan/openApi/common/PageInfo.java

@@ -0,0 +1,43 @@
+package com.fdkankan.openApi.common;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PageInfo<T> {
+
+    private long pageNum;
+
+    private long pageSize;
+
+    private long total;
+
+    private T list;
+
+    public static PageInfo PageInfo(Page page){
+        return PageInfo.builder()
+            .pageNum(page.getCurrent())
+            .pageSize(page.getSize())
+            .total(page.getTotal())
+            .list(page.getRecords())
+            .build();
+    }
+    public static PageInfo PageInfo(Long currentPage, Long pageSize, Long total, List<?> list){
+        return PageInfo.builder()
+            .pageNum(currentPage)
+            .pageSize(pageSize)
+            .total(total)
+            .list(list)
+            .build();
+    }
+
+
+}

+ 104 - 0
src/main/java/com/fdkankan/openApi/controller/www/SceneController.java

@@ -0,0 +1,104 @@
+package com.fdkankan.openApi.controller.www;
+
+
+import com.fdkankan.openApi.common.PageInfo;
+import com.fdkankan.openApi.entity.system.User;
+import com.fdkankan.openApi.entity.www.ScenePlus;
+import com.fdkankan.openApi.entity.www.ScenePlusExt;
+import com.fdkankan.openApi.service.laser.SceneService;
+import com.fdkankan.openApi.service.system.IUserService;
+import com.fdkankan.openApi.service.www.IScenePlusExtService;
+import com.fdkankan.openApi.service.www.IScenePlusService;
+import com.fdkankan.openApi.vo.www.SceneVO;
+import com.fdkankan.web.response.ResultData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-02-15
+ */
+@RestController
+@RequestMapping("/openApi/scene")
+public class SceneController {
+
+
+    @Autowired
+    private IScenePlusService scenePlusService;
+
+    @Autowired
+    private IUserService userService;
+
+    @Autowired
+    private IScenePlusExtService scenePlusExtService;
+
+    @Autowired
+    private SceneService sceneService;
+
+    /**
+     * 根据用户名获取场景列表
+     * @return
+     */
+    @RequestMapping("/getScenesByUsername")
+    public ResultData getScenesByUsername(@RequestBody SceneVO sceneVO) {
+        User user = userService.findByUserName(sceneVO.getUserName());
+        PageInfo pageInfo = scenePlusService.getScenesByUserId(user.getId(),sceneVO.getPageNum(),sceneVO.getPageSize());
+        return ResultData.ok(pageInfo);
+    }
+
+
+    /**
+     * 根据场景码和点位id获取场景点位信息
+     * @return
+     */
+    @RequestMapping("/getScenePointInfo")
+    public ResultData getScenePointInfo(@RequestBody SceneVO sceneVO) {
+        ScenePlus scenePlus = scenePlusService.getByNum(sceneVO.getSceneCode());
+        if(scenePlus.getSceneSource()==4){
+            ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
+            if(scenePlusExt.getIsObj() == 0){
+                return ResultData.ok(sceneService.getPointInfo(sceneVO.getSceneCode()));
+            }
+        }
+        return ResultData.ok(scenePlusService.getPointInfo(sceneVO.getSceneCode()));
+    }
+
+    /**
+     * 根据场景码获取obj文件
+     * @return
+     */
+    @RequestMapping("/getSceneObjFiles")
+    public ResultData getSceneObjFiles(@RequestBody SceneVO sceneVO) {
+        ScenePlus scenePlus = scenePlusService.getByNum(sceneVO.getSceneCode());
+        if(scenePlus.getSceneSource()==4){
+            ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
+            if(scenePlusExt.getIsObj() == 0){
+                return ResultData.ok(sceneService.getSceneObjFilePaths(sceneVO.getSceneCode()));
+            }
+        }
+        return ResultData.ok(scenePlusService.getSceneObjFilePaths(sceneVO.getSceneCode()));
+    }
+
+    /**
+     * 根据场景码获取obj文件
+     * @return
+     */
+    @RequestMapping("/getScenePanoramicImageFiles")
+    public ResultData getScenePanoramicImageFiles(@RequestBody SceneVO sceneVO) {
+        ScenePlus scenePlus = scenePlusService.getByNum(sceneVO.getSceneCode());
+        if(scenePlus.getSceneSource()==4){
+            ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
+            if(scenePlusExt.getIsObj() == 0){
+                return ResultData.ok(sceneService.getScenePanoramicImageFiles(sceneVO.getSceneCode()));
+            }
+        }
+        return ResultData.ok(scenePlusService.getScenePanoramicImageFiles(sceneVO.getSceneCode()));
+    }
+}
+

+ 83 - 0
src/main/java/com/fdkankan/openApi/entity/www/Camera.java

@@ -0,0 +1,83 @@
+package com.fdkankan.openApi.entity.www;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 相机主表
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-04
+ */
+@Getter
+@Setter
+@TableName("t_camera")
+public class Camera implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 相机的Mac地址
+     */
+    @TableField("child_name")
+    private String childName;
+
+    /**
+     * 激活时间
+     */
+    @TableField("activated_time")
+    private String activatedTime;
+
+    /**
+     * 相机密码
+     */
+    @TableField("child_password")
+    private String childPassword;
+
+    /**
+     * sn码
+     */
+    @TableField("sn_code")
+    private String snCode;
+
+    /**
+     * wifi名称
+     */
+    @TableField("wifi_name")
+    private String wifiName;
+
+    /**
+     * wifi密码
+     */
+    @TableField("wifi_password")
+    private String wifiPassword;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private String createTime;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private String updateTime;
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+
+}

+ 9 - 0
src/main/java/com/fdkankan/openApi/mapper/www/ICameraMapper.java

@@ -0,0 +1,9 @@
+package com.fdkankan.openApi.mapper.www;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.openApi.entity.www.Camera;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ICameraMapper extends BaseMapper<Camera> {
+}

+ 6 - 0
src/main/java/com/fdkankan/openApi/service/laser/SceneService.java

@@ -13,4 +13,10 @@ import java.util.Map;
  */
 public interface SceneService extends IService<SceneEntity> {
     SceneEntity findBySceneCode(String sceneCode);
+
+    Object getPointInfo(String sceneCode);
+
+    List<String> getSceneObjFilePaths(String sceneCode);
+
+    List<String> getScenePanoramicImageFiles(String sceneCode);
 }

+ 18 - 0
src/main/java/com/fdkankan/openApi/service/laser/impl/SceneServiceImpl.java

@@ -49,5 +49,23 @@ public class SceneServiceImpl extends ServiceImpl<SceneMapper, SceneEntity> impl
         wrapper.eq(SceneEntity::getSceneCode,sceneCode);
         return getOne((wrapper));
     }
+
+    @Override
+    public Object getPointInfo(String sceneCode) {
+        // TODO 根据场景码获取点位信息
+        return null;
+    }
+
+    @Override
+    public List<String> getSceneObjFilePaths(String sceneCode) {
+        // TODO 根据场景码获取obj文件路径
+        return null;
+    }
+
+    @Override
+    public List<String> getScenePanoramicImageFiles(String sceneCode) {
+        // TODO 根据场景码获取全景图文件路径
+        return null;
+    }
 }
 

+ 8 - 0
src/main/java/com/fdkankan/openApi/service/www/ICameraService.java

@@ -0,0 +1,8 @@
+package com.fdkankan.openApi.service.www;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.openApi.entity.www.Camera;
+
+public interface ICameraService extends IService<Camera> {
+
+}

+ 12 - 0
src/main/java/com/fdkankan/openApi/service/www/IScenePlusService.java

@@ -1,10 +1,15 @@
 package com.fdkankan.openApi.service.www;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.openApi.common.PageInfo;
 import com.fdkankan.openApi.entity.www.ScenePlus;
 import com.fdkankan.openApi.vo.www.CreateFicTitiousSceneParamVO;
+import com.fdkankan.openApi.vo.www.SceneVO;
 import com.fdkankan.web.response.ResultData;
 
+import java.util.List;
+
 /**
  * <p>
  * 场景主表 服务类
@@ -19,4 +24,11 @@ public interface IScenePlusService extends IService<ScenePlus> {
 
     ResultData createVirtualScene(CreateFicTitiousSceneParamVO param) throws Exception;
 
+    PageInfo<SceneVO> getScenesByUserId(Integer userName, Integer pageNum, Integer pageSize);
+
+    Object getPointInfo(String sceneCode);
+
+    List<String> getSceneObjFilePaths(String sceneCode);
+
+    List<String> getScenePanoramicImageFiles(String sceneCode);
 }

+ 14 - 0
src/main/java/com/fdkankan/openApi/service/www/impl/CameraServiceImpl.java

@@ -0,0 +1,14 @@
+package com.fdkankan.openApi.service.www.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.openApi.entity.www.Camera;
+import com.fdkankan.openApi.mapper.www.ICameraMapper;
+import com.fdkankan.openApi.service.www.ICameraService;
+import org.springframework.stereotype.Service;
+
+@DS("www")
+@Service
+public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implements ICameraService {
+
+}

+ 57 - 5
src/main/java/com/fdkankan/openApi/service/www/impl/ScenePlusServiceImpl.java

@@ -7,22 +7,28 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.util.DateUtil;
 import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.fyun.config.FYunFileConfig;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.model.constants.ConstantFilePath;
 import com.fdkankan.model.constants.UploadFilePath;
 import com.fdkankan.model.utils.ComputerUtil;
 import com.fdkankan.model.utils.CreateObjUtil;
 import com.fdkankan.openApi.bean.www.SceneJsonBean;
+import com.fdkankan.openApi.common.PageInfo;
 import com.fdkankan.openApi.entity.www.*;
 import com.fdkankan.openApi.mapper.www.IScenePlusMapper;
 import com.fdkankan.openApi.service.www.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.openApi.vo.www.CreateFicTitiousSceneParamVO;
 import com.fdkankan.openApi.vo.www.SceneEditControlsVO;
+import com.fdkankan.openApi.vo.www.SceneVO;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.web.response.ResultData;
@@ -31,9 +37,8 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -65,6 +70,12 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     @Autowired
     private RedisUtil redisUtil;
 
+    @Autowired
+    private ICameraService cameraService;
+
+    @Autowired
+    private FYunFileConfig fYunFileConfig;
+
     @Override
     public ScenePlus getByNum(String num) {
         return this.getOne(new LambdaQueryWrapper<ScenePlus>().eq(ScenePlus::getNum, num));
@@ -278,7 +289,48 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         return scenePlusExt.getWebSite();
     }
 
-    public static void main(String[] args) {
-        FileUtil.del("D:\\test4\\");
+    @Override
+    public PageInfo<SceneVO> getScenesByUserId(Integer userId,Integer pageNum,Integer pageSize) {
+        LambdaQueryWrapper<ScenePlus> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ScenePlus::getUserId,userId);
+        Map<Long, String> cameraMap = cameraService.list().stream().collect(Collectors.toMap(Camera::getId, Camera::getSnCode));
+        Page<ScenePlus> scenePage = this.page(new Page<>(pageNum, pageSize), queryWrapper);
+        List<SceneVO> sceneVos = scenePage.getRecords().stream().map(scenePlus -> {
+            SceneVO vo = new SceneVO();
+            vo.setSceneCode(scenePlus.getNum());
+            vo.setSceneName(scenePlus.getTitle());
+            vo.setCreateTime(DateUtil.date2String(scenePlus.getCreateTime(), null));
+            ScenePlusExt plusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
+            vo.setShootCount(plusExt.getShootCount());
+            vo.setSnCode(cameraMap.get(scenePlus.getCameraId()));
+            return vo;
+        }).collect(Collectors.toList());
+        return PageInfo.PageInfo(scenePage.getCurrent(),scenePage.getSize(),scenePage.getTotal(),sceneVos);
+    }
+
+    @Override
+    public Object getPointInfo(String sceneCode) {
+        // 获取vision.txt 文件内容返回
+        String content = fYunFileService.getFileContent(String.format(UploadFilePath.IMG_VIEW_PATH, sceneCode));
+        JSONObject jsonObject = JSONObject.parseObject(content);
+        return jsonObject.get("sweepLocations");
+    }
+
+    @Override
+    public List<String> getSceneObjFilePaths(String sceneCode) {
+        List<String> objFiles = fYunFileService.listRemoteFiles(String.format(UploadFilePath.DATA_VIEW_PATH, sceneCode).concat("mesh"))
+                .stream().map(file -> fYunFileConfig.getHost() + file).collect(Collectors.toList());
+        return objFiles;
+    }
+
+    @Override
+    public List<String> getScenePanoramicImageFiles(String sceneCode) {
+        // 根据vision.txt 获取全景图文件
+        String content = fYunFileService.getFileContent(String.format(UploadFilePath.IMG_VIEW_PATH, sceneCode));
+        JSONObject jsonObject = JSONObject.parseObject(content);
+        return jsonObject.getJSONArray("sweepLocations").stream()
+                .map(json -> String.format(fYunFileConfig.getHost()
+                        + UploadFilePath.scene_result_data_path, sceneCode).concat("caches/images/")
+                        + ((JSONObject) json).getString("uuid").concat(".jpg")).collect(Collectors.toList());
     }
 }

+ 10 - 0
src/main/java/com/fdkankan/openApi/vo/PageVo.java

@@ -0,0 +1,10 @@
+package com.fdkankan.openApi.vo;
+
+import lombok.Data;
+
+@Data
+public class PageVo {
+    private Integer pageNum = 1;
+
+    private Integer pageSize = 10;
+}

+ 39 - 0
src/main/java/com/fdkankan/openApi/vo/www/SceneVO.java

@@ -0,0 +1,39 @@
+package com.fdkankan.openApi.vo.www;
+
+import com.fdkankan.openApi.vo.PageVo;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/1/18
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SceneVO extends PageVo implements Serializable {
+
+    private String userName;
+
+    private String sceneCode;
+
+    private String sceneName;
+
+    private String createTime;
+
+    private Integer shootCount;
+
+    private String snCode;
+
+}