package com.fdkankan.scene.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.feign.TietaFeignClient; import com.fdkankan.redis.constant.RedisKey; import com.fdkankan.redis.util.RedisUtil; import com.fdkankan.scene.bean.ResultData; import com.fdkankan.scene.entity.Scene; import com.fdkankan.scene.entity.SceneFileMapping; import com.fdkankan.scene.mapper.SceneMapper; import com.fdkankan.scene.service.SceneFileMappingService; import com.fdkankan.scene.service.SceneService; import com.fdkankan.scene.vo.SceneEditControlsVO; import com.fdkankan.scene.vo.SceneInfoParamVO; import com.fdkankan.scene.vo.SceneInfoVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author dsx * @since 2024-06-26 */ @Service public class SceneServiceImpl extends ServiceImpl implements SceneService { @Value("${spring.cloud.nacos.discovery.access-key}") private String accessKey; @Value("${tieta.checkToken.syscode}") private String syscode; @Autowired private SceneFileMappingService sceneFileMappingService; @Autowired private RedisUtil redisUtil; @Resource private TietaFeignClient tietaFeignClient; @Override public ResultData getSceneInfo(SceneInfoParamVO param) throws Exception { String token = param.getToken(); String acctId = param.getAcctId(); JSONObject params = new JSONObject(); // Map params = new HashMap<>(); params.put("SYSCODE", syscode); params.put("ACCTID", acctId); params.put("TOKEN", token); JSONObject result = tietaFeignClient.checkProwadaTokenMicro(params); if(!"0".equals(result.get("RSP"))){ return ResultData.error(4000, (String) result.get("ERRDESC")); } String num = param.getNum(); SceneInfoVO sceneInfoVO = null; String key = String.format(RedisKey.SCENE_JSON, num); boolean hasKey = redisUtil.hasKey(key); if(hasKey){ String sceneJson = redisUtil.get(key); sceneInfoVO = JSON.parseObject(sceneJson, SceneInfoVO.class); sceneInfoVO.getControls().setShowRule(1); sceneInfoVO.getControls().setShowFloorplan(0); sceneInfoVO.getControls().setShowDollhouse(0); sceneInfoVO.setFloorLogo("2"); }else{ Scene scene = this.getOne(new LambdaQueryWrapper().eq(Scene::getNum, num)); sceneInfoVO = new SceneInfoVO(); sceneInfoVO.setTitle(scene.getTitle()); sceneInfoVO.setNum(scene.getNum()); sceneInfoVO.setFloorLogoSize(Integer.valueOf(scene.getFloorlogosize())); sceneInfoVO.setSceneKind(scene.getScenekind()); sceneInfoVO.setSceneResolution(scene.getSceneresolution()); sceneInfoVO.setSceneFrom(scene.getScenefrom()); sceneInfoVO.setModelKind(scene.getModelkind()); sceneInfoVO.setFloorPlanAngle(Float.valueOf(scene.getFloorplanangle())); sceneInfoVO.setFloorLogo("2"); SceneEditControlsVO sceneEditControlsBean = SceneEditControlsVO.builder().showRule(1).showFloorplan(0).showDollhouse(0).showMap(1).showPanorama(1).showVR(1).showTitle(1).build(); sceneInfoVO.setControls(sceneEditControlsBean); redisUtil.set(key, JSON.toJSONString(sceneInfoVO)); } List mappingList = sceneFileMappingService.list(new LambdaQueryWrapper().eq(SceneFileMapping::getNum, num)); Map keyMap = mappingList.stream().collect(Collectors.toMap(SceneFileMapping::getKey, SceneFileMapping::getUrl)); sceneInfoVO.setMapping(keyMap); return ResultData.ok(sceneInfoVO); } }