FdkkService.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package com.fdkankan.manage.httpClient.service;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import cn.hutool.json.JSONUtil;
  5. import com.alibaba.fastjson.JSON;
  6. import com.alibaba.fastjson.JSONObject;
  7. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  8. import com.fdkankan.manage.common.OssPath;
  9. import com.fdkankan.manage.common.ResultCode;
  10. import com.fdkankan.manage.common.ResultData;
  11. import com.fdkankan.manage.common.ZipFileReaderUtil;
  12. import com.fdkankan.manage.config.ManageConfig;
  13. import com.fdkankan.manage.entity.JyUser;
  14. import com.fdkankan.manage.entity.ScenePlus;
  15. import com.fdkankan.manage.entity.ScenePlusExt;
  16. import com.fdkankan.manage.exception.BusinessException;
  17. import com.fdkankan.manage.httpClient.client.FdKKClient;
  18. import com.fdkankan.manage.httpClient.param.UploadSceneOrigParamVo;
  19. import com.fdkankan.manage.service.IJyUserService;
  20. import com.fdkankan.manage.service.IScenePlusExtService;
  21. import com.fdkankan.manage.service.IScenePlusService;
  22. import com.fdkankan.manage.vo.request.UploadSceneCheckVo;
  23. import lombok.extern.slf4j.Slf4j;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.beans.factory.annotation.Value;
  26. import org.springframework.stereotype.Service;
  27. import java.util.List;
  28. @Service
  29. @Slf4j
  30. public class FdkkService {
  31. @Autowired
  32. FdKKClient fdKKClient;
  33. @Autowired
  34. IJyUserService jyUserService;
  35. @Autowired
  36. ManageConfig manageConfig;
  37. @Autowired
  38. FYunFileServiceInterface fYunFileServiceInterface;
  39. @Autowired
  40. IScenePlusExtService scenePlusExtService;
  41. @Autowired
  42. IScenePlusService scenePlusService;
  43. public void uploadSceneOrig(UploadSceneOrigParamVo paramVo){
  44. try {
  45. paramVo.setFilePath(paramVo.getFilePath().replace(manageConfig.getQueryPath(),""));
  46. JyUser jyUser = jyUserService.getBySysId(StpUtil.getLoginId());
  47. paramVo.setUserId(jyUser.getUserId());
  48. ResultData resultData = fdKKClient.uploadSceneOrig(paramVo, StpUtil.getTokenValue());
  49. if(resultData.getCode() != 0){
  50. throw new BusinessException(resultData.getCode(),resultData.getMessage());
  51. }
  52. }catch (Exception e){
  53. log.info("uploadSceneOrig:{}",e);
  54. throw new BusinessException(ResultCode.UPLOAD_ERROR);
  55. }
  56. }
  57. public UploadSceneCheckVo uploadSceneCheck(UploadSceneOrigParamVo paramVo) {
  58. try {
  59. JyUser loginUser = jyUserService.getBySysId(StpUtil.getLoginId());
  60. paramVo.setFilePath(paramVo.getFilePath().replace(manageConfig.getQueryPath(),""));
  61. String content = ZipFileReaderUtil.readUtf8(manageConfig.getQueryPath() + "4dkankan/"+paramVo.getFilePath(), "data.fdage");
  62. JSONObject jsonObject = JSONObject.parseObject(content);
  63. String uuidtime = jsonObject.getString("uuidtime");
  64. List<ScenePlusExt> exts = scenePlusExtService.getLikeDataSource(uuidtime);
  65. if(exts == null || exts.isEmpty()){
  66. return new UploadSceneCheckVo(0,"");
  67. }
  68. for (ScenePlusExt ext : exts) {
  69. ScenePlus scenePlus = scenePlusService.getById(ext.getPlusId());
  70. if(scenePlus != null && scenePlus.getUserId() != null){
  71. JyUser jyUser = jyUserService.getByUserId(scenePlus.getUserId());
  72. if(jyUser != null && !jyUser.getId().equals(loginUser.getId())){
  73. return new UploadSceneCheckVo(ResultCode.UPLOAD_SCENE_ERROR.code(),jyUser.getRyNo());
  74. }
  75. if(jyUser != null){
  76. return new UploadSceneCheckVo(ResultCode.UPLOAD_SCENE_ERROR2.code(),ResultCode.UPLOAD_SCENE_ERROR2.message());
  77. }
  78. }
  79. }
  80. }catch (Exception e){
  81. log.info("upload-scene-error:{}",e);
  82. }
  83. throw new BusinessException(ResultCode.UPLOAD_FILE_OBJ_ERROR);
  84. }
  85. public UploadSceneCheckVo checkUploadSceneOffline(String zipPath) {
  86. try {
  87. String sceneJsonStr = ZipFileReaderUtil.readUtf8(manageConfig.getQueryPath() + "4dkankan/"+zipPath, "scene.json");
  88. if(StrUtil.isEmpty(sceneJsonStr) || !JSONUtil.isJson(sceneJsonStr)){
  89. throw new BusinessException(ResultCode.UPLOAD_SCENE_ERROR3);
  90. }
  91. JSONObject jsonObject = JSON.parseObject(sceneJsonStr);
  92. //校验版本
  93. String offlineVersion = jsonObject.getString("offlineVersion");
  94. String platformVersion = manageConfig.getPlatformVersion();//从数据中获取
  95. if (offlineVersion == null || platformVersion == null) {
  96. throw new BusinessException(ResultCode.UPLOAD_SCENE_ERROR4);
  97. }
  98. String[] offParts = offlineVersion.split("\\.");
  99. String[] pfParts = platformVersion.split("\\.");
  100. // 至少需要两位版本号
  101. if (offParts.length < 2 || pfParts.length < 2) {
  102. throw new BusinessException(ResultCode.UPLOAD_SCENE_ERROR4);
  103. }
  104. // 比较前两位
  105. if (!offParts[0].equals(pfParts[0]) || !offParts[1].equals(pfParts[1])) {
  106. throw new BusinessException(ResultCode.UPLOAD_SCENE_ERROR4);
  107. }
  108. // 前两位一致,检查第三位
  109. if (!offParts[2].equals(pfParts[2])) {
  110. throw new BusinessException(ResultCode.UPLOAD_SCENE_ERROR4);
  111. }
  112. String num = jsonObject.getString("num");
  113. ScenePlus scenePlus = scenePlusService.getByNum(num);
  114. if(scenePlus != null){
  115. throw new BusinessException(ResultCode.UPLOAD_SCENE_ERROR2);
  116. }
  117. return new UploadSceneCheckVo(0,"");
  118. }catch (BusinessException e){
  119. throw e;
  120. }catch (Exception e){
  121. log.info("upload-scene-error:{}",e);
  122. }
  123. throw new BusinessException(ResultCode.UPLOAD_FILE_OBJ_ERROR);
  124. }
  125. }