Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/fdkankan/ucenter/service/impl/InnerServiceImpl.java
dengsixing 2 gadi atpakaļ
vecāks
revīzija
0e98ab46b7
28 mainītis faili ar 372 papildinājumiem un 87 dzēšanām
  1. 1 1
      src/main/java/com/fdkankan/ucenter/controller/SceneApplyController.java
  2. 18 0
      src/main/java/com/fdkankan/ucenter/controller/inner/InnerController.java
  3. 6 0
      src/main/java/com/fdkankan/ucenter/entity/SceneEditInfoExt.java
  4. 6 0
      src/main/java/com/fdkankan/ucenter/entity/ScenePlusExt.java
  5. 81 0
      src/main/java/com/fdkankan/ucenter/entity/Surveillance.java
  6. 1 1
      src/main/java/com/fdkankan/ucenter/mapper/IExpansionOrderMapper.java
  7. 18 0
      src/main/java/com/fdkankan/ucenter/mapper/ISurveillanceMapper.java
  8. 1 1
      src/main/java/com/fdkankan/ucenter/service/IExpansionOrderService.java
  9. 1 0
      src/main/java/com/fdkankan/ucenter/service/IInnerService.java
  10. 16 0
      src/main/java/com/fdkankan/ucenter/service/ISurveillanceService.java
  11. 17 8
      src/main/java/com/fdkankan/ucenter/service/impl/AppService.java
  12. 1 1
      src/main/java/com/fdkankan/ucenter/service/impl/AppUserService.java
  13. 5 1
      src/main/java/com/fdkankan/ucenter/service/impl/CameraServiceImpl.java
  14. 2 2
      src/main/java/com/fdkankan/ucenter/service/impl/ExpansionOrderServiceImpl.java
  15. 15 0
      src/main/java/com/fdkankan/ucenter/service/impl/InnerServiceImpl.java
  16. 16 18
      src/main/java/com/fdkankan/ucenter/service/impl/ScenePlusServiceImpl.java
  17. 98 11
      src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java
  18. 20 0
      src/main/java/com/fdkankan/ucenter/service/impl/SurveillanceServiceImpl.java
  19. 2 4
      src/main/java/com/fdkankan/ucenter/vo/request/AppSceneParam.java
  20. 2 0
      src/main/java/com/fdkankan/ucenter/vo/request/SceneParam.java
  21. 2 2
      src/main/java/com/fdkankan/ucenter/vo/response/CameraAppVo.java
  22. 3 3
      src/main/java/com/fdkankan/ucenter/vo/response/CameraSpaceVo.java
  23. 1 1
      src/main/java/com/fdkankan/ucenter/vo/response/CameraVo.java
  24. 1 1
      src/main/java/com/fdkankan/ucenter/vo/response/GoodsSkuVo.java
  25. 1 1
      src/main/java/com/fdkankan/ucenter/vo/response/GoodsVo.java
  26. 26 26
      src/main/java/com/fdkankan/ucenter/vo/response/SceneInfoVo.java
  27. 3 3
      src/main/resources/mapper/ucenter/ExpansionOrderMapper.xml
  28. 8 2
      src/main/resources/mapper/ucenter/SceneProMapper.xml

+ 1 - 1
src/main/java/com/fdkankan/ucenter/controller/SceneApplyController.java

