SceneServiceImpl.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package com.fdkankan.scene.service.impl;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7. import com.fdkankan.common.ErrorCode;
  8. import com.fdkankan.feign.TietaFeignClient;
  9. import com.fdkankan.redis.constant.RedisKey;
  10. import com.fdkankan.redis.util.RedisClient;
  11. import com.fdkankan.scene.bean.ResultData;
  12. import com.fdkankan.scene.entity.Scene;
  13. import com.fdkankan.scene.entity.SceneFileMapping;
  14. import com.fdkankan.scene.mapper.SceneMapper;
  15. import com.fdkankan.scene.service.SceneFileMappingService;
  16. import com.fdkankan.scene.service.SceneService;
  17. import com.fdkankan.scene.vo.SceneEditControlsVO;
  18. import com.fdkankan.scene.vo.SceneInfoParamVO;
  19. import com.fdkankan.scene.vo.SceneInfoVO;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.beans.factory.annotation.Value;
  22. import org.springframework.stereotype.Service;
  23. import javax.annotation.Resource;
  24. import java.util.List;
  25. import java.util.Map;
  26. import java.util.Objects;
  27. import java.util.stream.Collectors;
  28. /**
  29. * <p>
  30. * 服务实现类
  31. * </p>
  32. *
  33. * @author dsx
  34. * @since 2024-06-26
  35. */
  36. @Service
  37. public class SceneServiceImpl extends ServiceImpl<SceneMapper, Scene> implements SceneService {
  38. @Value("${spring.cloud.nacos.discovery.access-key}")
  39. private String accessKey;
  40. @Value("${tieta.checkToken.syscode}")
  41. private String syscode;
  42. @Autowired
  43. private SceneFileMappingService sceneFileMappingService;
  44. @Autowired
  45. private RedisClient redisClient;
  46. @Resource
  47. private TietaFeignClient tietaFeignClient;
  48. @Override
  49. public ResultData getSceneInfo(SceneInfoParamVO param) throws Exception {
  50. String token = param.getToken();
  51. String acctId = param.getAcctId();
  52. JSONObject params = new JSONObject();
  53. params.put("SYSCODE", syscode);
  54. params.put("ACCTID", acctId);
  55. params.put("TOKEN", token);
  56. JSONObject result = tietaFeignClient.checkProwadaTokenMicro(params);
  57. if(!"0".equals(result.get("RSP"))){
  58. return ResultData.error(4000, (String) result.get("ERRDESC"));
  59. }
  60. String num = param.getNum();
  61. SceneInfoVO sceneInfoVO = null;
  62. String key = String.format(RedisKey.SCENE_JSON, num);
  63. String sceneJson = redisClient.get(key);
  64. if(StrUtil.isNotEmpty(sceneJson)){
  65. sceneInfoVO = JSON.parseObject(sceneJson, SceneInfoVO.class);
  66. sceneInfoVO.getControls().setShowRule(1);
  67. sceneInfoVO.getControls().setShowFloorplan(0);
  68. sceneInfoVO.getControls().setShowDollhouse(0);
  69. sceneInfoVO.setFloorLogo("2");
  70. }else{
  71. Scene scene = this.getOne(new LambdaQueryWrapper<Scene>().eq(Scene::getNum, num));
  72. if(Objects.isNull(scene)){
  73. return ResultData.error(ErrorCode.FAILURE_CODE_5005.code(), ErrorCode.FAILURE_CODE_5005.message());
  74. }
  75. sceneInfoVO = new SceneInfoVO();
  76. sceneInfoVO.setTitle(scene.getTitle());
  77. sceneInfoVO.setNum(scene.getNum());
  78. sceneInfoVO.setFloorLogoSize(Integer.valueOf(scene.getFloorlogosize()));
  79. sceneInfoVO.setSceneKind(scene.getScenekind());
  80. sceneInfoVO.setSceneResolution(scene.getSceneresolution());
  81. sceneInfoVO.setSceneFrom(scene.getScenefrom());
  82. sceneInfoVO.setModelKind(scene.getModelkind());
  83. sceneInfoVO.setFloorPlanAngle(Float.valueOf(scene.getFloorplanangle()));
  84. sceneInfoVO.setFloorLogo("2");
  85. SceneEditControlsVO sceneEditControlsBean = SceneEditControlsVO.builder().showRule(1).showFloorplan(0).showDollhouse(0).showMap(1).showPanorama(1).showVR(1).showTitle(1).build();
  86. sceneInfoVO.setControls(sceneEditControlsBean);
  87. redisClient.add(key, JSON.toJSONString(sceneInfoVO));
  88. }
  89. List<SceneFileMapping> mappingList = sceneFileMappingService.list(new LambdaQueryWrapper<SceneFileMapping>().eq(SceneFileMapping::getNum, num));
  90. Map<String, String> keyMap = mappingList.stream().collect(Collectors.toMap(SceneFileMapping::getKey, SceneFileMapping::getUrl));
  91. sceneInfoVO.setMapping(keyMap);
  92. return ResultData.ok(sceneInfoVO);
  93. }
  94. }