Bladeren bron

Merge branch 'test'

lyhzzz 2 jaren geleden
bovenliggende
commit
93a2d80bd1
30 gewijzigde bestanden met toevoegingen van 388 en 30 verwijderingen
  1. 3 0
      src/main/java/com/fdkankan/ucenter/UserCenterApplication.java
  2. 24 0
      src/main/java/com/fdkankan/ucenter/common/BaseController.java
  3. 1 0
      src/main/java/com/fdkankan/ucenter/common/constants/NacosProperty.java
  4. 5 0
      src/main/java/com/fdkankan/ucenter/common/constants/UploadFilePath.java
  5. 5 0
      src/main/java/com/fdkankan/ucenter/controller/OrderController.java
  6. 1 8
      src/main/java/com/fdkankan/ucenter/controller/TestController.java
  7. 7 6
      src/main/java/com/fdkankan/ucenter/controller/app/SceneApiController.java
  8. 63 0
      src/main/java/com/fdkankan/ucenter/entity/CameraIncrementLog.java
  9. 6 0
      src/main/java/com/fdkankan/ucenter/entity/DownloadOrder.java
  10. 6 0
      src/main/java/com/fdkankan/ucenter/entity/IncrementOrder.java
  11. 1 1
      src/main/java/com/fdkankan/ucenter/generate/AutoGenerate.java
  12. 50 0
      src/main/java/com/fdkankan/ucenter/httpClient/service/LaserService.java
  13. 18 0
      src/main/java/com/fdkankan/ucenter/mapper/ICameraIncrementLogMapper.java
  14. 23 0
      src/main/java/com/fdkankan/ucenter/service/ICameraIncrementLogService.java
  15. 10 0
      src/main/java/com/fdkankan/ucenter/service/impl/AppCameraService.java
  16. 14 3
      src/main/java/com/fdkankan/ucenter/service/impl/AppSceneService.java
  17. 64 0
      src/main/java/com/fdkankan/ucenter/service/impl/CameraIncrementLogServiceImpl.java
  18. 5 0
      src/main/java/com/fdkankan/ucenter/service/impl/CameraServiceImpl.java
  19. 5 0
      src/main/java/com/fdkankan/ucenter/service/impl/DownloadOrderServiceImpl.java
  20. 1 1
      src/main/java/com/fdkankan/ucenter/service/impl/FusionService.java
  21. 4 0
      src/main/java/com/fdkankan/ucenter/service/impl/IncrementOrderServiceImpl.java
  22. 4 0
      src/main/java/com/fdkankan/ucenter/service/impl/InnerServiceImpl.java
  23. 8 0
      src/main/java/com/fdkankan/ucenter/service/impl/ScenePlusServiceImpl.java
  24. 22 9
      src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java
  25. 9 0
      src/main/java/com/fdkankan/ucenter/service/impl/UserIncrementServiceImpl.java
  26. 20 0
      src/main/java/com/fdkankan/ucenter/util/DateUserUtil.java
  27. 0 2
      src/main/java/com/fdkankan/ucenter/util/FolderTreeUtil.java
  28. 2 0
      src/main/java/com/fdkankan/ucenter/vo/request/DownNumParam.java
  29. 2 0
      src/main/java/com/fdkankan/ucenter/vo/response/LaserSceneInfoVo.java
  30. 5 0
      src/main/resources/mapper/ucenter/CameraIncrementLogMapper.xml

+ 3 - 0
src/main/java/com/fdkankan/ucenter/UserCenterApplication.java