@@ -36,7 +36,7 @@ public class SceneApplyController {
     public ResultData save(@RequestBody SceneApply sceneApplyEntity){
         if(StringUtils.isEmpty(sceneApplyEntity.getName()) || StringUtils.isEmpty(sceneApplyEntity.getPhone())
          || StringUtils.isEmpty(sceneApplyEntity.getCompany()) || StringUtils.isEmpty(sceneApplyEntity.getJob())
-        || StringUtils.isEmpty(sceneApplyEntity.getCountry()) || StringUtils.isEmpty(sceneApplyEntity.getRemark())){
+        || StringUtils.isEmpty(sceneApplyEntity.getCountry())){
             throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
         }
         sceneApplyService.save(sceneApplyEntity);

+ 18 - 0
src/main/java/com/fdkankan/ucenter/controller/inner/InnerController.java

@@ -3,11 +3,15 @@ package com.fdkankan.ucenter.controller.inner;
 import com.fdkankan.ucenter.common.BaseController;
 import com.fdkankan.ucenter.common.Result;
 import com.fdkankan.ucenter.service.IInnerService;
+import org.apache.commons.lang3.StringUtils;
 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.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.HashMap;
+
 /**
  * <p>
  * 内部接口控制器
@@ -38,5 +42,19 @@ public class InnerController extends BaseController {
     public Result querySceneDataSource(String num){
         return innerService.querySceneDataSource(num);
     }
+    /**
+     * 根据场景码获取场景码版本
+     */
+    @GetMapping("/_getSceneNumVersion")
+    public Result getSceneNumVersion(@RequestParam(required = false) String num) throws Exception{
+        String version = innerService.getSceneNumVersion(num);
+        if(StringUtils.isBlank(version)){
+            return Result.failure("场景不存在");
+        }
+        HashMap<String,String> map = new HashMap<>();
+        map.put("num",num);
+        map.put("version",version);
+        return Result.success(map);
+    }
 
 }

+ 6 - 0
src/main/java/com/fdkankan/ucenter/entity/SceneEditInfoExt.java

@@ -83,6 +83,12 @@ public class SceneEditInfoExt implements Serializable {
     private Date updateTime;
 
     /**
+     * 是否有监控摄像头(0-否,1-是)
+     */
+    @TableField("surveillances")
+    private Integer surveillances;
+
+    /**
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")

+ 6 - 0
src/main/java/com/fdkankan/ucenter/entity/ScenePlusExt.java

@@ -154,4 +154,10 @@ public class ScenePlusExt implements Serializable {
     @TableField("rec_status")
     @TableLogic(value = "A",delval = "I")
     private String recStatus;
+
+    /**
+     * 是否生成过OBJ
+     */
+    @TableField("is_obj")
+    private Integer isObj;
 }

+ 81 - 0
src/main/java/com/fdkankan/ucenter/entity/Surveillance.java

@@ -0,0 +1,81 @@
+package com.fdkankan.ucenter.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 监控推拉流信息
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-16
+ */
+@Getter
+@Setter
+@TableName("t_surveillance")
+public class Surveillance implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * 监控名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 监控唯一标识
+     */
+    @TableField("sid")
+    private String sid;
+
+    /**
+     * panoId
+     */
+    @TableField("pano_id")
+    private String panoId;
+
+    /**
+     * 摄像头设置信息
+     */
+    @TableField("data")
+    private String data;
+
+    /**
+     * 播放地址
+     */
+    @TableField("play_url")
+    private String playUrl;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
+    private String recStatus;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/ucenter/mapper/IExpansionOrderMapper.java

@@ -21,5 +21,5 @@ public interface IExpansionOrderMapper extends BaseMapper<ExpansionOrder> {
 
     Page<ExpansionOrderVo> pageList(Page<ExpansionOrderVo> page, VirtualOrderParam param);
 
-    Long getCount(@Param("userId") Long userId, @Param("cameraType") Integer cameraType);
+    Long getCount(@Param("userId") Long userId);
 }

+ 18 - 0
src/main/java/com/fdkankan/ucenter/mapper/ISurveillanceMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.ucenter.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.ucenter.entity.Surveillance;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 监控推拉流信息 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-16
+ */
+@Mapper
+public interface ISurveillanceMapper extends BaseMapper<Surveillance> {
+
+}

+ 1 - 1
src/main/java/com/fdkankan/ucenter/service/IExpansionOrderService.java

@@ -19,7 +19,7 @@ public interface IExpansionOrderService extends IService<ExpansionOrder> {
 
     PageInfo pageList(VirtualOrderParam param);
 
-    Long getCount(Long id, Integer cameraType);
+    Long getCount(Long id);
 
     ExpansionOrder getByOrderSn(String orderSn);
 

+ 1 - 0
src/main/java/com/fdkankan/ucenter/service/IInnerService.java

@@ -16,4 +16,5 @@ public interface IInnerService {
 
     Result querySceneDataSource(String num);
 
+    String getSceneNumVersion(String num);
 }

+ 16 - 0
src/main/java/com/fdkankan/ucenter/service/ISurveillanceService.java

@@ -0,0 +1,16 @@
+package com.fdkankan.ucenter.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.ucenter.entity.Surveillance;
+
+/**
+ * <p>
+ * 监控推拉流信息 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-16
+ */
+public interface ISurveillanceService extends IService<Surveillance> {
+
+}

+ 17 - 8
src/main/java/com/fdkankan/ucenter/service/impl/AppService.java

@@ -4,10 +4,10 @@ import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.constant.AppConstant;
 import com.fdkankan.common.constant.CameraConstant;
 import com.fdkankan.common.exception.BusinessException;
-import com.fdkankan.common.util.Base64Converter;
 import com.fdkankan.common.util.JwtUtil;
 import com.fdkankan.common.util.RandomUtil;
 import com.fdkankan.common.util.SecurityUtil;
+import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.ucenter.common.RedisKeyUtil;
 import com.fdkankan.ucenter.constant.LoginConstant;
@@ -16,7 +16,6 @@ import com.fdkankan.ucenter.entity.CameraDetail;
 import com.fdkankan.ucenter.entity.User;
 import com.fdkankan.ucenter.service.*;
 import com.fdkankan.ucenter.vo.request.AppLoginParam;
-import com.fdkankan.ucenter.vo.request.AppSceneParam;
 import com.fdkankan.ucenter.vo.request.LoginParam;
 import com.fdkankan.ucenter.vo.response.LoginVo;
 import com.fdkankan.ucenter.vo.response.UserVo;
@@ -61,7 +60,7 @@ public class AppService {
         if(!user.getPassword().equals(passwordCode)){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3014, LoginConstant.FAILURE_MSG_3014);
         }
-        String token = this.redisLogin(user.getUserName(), 21800L);
+        String token = this.redisLogin(user.getUserName(), JSONObject.toJSONString(user),21800L);
         LoginVo loginVo = commonLogin(user, param, token);
         loginVo.getUser().setPassword(param.getPassword());
         return loginVo;
@@ -91,10 +90,14 @@ public class AppService {
         return vo;
     }
 
-    public String redisLogin(String userName,Long time){
+    public String redisLogin(String userName,String value,Long time){
         String token = JwtUtil.createJWT(-1,userName,"app");
         String redisKey = RedisKeyUtil.PREFIX_CACHE_CAMERA+ userName;
         redisUtil.set(redisKey, token,time);
+
+        //设置官网token
+        String redisKey2 =  String.format(RedisKey.TOKEN_V3 , token );
+        redisUtil.set(redisKey2, value,time);
         return token;
     }
 
@@ -107,7 +110,7 @@ public class AppService {
         redisUtil.set(param.getUuid(),param.getAppUserName(),60 * 5);
     }
 
-    private void commonCheckCamera(AppLoginParam param){
+    private Long commonCheckCamera(AppLoginParam param){
         Camera camera = cameraService.getBySnCodeAndPassword(param.getAppUserName(),param.getAppPassword());
         if(camera == null){
             throw new BusinessException(CameraConstant.FAILURE_6003);
@@ -116,14 +119,20 @@ public class AppService {
         if (detail == null ){
             throw new BusinessException(AppConstant.FAILURE_CODE_4012, AppConstant.FAILURE_MSG_4012);
         }
+        return detail.getUserId();
     }
 
     public JSONObject login2(AppLoginParam param) {
         if(StringUtils.isEmpty(param.getAppUserName()) || StringUtils.isEmpty(param.getAppPassword())){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
         }
-        commonCheckCamera(param);
-        String token = redisLogin(param.getAppUserName(), 604800L);
+        Long userId = commonCheckCamera(param);
+        String redisValue = "";
+        if(userId!= null){
+            User user = userService.getById(userId);
+            redisValue = JSONObject.toJSONString(user);
+        }
+        String token = redisLogin(param.getAppUserName(),redisValue, 604800L);
         JSONObject obj = new JSONObject();
         obj.put("token", token);
         return obj;
@@ -139,7 +148,7 @@ public class AppService {
         if(user == null){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3015, LoginConstant.FAILURE_MSG_3015);
         }
-        String token = redisLogin(param.getPhoneNum(), 21600L);
+        String token = redisLogin(param.getPhoneNum(), JSONObject.toJSONString(user),21600L);
         return commonLogin(user,param,token);
     }
 

+ 1 - 1
src/main/java/com/fdkankan/ucenter/service/impl/AppUserService.java

@@ -41,7 +41,7 @@ public class AppUserService {
         Long cameraCount = cameraDetailService.getCountByUserId(user.getId(),cameraType);
         Long proCount = sceneProService.getCountByUserId(user.getId(), cameraType);
         Long plusCount = scenePlusService.getCountByUserId(user.getId(), cameraType);
-        Long expansionCount = expansionOrderService.getCount(user.getId(),cameraType);
+        Long expansionCount = expansionOrderService.getCount(user.getId());
         Long incrementNum = userIncrementService.getCountByUserId(user.getId(),0);
         Long incrementBindNum = userIncrementService.getCountByUserId(user.getId(),1);
 

+ 5 - 1
src/main/java/com/fdkankan/ucenter/service/impl/CameraServiceImpl.java

@@ -9,6 +9,7 @@ import com.fdkankan.ucenter.common.PageInfo;
 import com.fdkankan.common.util.DateUtil;
 import com.fdkankan.common.util.FileSizeUtil;
 import com.fdkankan.ucenter.constant.CameraConstant;
+import com.fdkankan.ucenter.constant.LoginConstant;
 import com.fdkankan.ucenter.constant.OrderConstant;
 import com.fdkankan.ucenter.entity.*;
 import com.fdkankan.ucenter.httpClient.service.LaserService;
@@ -262,6 +263,10 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
 
     @Override
     public void saveCooperationUser(String ids, Long id,String resourceIds, String username) {
+        User user = userService.getByUserName(username);
+        if(user == null){
+            throw new BusinessException(LoginConstant.FAILURE_CODE_3021, LoginConstant.FAILURE_MSG_3021);
+        }
         if (id != null) {
             ids = id.toString();
         }
@@ -272,7 +277,6 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         }
         HashMap<Long, CameraDetail> detailMap = cameraDetailService.getByCameraIds(cameraIds);
         HashMap<Long, Camera> cameraMap = this.getByIds(cameraIds);
-        User user = userService.getByUserName(username);
         cameraDetailService.updateCooperationByIds(cameraIds, user.getId());
         sceneResourceCameraService.deleteByCameraIds(cameraIds);
 

+ 2 - 2
src/main/java/com/fdkankan/ucenter/service/impl/ExpansionOrderServiceImpl.java

@@ -44,8 +44,8 @@ public class ExpansionOrderServiceImpl extends ServiceImpl<IExpansionOrderMapper
     }
 
     @Override
-    public Long getCount(Long userId, Integer cameraType) {
-        return this.getBaseMapper().getCount(userId,cameraType);
+    public Long getCount(Long userId) {
+        return this.getBaseMapper().getCount(userId);
     }
 
     @Override

+ 15 - 0
src/main/java/com/fdkankan/ucenter/service/impl/InnerServiceImpl.java

@@ -75,6 +75,21 @@ public class InnerServiceImpl implements IInnerService {
     }
 
     @Override
+    public String getSceneNumVersion(String num) {
+        String version = null;
+        ScenePro scenepro = sceneProService.getByNum(num);
+        if(scenepro == null){
+            ScenePlus plus = scenePlusService.getByNum(num);
+            if(plus != null){
+                version = "V4";
+            }
+        }else {
+            version = "V3";
+        }
+        return version;
+    }
+
+    @Override
     public Result querySceneDataSource(String num) {
 
         String dataSource = null;

+ 16 - 18
src/main/java/com/fdkankan/ucenter/service/impl/ScenePlusServiceImpl.java

@@ -14,26 +14,15 @@ import com.fdkankan.ucenter.common.constants.UploadFilePath;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.ucenter.bean.SceneJsonBean;
-import com.fdkankan.ucenter.entity.CameraDetail;
-import com.fdkankan.ucenter.entity.SceneEditControls;
-import com.fdkankan.ucenter.entity.SceneEditInfo;
-import com.fdkankan.ucenter.entity.SceneEditInfoExt;
-import com.fdkankan.ucenter.entity.ScenePlus;
-import com.fdkankan.ucenter.entity.ScenePlusExt;
+import com.fdkankan.ucenter.entity.*;
 import com.fdkankan.ucenter.mapper.IScenePlusMapper;
-import com.fdkankan.ucenter.service.ICameraDetailService;
-import com.fdkankan.ucenter.service.ISceneCopyLogService;
-import com.fdkankan.ucenter.service.ISceneEditControlsService;
-import com.fdkankan.ucenter.service.ISceneEditInfoExtService;
-import com.fdkankan.ucenter.service.ISceneEditInfoService;
-import com.fdkankan.ucenter.service.IScenePlusExtService;
-import com.fdkankan.ucenter.service.IScenePlusService;
-import com.fdkankan.ucenter.service.ISceneProService;
+import com.fdkankan.ucenter.service.*;
 
 import java.io.File;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Objects;
 import java.util.concurrent.CompletableFuture;
 
 import com.fdkankan.ucenter.vo.SceneEditControlsVO;
@@ -67,7 +56,7 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     @Autowired
     private ICameraDetailService cameraDetailService;
     @Autowired
-    private ISceneCopyLogService sceneCopyLogService;
+    private ISurveillanceService surveillanceService;
     @Autowired
     private ISceneProService sceneProService;
     @Resource
@@ -162,6 +151,7 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         // 拷贝数据
         scenePlus.setNum(newNum);
         scenePlus.setId(null);
+        scenePlus.setSceneStatus(0);
         this.save(scenePlus);
 
         cameraDetail.setUsedSpace(cameraDetail.getUsedSpace() + plusExt.getSpace());
@@ -232,6 +222,15 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
                 sceneEditControls.setEditInfoId(sceneEditInfo.getId());
                 sceneEditControlsService.save(sceneEditControls);
 
+                List<Surveillance> list = surveillanceService.list(new LambdaQueryWrapper<Surveillance>().eq(Surveillance::getNum, num));
+                if (!Objects.isNull(list)) {
+                    list.stream().forEach(item -> {
+                        item.setNum(newNum);
+                        item.setId(null);
+                        surveillanceService.save(item);
+                    });
+                }
+
                 // 生成scene.json
                 SceneJsonBean sceneJson = new SceneJsonBean();
                 BeanUtil.copyProperties(sceneEditInfoExt, sceneJson);
@@ -260,11 +259,10 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
                 redisUtil.del(String.format(RedisKey.SCENE_JSON, num));
 
                 // 生成二维码
-                String sceneUrl = mainUrl + "/" + sceneProNewUrl;
                 String outPathZh = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/" + newNum + ".png";
                 String outPathEn = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/" + newNum + "_en.png";
-                MatrixToImageWriterUtil.createQRCode(sceneUrl + newNum, outPathZh, false,null);
-                MatrixToImageWriterUtil.createQRCode(sceneUrl + newNum + "&lang=en", outPathEn, false, null);
+                MatrixToImageWriterUtil.createQRCode(plusExt.getWebSite(), outPathZh, false,null);
+                MatrixToImageWriterUtil.createQRCode(plusExt.getWebSite() + "&lang=en", outPathEn, false, null);
                 fYunFileServiceInterface.uploadFile(outPathZh, String.format(UploadFilePath.DOWNLOADS_QRCODE, newNum) + newNum + ".png");
                 fYunFileServiceInterface.uploadFile(outPathEn, String.format(UploadFilePath.DOWNLOADS_QRCODE, newNum) + newNum + "_en.png");
                 scenePlus.setSceneStatus(-2);

+ 98 - 11
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -3,7 +3,6 @@ package com.fdkankan.ucenter.service.impl;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
-import com.aliyun.oss.OSS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -20,10 +19,7 @@ import com.fdkankan.ucenter.common.PageInfo;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.image.MatrixToImageWriterUtil;
 import com.fdkankan.ucenter.common.constants.ConstantFilePath;
-import com.fdkankan.ucenter.common.constants.NacosProperty;
-import com.fdkankan.ucenter.common.constants.UploadFilePath;
 import com.fdkankan.redis.util.RedisUtil;
-import com.fdkankan.ucenter.common.RedisKeyUtil;
 import com.fdkankan.ucenter.common.utils.ShellUtil;
 import com.fdkankan.ucenter.constant.CameraConstant;
 import com.fdkankan.ucenter.constant.LoginConstant;
@@ -106,7 +102,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     private ISceneUpgradeMapper sceneUpgradeMapper;
 
     @Autowired
-    private ICameraService cameraService;
+    private ISurveillanceService surveillanceService;
 
     @Value("${main.url}")
     private String mainUrl;
@@ -398,6 +394,14 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                     Integer count = sceneService.getCountByUserId(user.getId());
                     vo.setSceneNum(Long.valueOf(count));
                 }
+                if(vo.getIsFolder() == 0  && vo.getStatus() !=null){
+                    if(vo.getStatus() == 500){      //500状态为数据库中手动修改值,当场景本身异常,算法,算不了
+                        vo.setStatus(-1);
+                    }
+                    if(vo.getStatus() == -1){       //计算失败,钉钉通知之后,判定是否重算,还是修改为 500
+                        vo.setStatus(0);
+                    }
+                }
             }
         }
         //设置协作者信息
@@ -420,13 +424,15 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             folderList.addAll(sceneList);
         }
         sceneVoPage.setRecords(folderList);
-        if(param.getFolderId() == null){
+        if(param.getFolderId() == null && param.getIsObj() == null ){
             List<String> sourceList = param.getSourceList();
             totalSceneNum = this.getCountByUserId(user.getId(),sourceList);
             totalSceneNum += scenePlusService.getCountByUserId(user.getId(),sourceList);
             totalSceneNum += sceneService.getCountByUserId(user.getId());
-        }else {
+        }else if(param.getFolderId() != null ){
             totalSceneNum = folderSceneService.getCountByFolderAndSon(param.getFolderId());
+        }else if(param.getIsObj() != null && param.getIsObj() ==1){
+            totalSceneNum = this.getCountByLaserAndIsObj(user.getId());
         }
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("pageInfo",PageInfo.PageInfo(sceneVoPage));
@@ -434,11 +440,38 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         return jsonObject;
     }
 
+    private Long getCountByLaserAndIsObj(Long userId) {
+        Long proCount = 0L;
+        Long plusCount = 0L;
+        LambdaQueryWrapper<ScenePro> proWr = new LambdaQueryWrapper<>();
+        proWr.eq(ScenePro::getUserId,userId);
+        proWr.eq(ScenePro::getSceneSource,4);
+        proWr.eq(ScenePro::getIsObj,1);
+        proWr.eq(ScenePro::getIsUpgrade,0);
+        proCount = this.count(proWr);
+
+        LambdaQueryWrapper<ScenePlus> plusWr = new LambdaQueryWrapper<>();
+        plusWr.eq(ScenePlus::getUserId,userId);
+        plusWr.eq(ScenePlus::getSceneSource,4);
+        List<ScenePlus> list = scenePlusService.list(plusWr);
+        if(list.size() >0){
+            List<Long> plusIds = list.stream().map(ScenePlus::getId).collect(Collectors.toList());
+
+            LambdaQueryWrapper<ScenePlusExt> extWr = new LambdaQueryWrapper<>();
+            extWr.in(ScenePlusExt::getPlusId,plusIds);
+            extWr.eq(ScenePlusExt::getIsObj,1);
+            plusCount = scenePlusExtService.count(extWr);
+        }
+
+        return proCount +plusCount;
+    }
+
     public List<String> getSceneSource(String sceneSource){
         List<String> sceneSourceList ;
         switch (sceneSource){
             case "1" : sceneSourceList = Arrays.asList("1","2","12","13","14"); break;  //四维看看
             case "3" : sceneSourceList = Collections.singletonList("3"); break;//四维看见
+            case "4" : sceneSourceList = Collections.singletonList("4"); break;//深时场景
             default:
                 if(sceneSource.contains(",")){
                     sceneSource = sceneSource + ",12,13,14";
@@ -847,12 +880,14 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             Integer count = 0;
             ScenePro pro = this.getByNum(num);
             if(pro !=null){
-                count = pro.getViewCount();
+                count = pro.getViewCount() == null ? 0 : pro.getViewCount();
             }else {
                 ScenePlus plus = scenePlusService.getByNum(num);
                 if(plus !=null){
                     ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(plus.getId());
-                    count = scenePlusExt.getViewCount();
+                    if(scenePlusExt != null){
+                        count = scenePlusExt.getViewCount() == null ? 0 :scenePlusExt.getViewCount();
+                    }
                 }
             }
             redisUtil.hset(redisKey,num,String.valueOf(count));
@@ -908,10 +943,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         ScenePro sceneProEntity = this.getOne(wrapper);
 
         if(ObjectUtils.isEmpty(sceneProEntity)){
-            throw new BusinessException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
+            generatePlusObjFile(num);
         }
 
-        if(sceneProEntity.getSceneSource().intValue() != 4){
+        if(sceneProEntity.getSceneSource() != 4){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3003, "只能操作激光场景");
         }
 
@@ -955,4 +990,56 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         mqMsg.setPath(sceneProEntity.getDataSource());
         mqProducer.sendByWorkQueue(queueObjModelingPre,mqMsg);
     }
+
+    public void generatePlusObjFile(String num) {
+        ScenePlus scenePlus = scenePlusService.getByNum(num);
+
+        if(ObjectUtils.isEmpty(scenePlus)){
+            throw new BusinessException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
+        }
+
+        if(scenePlus.getSceneSource() != 4){
+            throw new BusinessException(LoginConstant.FAILURE_CODE_3003, "只能操作激光场景");
+        }
+
+        ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
+
+        // 拷贝文件
+        String path = scenePlusExt.getDataSource();
+        if (!new File(path + "/caches/reconstruction/final.bin").exists()
+                || !new File(path + "/caches/reconstruction/chunk.json").exists()
+                || !new File(path + "/caches/images").exists()
+                || !new File(path + "/caches/depthmap").exists()
+                || !new File(path + "/caches/depthmap_csc").exists()
+                || !new File(path + "/caches/panorama.json").exists()
+                || !new File(path + "/results/laserData/laser.ply").exists()) {
+            log.error("生成obj缺少必要文件,生成失败!");
+            throw new BusinessException(SceneConstant.FAILURE_CODE_5038, SceneConstant.FAILURE_MSG_5038);
+        }
+
+        // 获取最新的场景名称
+        JSONObject sceneInfo = fdkkLaserService.getSceneByNum(num);
+        LambdaUpdateWrapper<ScenePlus> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper
+                .set(ScenePlus::getSceneStatus, 0)
+                .set(ScenePlus::getTitle, sceneInfo.getString("title"))
+                .eq(ScenePlus::getNum, num);
+        scenePlusService.update(updateWrapper);
+
+        LambdaUpdateWrapper<ScenePlusExt> plusExtUpdateWrapper = new LambdaUpdateWrapper<>();
+        plusExtUpdateWrapper
+                .set(ScenePlusExt::getIsObj, 1)
+                .eq(ScenePlusExt::getPlusId, scenePlus.getId());
+        scenePlusExtService.update(plusExtUpdateWrapper);
+
+        log.info("开始发送激光场景生成obj mq消息");
+
+        // 发送MQ
+        BuildSceneCallMessage mqMsg = new BuildSceneCallMessage();
+        mqMsg.setSceneNum(num);
+        mqMsg.setAlgorithm(scenePlusExt.getAlgorithm());
+        mqMsg.setBuildType(scenePlusExt.getBuildType());
+        mqMsg.setPath(scenePlusExt.getDataSource());
+        mqProducer.sendByWorkQueue(queueObjModelingPre,mqMsg);
+    }
 }

+ 20 - 0
src/main/java/com/fdkankan/ucenter/service/impl/SurveillanceServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fdkankan.ucenter.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.ucenter.entity.Surveillance;
+import com.fdkankan.ucenter.mapper.ISurveillanceMapper;
+import com.fdkankan.ucenter.service.ISurveillanceService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 监控推拉流信息 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-16
+ */
+@Service
+public class SurveillanceServiceImpl extends ServiceImpl<ISurveillanceMapper, Surveillance> implements ISurveillanceService {
+
+}

+ 2 - 4
src/main/java/com/fdkankan/ucenter/vo/request/AppSceneParam.java

@@ -2,6 +2,7 @@ package com.fdkankan.ucenter.vo.request;
 
 import com.fdkankan.ucenter.common.RequestBase;
 import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.List;
 
@@ -25,12 +26,9 @@ public class AppSceneParam extends RequestBase {
     private String orderBy;
 
 
-    private String searchKey;
     private String startTime;
     private String endTime;
     private String sceneNum;
-    public String getSceneName() {
-        return searchKey;
-    }
+
 
 }

+ 2 - 0
src/main/java/com/fdkankan/ucenter/vo/request/SceneParam.java

@@ -25,4 +25,6 @@ public class SceneParam extends RequestBase {
 
     private Integer haveVoid;
     private Integer status;
+
+    private Integer isObj;
 }

+ 2 - 2
src/main/java/com/fdkankan/ucenter/vo/response/CameraAppVo.java

@@ -62,10 +62,10 @@ public class CameraAppVo extends GoodsVo {
      * 相机类型,0表示双目,1表示专业八目,2表示商业八目,3表示企业八目
      */
     /**"相机类型,0表示双目,1表示专业八目,2表示商业八目,3表示企业八目", name = "type*/
-    private int type;
+    private Integer type;
 
     /**"总场景数", name = "sceneCount*/
-    private int sceneCount;
+    private Integer sceneCount;
 
     /**"总容量", name = "totalSpace*/
     private BigInteger totalSpace;

+ 3 - 3
src/main/java/com/fdkankan/ucenter/vo/response/CameraSpaceVo.java

@@ -17,15 +17,15 @@ public class CameraSpaceVo implements Serializable, Comparable<CameraSpaceVo> {
     @JSONField(format = "yyyy-MM-dd HH:mm:ss")
     private Date spaceEndTime;
 
-    private int deadlineDays;
+    private Integer deadlineDays;
 
     private String content;
 
-    private double usedSpace;
+    private Double usedSpace;
 
     private String usedSpaceStr;
 
-    private double totalSpace;
+    private Double totalSpace;
 
     private String totalSpaceStr;
 

+ 1 - 1
src/main/java/com/fdkankan/ucenter/vo/response/CameraVo.java

@@ -43,7 +43,7 @@ public class CameraVo {
     /**"相机容量表id", name = "spaceId*/
     private Long spaceId;
     /**"国际,0国内,1国际", name = "country*/
-    private int country;
+    private Integer country;
 
     /**"用户id", name = "userId*/
     private Long userId;

+ 1 - 1
src/main/java/com/fdkankan/ucenter/vo/response/GoodsSkuVo.java

@@ -14,7 +14,7 @@ public class GoodsSkuVo {
 
     private String description;
 
-    private int stock;
+    private Integer stock;
 
     private BigDecimal price;
 

+ 1 - 1
src/main/java/com/fdkankan/ucenter/vo/response/GoodsVo.java

@@ -64,7 +64,7 @@ public class GoodsVo implements Serializable {
     /**
      * 排序
      */
-    private int sort;
+    private Integer sort;
     /**
      * 规格描述
      */

+ 26 - 26
src/main/java/com/fdkankan/ucenter/vo/response/SceneInfoVo.java

@@ -24,13 +24,13 @@ public class SceneInfoVo {
     private String sceneDec;
 
     /**"0表示其他,1表示文博,2表示地产,3表示电商,4表示餐饮,5表示家居", name = "sceneType*/
-    private int sceneType;
+    private Integer sceneType;
 
     /**"场景封面图是否默认", name = "thumbImg*/
-    private int thumbImg;
+    private Integer thumbImg;
 
     /**"版本", name = "version*/
-    private int version;
+    private Integer version;
 
     /**"0表示默认,user表示自己上传", name = "markerLogo*/
     private String markerLogo;
@@ -48,22 +48,22 @@ public class SceneInfoVo {
     private String createTime;
 
     /**"拍摄数量", name = "shootCount*/
-    private int shootCount;
+    private Integer shootCount;
 
     /**"0表示未建好,1表示建好,-1表示出错,-2表示不要在官网上显示", name = "status*/
-    private int status;
+    private Integer status;
 
     /**"模型贴图的风格", name = "sceneIndex*/
-    private int sceneIndex;
+    private Integer sceneIndex;
 
     /**"背景音乐名称", name = "hasBGM*/
     private String hasBGM;
 
     /**"方案:1是双目,2是转台,3是六目", name = "cameraType*/
-    private int cameraType;
+    private Integer cameraType;
 
     /**"是否公开,0公开,1加密", name = "isPublic*/
-    private int isPublic;
+    private Integer isPublic;
 
     /**"要gps定位", name = "gps*/
     private String gps;
@@ -78,7 +78,7 @@ public class SceneInfoVo {
     private String nickName;
 
     /**"浏览次数", name = "viewCount*/
-    private int viewCount;
+    private Integer viewCount;
 
     /**"场景的链接地址", name = "webSite*/
     private String webSite;
@@ -87,7 +87,7 @@ public class SceneInfoVo {
     private String dataSource;
 
     /**"0表示未付款,1表示付款了,-1表示欠费(八目场景指锁住),-2表示临时空间(八目场景)", name = "payStatus*/
-    private int payStatus;
+    private Integer payStatus;
 
     /**"手机id", name = "phoneId*/
     private String phoneId;
@@ -96,10 +96,10 @@ public class SceneInfoVo {
     private String num;
 
     /**"1表示推荐,0表示正常", name = "recommend*/
-    private int recommend;
+    private Integer recommend;
 
     /**"表示缩略图是否存在", name = "thumbStatus*/
-    private int thumbStatus;
+    private Integer thumbStatus;
 
     /**"要上传的热点的id集合,用逗号隔开", name = "hotsIds*/
     private String hotsIds;
@@ -108,10 +108,10 @@ public class SceneInfoVo {
     private String initialPointId;
 
     /**"风格", name = "style*/
-    private int style;
+    private Integer style;
 
     /**"方案:1是双目,2是转台,3是六目", name = "sceneScheme*/
-    private int sceneScheme;
+    private Integer sceneScheme;
 
     /**"背景音乐名称", name = "bgMusic*/
     private String bgMusic;
@@ -132,13 +132,13 @@ public class SceneInfoVo {
     private String shareLogo;
 
     /**"小地图浏览", name = "mapVisi*/
-    private int mapVisi;
+    private Integer mapVisi;
 
     /**"自动导览", name = "tourVisi*/
-    private int tourVisi;
+    private Integer tourVisi;
 
     /**"vr模式", name = "vrVisi*/
-    private int vrVisi;
+    private Integer vrVisi;
 
 
     /**
@@ -170,12 +170,12 @@ public class SceneInfoVo {
     /**
      * 重新建模的版本
      */
-    private int floorEditVer;
+    private Integer floorEditVer;
 
     /**
      * 正式发布重新建模的版本
      */
-    private int floorPublishVer;
+    private Integer floorPublishVer;
 
     /**
      * 录屏图片
@@ -195,20 +195,20 @@ public class SceneInfoVo {
     /**
      * 展示页面是否显示标尺
      */
-    private int rulerVisi;
+    private Integer rulerVisi;
 
     /**
      * 展示页面cad图在平面图是否显示
      */
-    private int cadImgVisi;
+    private Integer cadImgVisi;
 
-    private int panoVisi;
+    private Integer panoVisi;
 
-    private int m2dVisi;
+    private Integer m2dVisi;
 
-    private int m3dVisi;
+    private Integer m3dVisi;
 
-    private int measureVisi;
+    private Integer measureVisi;
 
     private String videos;
 
@@ -237,7 +237,7 @@ public class SceneInfoVo {
 
     private Integer sceneSource;
 
-    private boolean jumpScene;
+    private Boolean jumpScene;
 
     /**
      * 服务器的服务商

+ 3 - 3
src/main/resources/mapper/ucenter/ExpansionOrderMapper.xml

@@ -21,8 +21,8 @@
     </select>
 
     <select id="getCount" resultType="java.lang.Long">
-        select count(*) from t_expansion_order o left join t_camera_detail d on o.camera_id = d.camera_id
-        where o.rec_status = 'A'
-        and o.user_id = #{userId} and d.goods_id = #{cameraType}
+        select count(*) from t_expansion_order o
+        where o.rec_status = 'A' and o.pay_status = 1
+        and o.user_id = #{userId}
     </select>
 </mapper>

+ 8 - 2
src/main/resources/mapper/ucenter/SceneProMapper.xml

@@ -35,6 +35,9 @@
         <if test="param.sceneName !=null and param.sceneName !=''">
           and  p.scene_name like CONCAT('%',#{param.sceneName},'%')
         </if>
+        <if test="param.isObj !=null ">
+          and  p.is_obj  = #{param.isObj}
+        </if>
         UNION
         SELECT  p.id as id ,null as name ,0 as isFolder,null as type,null as parentId,p.create_time ,num,title as scene_name,description as scene_dec,
         scene_status as status,pay_status,thumb,web_site,1 as is_upgrade,sn_code,view_count,e.build_type
@@ -48,6 +51,9 @@
         <if test="param.sceneName !=null and param.sceneName !=''">
           and  p.title like CONCAT('%',#{param.sceneName},'%')
         </if>
+        <if test="param.isObj !=null ">
+            and  e.is_obj  = #{param.isObj}
+        </if>
         ORDER BY create_time desc
         ) as scene_tb
     </select>
@@ -104,10 +110,10 @@
         <foreach item="sourceId" collection="param.sourceList" open="(" separator="," close=")">
             #{sourceId}
         </foreach>
-        <if test="param.folderId == null">
+        <if test="param.folderId == null and param.hasFolder == 1 ">
             AND p.id not in(SELECT scene_id FROM t_folder_scene where rec_status = 'A')
         </if>
-        <if test="param.folderId != null">
+        <if test="param.folderId != null and param.hasFolder == 1">
             AND p.id in (SELECT scene_id FROM t_folder_scene where rec_status= 'A' and folder_id =#{param.folderId} )
         </if>
         <if test="param.numList !=null and param.numList.size >0">