@@ -26,6 +26,8 @@ public class UserCenterApplication implements CommandLineRunner {
     private String uploadType;
     @Value("${main.url}")
     private String mainUrl;
+    @Value("${spring.profiles.active}")
+    private String activeFile;
 
     public static void main(String[] args) {
         SpringApplication.run(UserCenterApplication.class, args);
@@ -35,6 +37,7 @@ public class UserCenterApplication implements CommandLineRunner {
     public void run(String... args) throws Exception {
         NacosProperty.bucket = bucket;
         NacosProperty.uploadType = uploadType;
+        NacosProperty.activeFile = activeFile;
         NacosProperty.setMainUrl(mainUrl);
     }
 }

+ 24 - 0
src/main/java/com/fdkankan/ucenter/common/BaseController.java

@@ -1,6 +1,9 @@
 package com.fdkankan.ucenter.common;
 
 import com.fdkankan.common.util.DateEditor;
+import com.fdkankan.ucenter.common.constants.NacosProperty;
+import com.fdkankan.ucenter.util.DateUserUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.propertyeditors.StringTrimmerEditor;
 import org.springframework.data.domain.PageRequest;
@@ -15,6 +18,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.util.Date;
 
+@Slf4j
 public class BaseController {
 
     @Autowired
@@ -87,4 +91,24 @@ public class BaseController {
         return request.getHeader("sign");
     }
 
+    protected Integer getTimeZone(){
+        Integer minute = 0;
+        String timeZone = request.getHeader("timeZone");
+        try {
+            if(!StringUtils.isEmpty(timeZone)){
+                minute = Integer.parseInt(timeZone);
+            }
+        }catch (Exception e){
+            log.error("getClientTime-error:requestHeaderTimeZone:{}",timeZone,e);
+        }
+        if(!NacosProperty.activeFile.contains("eur")){
+            minute += 480;
+        }
+        return minute;
+    }
+    protected String getClientTime(){
+        return DateUserUtil.AddMinute(new Date(),getTimeZone());
+
+    }
+
 }

+ 1 - 0
src/main/java/com/fdkankan/ucenter/common/constants/NacosProperty.java

@@ -9,6 +9,7 @@ public class NacosProperty {
 
     public static String bucket;
     public static String uploadType;
+    public static String activeFile;
     private static String mainUrl;
 
     public static String getMainUrl() {

+ 5 - 0
src/main/java/com/fdkankan/ucenter/common/constants/UploadFilePath.java

@@ -18,6 +18,11 @@ public class UploadFilePath {
 
     public static final String IMG_VIEW_PATH =  "scene_view_data/%s/images/";
 
+    /**
+     * 场景计算结果数据存放路径
+     */
+    public static final String SCENE_RESULT_DATA_PATH = "scene_result_data/%s/";
+
 
 
 }

+ 5 - 0
src/main/java/com/fdkankan/ucenter/controller/OrderController.java

@@ -5,12 +5,15 @@ import com.fdkankan.common.util.JwtUtil;
 import com.fdkankan.ucenter.common.BaseController;
 import com.fdkankan.ucenter.common.Result;
 import com.fdkankan.ucenter.service.IOrderService;
+import com.fdkankan.ucenter.util.DateUserUtil;
 import com.fdkankan.ucenter.vo.request.DownNumParam;
 import com.fdkankan.ucenter.vo.request.OrderParam;
 import com.fdkankan.ucenter.vo.request.PlaceOrderParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Date;
+
 /**
  * 订单
  *
@@ -85,6 +88,7 @@ public class OrderController extends BaseController {
     public Result downloadOrder(@RequestBody DownNumParam param){
         String username = JwtUtil.getUsername(getToken());
         param.setUserName(username);
+        param.setTimeZoneOff(getTimeZone());
         return Result.success(orderService.downloadOrder(param));
     }
 
@@ -95,6 +99,7 @@ public class OrderController extends BaseController {
     public Result incrementOrder(@RequestBody DownNumParam param){
         String username = JwtUtil.getUsername(getToken());
         param.setUserName(username);
+        param.setTimeZoneOff(getTimeZone());
         return Result.success(orderService.incrementOrder(param));
     }
 

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

@@ -117,14 +117,7 @@ public class TestController extends BaseController {
     }
 
     public static void main(String[] args) {
-        String timeZone = "Asia/Tokyo";
-        TimeZone zone = TimeZone.getTimeZone(timeZone);
-        System.out.println("zone = " + zone.getID() );
-
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        sdf.setTimeZone(zone);
-        System.out.println(sdf.format(new Date()));
-
+        System.out.println(SecurityUtil.MD5("\u00155EAAMBC"));
     }
 
 }

+ 7 - 6
src/main/java/com/fdkankan/ucenter/controller/app/SceneApiController.java

@@ -110,8 +110,9 @@ public class SceneApiController extends BaseController {
         String childName = request.getParameter("childName");
         String lang = request.getParameter("lang");
         String vlog = request.getParameter("vlog");
-        log.info("goEditScenePage---param--phoneNum:{},password:{},sceneNum:{},childName:{},lang:{},vlog:{}",
-                phoneNum,password,sceneNum,childName,lang,vlog);
+        String pad = request.getParameter("pad");
+        log.info("goEditScenePage---param--phoneNum:{},password:{},sceneNum:{},childName:{},lang:{},vlog:{},pad:{}",
+                phoneNum,password,sceneNum,childName,lang,vlog,pad);
 
         ScenePro scene = sceneProService.getByNum(sceneNum);
         ScenePlus scenePlus = null;
@@ -142,7 +143,7 @@ public class SceneApiController extends BaseController {
                     BeanUtils.copyProperties(dbUser,user);
                 }
 
-                sendResponse(user,webSite, request,response,sceneNum,lang,vlog);
+                sendResponse(user,webSite, request,response,sceneNum,lang,vlog, pad);
             }
         }
 
@@ -176,12 +177,12 @@ public class SceneApiController extends BaseController {
         if(!SecurityUtil.MD5(password).equals(ssoUser.getPassword())) {
             throw new BusinessException(LoginConstant.FAILURE_CODE_3015, LoginConstant.FAILURE_MSG_3015);
         }
-        sendResponse(ssoUser,webSite, request,response,sceneNum,lang,vlog);
+        sendResponse(ssoUser,webSite, request,response,sceneNum,lang,vlog, pad);
 
     }
 
     private void sendResponse(UserVo user, String webSite, HttpServletRequest request,
-                              HttpServletResponse response, String sceneNum, String lang, String vlog) {
+                              HttpServletResponse response, String sceneNum, String lang, String vlog, String pad) {
         String token = loginService.redisLogin(user.getUserName(),JSONObject.toJSONString(user),"user");
         //登录成功
         String mainUrl = NacosProperty.getMainUrl();
@@ -200,7 +201,7 @@ public class SceneApiController extends BaseController {
             if(webSite.contains(sceneProV4Url)){
                  redirect = mainUrl + sceneProV4Url.replace("s", "e") +
                         sceneNum + "&t=" +System.currentTimeMillis() + "&token=" + token + "&app" +
-                        (lang == null ? "" : "&lang=" + lang) + (vlog == null ? "" : "&vlog=" + vlog);
+                        (lang == null ? "" : "&lang=" + lang) + (vlog == null ? "" : "&vlog=" + vlog) + (StrUtil.isEmpty(pad) ? "" : "&pad");
             }
 
             if(webSite.contains(sceneProNewUrl)) {

+ 63 - 0
src/main/java/com/fdkankan/ucenter/entity/CameraIncrementLog.java

@@ -0,0 +1,63 @@
+package com.fdkankan.ucenter.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-02-01
+ */
+@Getter
+@Setter
+@TableName("t_camera_increment_log")
+public class CameraIncrementLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 相机Id
+     */
+    @TableField("camera_id")
+    private Long cameraId;
+
+    /**
+     * 0 授权权益,1解除权益,2绑定相机,3解绑相机
+     */
+    @TableField("operation_type")
+    private Integer operationType;
+
+    /**
+     * 操作userId
+     */
+    @TableField("operation_user")
+    private Long operationUser;
+
+    /**
+     * 权益Id
+     */
+    @TableField("increment_id")
+    private Long incrementId;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

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

@@ -120,4 +120,10 @@ public class DownloadOrder implements Serializable {
     @TableField("scene_name")
     private String sceneName;
 
+    /**
+     * 下单时区差 ,单位分钟
+     */
+    @TableField("time_zone_off")
+    private Integer timeZoneOff;
+
 }

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

@@ -123,5 +123,11 @@ public class IncrementOrder implements Serializable {
     @TableField("member_levels")
     private String memberLevels;
 
+    /**
+     * 下单时区差 ,单位分钟
+     */
+    @TableField("time_zone_off")
+    private Integer timeZoneOff;
+
 
 }

+ 1 - 1
src/main/java/com/fdkankan/ucenter/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") ;
 
         generate(path,"ucenter", getTables(new String[]{
-                "t_mail_template",
+                "t_camera_increment_log",
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 50 - 0
src/main/java/com/fdkankan/ucenter/httpClient/service/LaserService.java

@@ -4,6 +4,8 @@ import cn.hutool.core.io.FileUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.common.http.client.NacosAsyncRestTemplate;
 import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.fyun.face.FYunFileServiceInterface;
+import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import com.fdkankan.ucenter.common.CameraTypeEnum;
 import com.fdkankan.ucenter.common.Result;
 import com.fdkankan.ucenter.common.constants.NacosProperty;
@@ -21,6 +23,7 @@ import com.fdkankan.ucenter.vo.response.SceneNumVo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
@@ -257,4 +260,51 @@ public class LaserService {
         return null ;
     }
 
+    public void delete(String num) {
+        try {
+            Map<String,Object> params = new HashMap<>();
+            params.put("sceneCode", num);
+            params.put("status", -1);
+            Result result = laserClient.saveOrEdit(num, params);
+            if(result.getCode() != HttpStatus.OK.value()){
+                log.error("激光场景状态同步失败!");
+            }
+        }catch (Exception e){
+            log.error("激光场景状态同步失败!",e);
+        }
+
+    }
+
+
+    @Autowired
+    private FYunFileServiceInterface fYunFileService;
+    @Autowired
+    private RabbitMqProducer rabbitMqProducer;
+
+    @Value("${4dkk.laserService.cloud-point-fyun-path}")
+    private String cloudPointFyunPath;
+    @Value("${4dkk.laserService.bucket}")
+    private String bucket;
+    @Value("${queue.application.laser.cloud-point-build}")
+    private String cloudPointBuild;
+
+
+
+    public void cloudPointBuild(String oldSceneCode,String sceneCode) {
+        if (!fYunFileService.fileExist(bucket,String.format(cloudPointFyunPath,oldSceneCode,oldSceneCode) +"vision_edit.txt")){
+            return;
+        }
+        log.info("开始同步点云编辑文件");
+        // 上传点云编辑文件,并通知激光系统
+        fYunFileService.copyFileBetweenBucket(bucket,String.format(cloudPointFyunPath,oldSceneCode,oldSceneCode) + "vision_edit.txt",
+                bucket,String.format(cloudPointFyunPath,sceneCode,sceneCode) + "vision_edit.txt");
+
+        fYunFileService.copyFileBetweenBucket(bucket,String.format(cloudPointFyunPath,oldSceneCode,oldSceneCode) + "uuidcloud",
+                bucket,String.format(cloudPointFyunPath,sceneCode,sceneCode) + "uuidcloud");
+
+        Map<String, Object> params = new HashMap<>();
+        params.put("sceneNum", sceneCode);
+        params.put("businessType", 0);
+        rabbitMqProducer.sendByWorkQueue(cloudPointBuild, params);
+    }
 }

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

@@ -0,0 +1,18 @@
+package com.fdkankan.ucenter.mapper;
+
+import com.fdkankan.ucenter.entity.CameraIncrementLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-02-01
+ */
+@Mapper
+public interface ICameraIncrementLogMapper extends BaseMapper<CameraIncrementLog> {
+
+}

+ 23 - 0
src/main/java/com/fdkankan/ucenter/service/ICameraIncrementLogService.java

@@ -0,0 +1,23 @@
+package com.fdkankan.ucenter.service;
+
+import com.fdkankan.ucenter.entity.CameraIncrementLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-02-01
+ */
+public interface ICameraIncrementLogService extends IService<CameraIncrementLog> {
+
+    void saveLog(Long cameraId, Long incrementId, Long userId, Integer operationType);
+
+    void saveLog(List<Long> cameraIds, Long incrementId, Long userId, Integer operationType);
+
+    void saveLog(List<Long> cameraIds,String userName);
+}

+ 10 - 0
src/main/java/com/fdkankan/ucenter/service/impl/AppCameraService.java

@@ -38,6 +38,8 @@ public class AppCameraService {
     IScenePlusService scenePlusService;
     @Autowired
     IUserIncrementService userIncrementService;
+    @Autowired
+    ICameraIncrementLogService cameraIncrementLogService;
 
 
     public List<CameraAppVo> getCameraForUser(String userName, Integer cameraType) {
@@ -78,6 +80,8 @@ public class AppCameraService {
         List<Long> cameraIds = Collections.singletonList(camera.getId());
 
         cameraDetail.setUserId(user.getId());
+        cameraIncrementLogService.saveLog(camera.getId(),null,user.getId(),2);
+
         cameraDetailService.bindCamera(cameraIds,user.getId());
         sceneProService.bindOrUnCamera(cameraIds,user.getId());
         scenePlusService.bindOrUnCamera(cameraIds,user.getId());
@@ -109,6 +113,12 @@ public class AppCameraService {
         }
         List<Long> cameraIds = Collections.singletonList(camera.getId());
 
+        UserIncrement userIncrement = userIncrementService.getByCameraId(camera.getId());
+        if(userIncrement != null){
+            cameraIncrementLogService.saveLog(camera.getId(),userIncrement.getId(),user.getId(),1);
+        }
+        cameraIncrementLogService.saveLog(camera.getId(),null,user.getId(),3);
+
         userIncrementService.unbindCamera(cameraIds);                   //取消关联用户权益
         cameraDetailService.unbindCamera(cameraIds);                     //取消相机用户关联
         sceneProService.bindOrUnCamera(cameraIds,null);             //取消关联场景

+ 14 - 3
src/main/java/com/fdkankan/ucenter/service/impl/AppSceneService.java

@@ -11,6 +11,7 @@ import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.ucenter.common.OssPath;
 import com.fdkankan.ucenter.constant.LoginConstant;
 import com.fdkankan.ucenter.entity.*;
+import com.fdkankan.ucenter.httpClient.service.LaserService;
 import com.fdkankan.ucenter.mapper.IScenePlusMapper;
 import com.fdkankan.ucenter.service.*;
 import com.fdkankan.ucenter.vo.request.AppSceneParam;
@@ -52,10 +53,13 @@ public class AppSceneService {
     RedisUtil redisUtil;
     @Autowired
     ISceneCooperationService sceneCooperationService;
+    @Autowired
+    LaserService laserService;
 
     @Autowired
     IScenePlusMapper scenePlusMapper;
 
+
     @Value("${fyun.host}")
     private String ossHost;
 
@@ -238,7 +242,7 @@ public class AppSceneService {
     }
 
     public void deleteForCameraName(Long cameraId, String sceneNum) {
-        if(cameraId == null || StringUtils.isEmpty(sceneNum)){
+        if( StringUtils.isEmpty(sceneNum)){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3001,LoginConstant.FAILURE_MSG_3001);
         }
         ScenePro scenePro = sceneProService.getByNum(sceneNum);
@@ -252,21 +256,28 @@ public class AppSceneService {
         if(scenePlus != null && scenePlus.getSceneStatus() == 0){
             throw new BusinessException(SceneConstant.FAILURE_CODE_5037, SceneConstant.FAILURE_MSG_5037);
         }
-        if(scenePro!=null && !scenePro.getCameraId().equals(cameraId)){
+        if(cameraId != null && scenePro!=null && !scenePro.getCameraId().equals(cameraId)){
             throw new BusinessException(SceneConstant.FAILURE_CODE_5010, SceneConstant.FAILURE_MSG_5010);
         }
-        if(scenePlus!=null && !scenePlus.getCameraId().equals(cameraId)){
+        if(cameraId != null && scenePlus!=null && !scenePlus.getCameraId().equals(cameraId)){
             throw new BusinessException(SceneConstant.FAILURE_CODE_5010, SceneConstant.FAILURE_MSG_5010);
         }
+        Integer sceneSource = null;
         List<ScenePro> proList = new ArrayList<>();
         if(scenePro!=null){
             proList.add(scenePro);
+            sceneSource = scenePro.getSceneSource();
         }
         List<ScenePlus> plusList = new ArrayList<>();
         if(scenePlus!=null){
             plusList.add(scenePlus);
+            sceneSource = scenePlus.getSceneSource();
         }
         sceneProService.deleteByList(proList,plusList);
+
+        if(sceneSource != null && sceneSource == 4){
+            laserService.delete(sceneNum);
+        }
     }
 
     public void deleteScene(String sceneNum) {

+ 64 - 0
src/main/java/com/fdkankan/ucenter/service/impl/CameraIncrementLogServiceImpl.java

@@ -0,0 +1,64 @@
+package com.fdkankan.ucenter.service.impl;
+import java.util.Date;
+import java.util.List;
+
+import com.fdkankan.ucenter.entity.CameraIncrementLog;
+import com.fdkankan.ucenter.entity.User;
+import com.fdkankan.ucenter.entity.UserIncrement;
+import com.fdkankan.ucenter.mapper.ICameraIncrementLogMapper;
+import com.fdkankan.ucenter.service.ICameraIncrementLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.ucenter.service.IUserIncrementService;
+import com.fdkankan.ucenter.service.IUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-02-01
+ */
+@Service
+public class CameraIncrementLogServiceImpl extends ServiceImpl<ICameraIncrementLogMapper, CameraIncrementLog> implements ICameraIncrementLogService {
+
+    @Autowired
+    IUserService userService;
+    @Autowired
+    IUserIncrementService userIncrementService;
+
+    @Override
+    public void saveLog(Long cameraId, Long incrementId, Long userId, Integer operationType) {
+        CameraIncrementLog cameraIncrementLog = new CameraIncrementLog();
+        cameraIncrementLog.setCameraId(cameraId);
+        cameraIncrementLog.setOperationType(operationType);
+        cameraIncrementLog.setOperationUser(userId);
+        cameraIncrementLog.setIncrementId(incrementId);
+        this.save(cameraIncrementLog);
+
+    }
+
+    @Override
+    public void saveLog(List<Long> cameraIds, Long incrementId, Long userId, Integer operationType) {
+        for (Long cameraId : cameraIds) {
+            this.saveLog(cameraId,incrementId,userId,operationType);
+        }
+    }
+
+    @Override
+    public void saveLog(List<Long> cameraIds,String userName) {
+        User user = userService.getByUserName(userName);
+        if(user == null){
+            return;
+        }
+        for (Long cameraId : cameraIds) {
+            UserIncrement byCameraId = userIncrementService.getByCameraId(cameraId);
+            if(byCameraId != null ){
+                this.saveLog(cameraId,byCameraId.getId(),user.getId(),1);
+            }
+            this.saveLog(cameraId,null,user.getId(),3);
+        }
+    }
+}

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

@@ -66,6 +66,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     IScenePlusService scenePlusService;
     @Autowired
     ISceneCooperationService sceneCooperationService;
+    @Autowired
+    ICameraIncrementLogService cameraIncrementLogService;
 
     @Override
     public Camera getBySnCode(String snCode) {
@@ -232,6 +234,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         for (String id : split) {
             cameraIds.add(Long.valueOf(id));
         }
+        cameraIncrementLogService.saveLog(cameraIds,userName);
         userIncrementService.unbindCamera(cameraIds);                   //取消关联用户权益
         cameraDetailService.unbindCamera(cameraIds);                    //取消相机用户关联
         sceneService.bindOrUnCamera(cameraIds,null);                //取消关联场景
@@ -267,6 +270,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
             }
         }
 
+        cameraIncrementLogService.saveLog(cameraIds,null,user.getId(),2);
+
         cameraDetailService.bindCamera(cameraIds,user.getId());
         sceneService.bindOrUnCamera(cameraIds,user.getId());
         sceneProService.bindOrUnCamera(cameraIds,user.getId());

+ 5 - 0
src/main/java/com/fdkankan/ucenter/service/impl/DownloadOrderServiceImpl.java

@@ -20,6 +20,7 @@ import com.fdkankan.ucenter.vo.request.DownNumParam;
 import com.fdkankan.ucenter.vo.request.IncrementOrderParam;
 import com.fdkankan.ucenter.vo.response.DownloadVo;
 import com.sun.javafx.font.directwrite.DWFactory;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -55,6 +56,9 @@ public class DownloadOrderServiceImpl extends ServiceImpl<IDownloadOrderMapper,
 
         List<DownloadVo> listVo = new ArrayList<>();
         for (DownloadOrder record : page.getRecords()) {
+            if(StringUtils.isNotBlank(record.getTradeTime())){
+                record.setTradeTime(DateUserUtil.AddMinute(record.getTradeTime(),record.getTimeZoneOff()));
+            }
             DownloadVo vo = new DownloadVo();
             BeanUtils.copyProperties(record,vo);
 
@@ -117,6 +121,7 @@ public class DownloadOrderServiceImpl extends ServiceImpl<IDownloadOrderMapper,
         downloadOrderEntity.setStatus(1);
         downloadOrderEntity.setSceneNum(param.getSceneNum());
         downloadOrderEntity.setSceneName(param.getSceneName());
+        downloadOrderEntity.setTimeZoneOff(param.getTimeZoneOff());
         downloadOrderEntity.setRecStatus("A");
         downloadOrderEntity.setCreateTime(DateUserUtil.getDate(new Date()));
         downloadOrderEntity.setUpdateTime(DateUserUtil.getDate(new Date()));

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

@@ -42,8 +42,8 @@ public class FusionService implements IFusionService {
             SceneProEntityVo vo = new SceneProEntityVo();
             vo.setSceneName(scenePlusVo.getTitle());
             vo.setStatus(scenePlusVo.getSceneStatus());
-            BeanUtils.copyProperties(scenePlusVo,vo);
             BeanUtils.copyProperties(scenePlusVo.getPlusExt(),vo);
+            BeanUtils.copyProperties(scenePlusVo,vo);
             proEntityVos.add(vo);
         }
         Page<SceneProEntityVo> pageVo = new Page<>(param.getPageNum(),param.getPageSize());

+ 4 - 0
src/main/java/com/fdkankan/ucenter/service/impl/IncrementOrderServiceImpl.java

@@ -67,6 +67,9 @@ public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper
 
         List<IncrementOrderVo> listVo  =new ArrayList<>();
         for (IncrementOrder record : page.getRecords()) {
+            if(StringUtils.isNotBlank(record.getTradeTime())){
+                record.setTradeTime(DateUserUtil.AddMinute(record.getTradeTime(),record.getTimeZoneOff()));
+            }
             Invoice invoice = invoiceService.getByIncrementOrderId(record.getId());
             IncrementOrderVo vo = new IncrementOrderVo();
             BeanUtils.copyProperties(record,vo);
@@ -164,6 +167,7 @@ public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper
         incrementOrderEntity.setUpdateTime(DateUserUtil.getDate(new Date()));
         incrementOrderEntity.setIncrementType(param.getIncrementType());
         incrementOrderEntity.setMonthQy(param.getMonthQy());
+        incrementOrderEntity.setTimeZoneOff(param.getTimeZoneOff());
         if(incrementType.getValidTimeType() == 0){
             incrementOrderEntity.setMemberLevels("PR");
         }

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

@@ -160,6 +160,8 @@ public class InnerServiceImpl implements IInnerService {
             vo.setSceneScheme(scenepro.getSceneScheme());
             vo.setSceneKind(null);
             vo.setSceneResolution(null);
+            vo.setObjScenePath(scenepro.getWebSite());
+            vo.setIsObj(scenepro.getIsObj());
             return vo;
         }
 
@@ -173,6 +175,8 @@ public class InnerServiceImpl implements IInnerService {
                 vo.setSceneScheme(plusExt.getSceneScheme());
                 vo.setSceneKind(plusExt.getSceneKind());
                 vo.setSceneResolution(plusExt.getSceneResolution());
+                vo.setObjScenePath(plusExt.getWebSite());
+                vo.setIsObj(plusExt.getIsObj());
                 return vo;
             }
         }

+ 8 - 0
src/main/java/com/fdkankan/ucenter/service/impl/ScenePlusServiceImpl.java

@@ -184,6 +184,12 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
                 String oldViewPath = String.format(UploadFilePath.VIEW_PATH, num);
                 String newViewPath = String.format(UploadFilePath.VIEW_PATH, newNum);
                 fYunFileServiceInterface.copyFileInBucket(oldViewPath, newViewPath);
+
+                //复制计算结果文件
+                String oldResultPath = String.format(UploadFilePath.SCENE_RESULT_DATA_PATH, num);
+                String newResultPath = String.format(UploadFilePath.SCENE_RESULT_DATA_PATH, newNum);
+                fYunFileServiceInterface.copyFileInBucket(oldResultPath, newResultPath);
+
                 // 拷贝本地资源
                 String oldPath = String.format("/mnt/4Dkankan/scene/%s/caches/images", num);
                 String newPath = String.format("/mnt/4Dkankan/scene/%s/caches/images", newNum);
@@ -305,6 +311,8 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
                     String laserPath = laserService.copyDataSource(oldDataSource,plusExt.getDataSource());
                     laserService.copy(scenePlus.getCameraId(),scenePlus.getCreateTime(),newNum,2,laserPath,
                             sceneEditInfo.getScenePassword(),scenePlus.getTitle(),scenePlus.getUserId(),"V4");
+                } else {
+                    laserService.cloudPointBuild(num,newNum);
                 }
                 sceneCopyLogService.saveByNum(num,newNum,scenePlus.getUserId());
 

+ 22 - 9
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fdkankan.ucenter.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
@@ -11,6 +12,7 @@ import com.fdkankan.common.constant.SceneConstant;
 import com.fdkankan.common.constant.SceneKind;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.*;
+import com.fdkankan.model.constants.UploadFilePath;
 import com.fdkankan.rabbitmq.bean.BuildSceneCallMessage;
 import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import com.fdkankan.redis.constant.RedisKey;
@@ -1221,17 +1223,28 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         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缺少必要文件,生成失败!");
+        String ossResultPath = String.format(UploadFilePath.scene_result_data_path, num);
+        String ossReconstruction = ossResultPath + "caches/reconstruction/";
+        if(!fYunFileService.fileExist(ossReconstruction + "final.bin")
+                || !fYunFileService.fileExist(ossReconstruction + "chunk.json")
+                || CollUtil.isEmpty(fYunFileService.listRemoteFiles(ossResultPath + "caches/images"))
+                || CollUtil.isEmpty(fYunFileService.listRemoteFiles(ossResultPath + "caches/depthmap"))
+                || CollUtil.isEmpty(fYunFileService.listRemoteFiles(ossResultPath + "caches/depthmap_csc"))
+                || !fYunFileService.fileExist(ossResultPath + "caches/panorama.json")
+                || !fYunFileService.fileExist(ossResultPath + "results/laserData/laser.ply")){
             throw new BusinessException(SceneConstant.FAILURE_CODE_5038, SceneConstant.FAILURE_MSG_5038);
         }
+//        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);

+ 9 - 0
src/main/java/com/fdkankan/ucenter/service/impl/UserIncrementServiceImpl.java

@@ -60,6 +60,8 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
     SmsService smsService;
     @Autowired
     IMailTemplateService mailTemplateService;
+    @Autowired
+    ICameraIncrementLogService cameraIncrementLogService;
 
     @Override
     public Long getCountByUserId(Long userId, int type) {
@@ -198,6 +200,7 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         userIncrement.setCameraId(cameraEntity.getId());
         userIncrement.setUpdateTime(DateUserUtil.getDate(new Date()));
         this.updateById(userIncrement);
+        cameraIncrementLogService.saveLog(cameraEntity.getId(),userIncrement.getId(),user.getId(),0);
         sceneProService.lockOrUnLockBySpace(cameraDetailEntity,cameraEntity.getId(),1);
     }
 
@@ -217,10 +220,16 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         if(cameraDetail == null){
             throw new BusinessException(CameraConstant.FAILURE_CODE_6003, CameraConstant.FAILURE_MSG_6003);
         }
+        User user = userService.getByUserName(param.getUserName());
+        if(user == null){
+            throw new BusinessException(CameraConstant.FAILURE_CODE_6003, CameraConstant.FAILURE_MSG_6003);
+        }
+        cameraIncrementLogService.saveLog(userIncrement.getCameraId(),userIncrement.getId(),user.getId(),1);
         LambdaUpdateWrapper<UserIncrement> wrapper = new LambdaUpdateWrapper<>();
         wrapper.eq(UserIncrement::getId,param.getId());
         wrapper.set(UserIncrement::getCameraId,null);
         this.update(wrapper);
+
         sceneProService.lockOrUnLockBySpace(cameraDetail,cameraDetail.getCameraId(),-2);
     }
 

+ 20 - 0
src/main/java/com/fdkankan/ucenter/util/DateUserUtil.java

@@ -3,11 +3,13 @@ package com.fdkankan.ucenter.util;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import com.fdkankan.ucenter.entity.IncrementType;
+import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
 
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.util.Calendar;
 import java.util.Date;
 
 public class DateUserUtil {
@@ -97,4 +99,22 @@ public class DateUserUtil {
                 .toLocalDateTime().plusMonths(month);
         return  Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
     }
+
+    public static String AddMinute(Date date, Integer minute){
+        SimpleDateFormat sdf = new SimpleDateFormat(DEF_FMT);
+        Calendar nowTime = Calendar.getInstance();
+        nowTime.setTime(date);
+        nowTime.add(Calendar.MINUTE, ~minute);
+        return sdf.format(nowTime.getTime());
+    }
+    public static String AddMinute(String date, Integer minute){
+        SimpleDateFormat sdf = new SimpleDateFormat(DEF_FMT);
+        try {
+            Date time =  sdf.parse(date);
+            return AddMinute(time,minute);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return date;
+    }
 }

+ 0 - 2
src/main/java/com/fdkankan/ucenter/util/FolderTreeUtil.java

@@ -26,8 +26,6 @@ public class FolderTreeUtil {
         }
     }
 
-    public FolderTreeUtil() {
-    }
 
     /**
      * 构建树形结构list

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

@@ -19,6 +19,8 @@ public class DownNumParam {
 
     private Integer incrementType ;
 
+    private Integer timeZoneOff;
+
     public Integer getIncrementType() {
         if(incrementType == null && StringUtils.isNotBlank(skuSn) && StringUtils.isNumeric(skuSn)){
             return  Integer.valueOf(skuSn);

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

@@ -10,4 +10,6 @@ public class LaserSceneInfoVo {
     private Integer sceneScheme;
     private String sceneKind;
     private String sceneResolution;
+    private String objScenePath;
+    private Integer isObj;
 }

+ 5 - 0
src/main/resources/mapper/ucenter/CameraIncrementLogMapper.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.ucenter.mapper.ICameraIncrementLogMapper">
+
+</mapper>