package com.fdkankan.scene.service.impl; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.fdkankan.model.constants.ConstantFilePath; import com.fdkankan.web.response.ResultData; import com.fdkankan.fyun.face.FYunFileServiceInterface; import com.fdkankan.redis.constant.RedisKey; import com.fdkankan.redis.util.RedisUtil; import com.fdkankan.scene.bean.SceneUpgradeProgressBean; import com.fdkankan.scene.entity.ScenePlus; import com.fdkankan.scene.entity.ScenePlusExt; import com.fdkankan.scene.entity.SceneRepairLog; import com.fdkankan.scene.service.IScenePlusExtService; import com.fdkankan.scene.service.IScenePlusService; import com.fdkankan.scene.service.ISceneProService; import com.fdkankan.scene.service.ISceneRepairLogService; import com.fdkankan.scene.service.ISceneUpgradeToV4Service; import com.fdkankan.scene.vo.SceneInfoVO; import java.util.Calendar; import java.util.Objects; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** *
* TODO *
* * @author dengsixing * @since 2022/4/21 **/ @Slf4j @Service public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service { @Autowired private ISceneRepairLogService sceneRepairLogService; @Autowired private RedisUtil redisUtil; @Autowired private ISceneProService sceneProService; @Autowired private IScenePlusService scenePlusService; @Autowired private IScenePlusExtService scenePlusExtService; @Autowired private FYunFileServiceInterface fYunFileService; private void upgradeLog(SceneRepairLog sceneRepairLog, String num, int status, String reason){ //写入升级日志 if(Objects.isNull(sceneRepairLog)){ sceneRepairLog = new SceneRepairLog(); sceneRepairLog.setNum(num); } sceneRepairLog.setState(status); sceneRepairLog.setReason(reason); sceneRepairLog.setCreateTime(Calendar.getInstance().getTime()); sceneRepairLogService.saveOrUpdate(sceneRepairLog); } @Override public ResultData getUpgradeToV4Progress(String num) { String key = String.format(RedisKey.scene_upgrade_progress_num, num); String progress = redisUtil.get(key); SceneUpgradeProgressBean progressBean = null; if(StrUtil.isNotEmpty(progress)){ progressBean = JSON.parseObject(progress, SceneUpgradeProgressBean.class); }else{ progressBean = SceneUpgradeProgressBean.builder().num(num).status(0).progress(0).build(); } return ResultData.ok(progressBean); } @Override public ResultData getSceneViewInfo(String num) { ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num); ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId()); String bucket = scenePlusExt.getYunFileBucket(); String key = String.format(RedisKey.SCENE_JSON, num); String sceneJson = redisUtil.get(key); SceneInfoVO sceneInfoVO = null; //先查询redis if(StrUtil.isNotEmpty(sceneJson)) { sceneInfoVO = JSON.parseObject(sceneJson, SceneInfoVO.class); sceneInfoVO.setScenePassword(null); if(Objects.isNull(sceneInfoVO.getFloorPlanAngle())){ sceneInfoVO.setFloorPlanAngle(0f); } if(Objects.isNull(sceneInfoVO.getFloorPlanCompass())){ sceneInfoVO.setFloorPlanCompass(0f); } return ResultData.ok(sceneInfoVO); } //如果redis没找到,从scene.json中获取 String objectName = String.format(ConstantFilePath.SCENE_VIEW_DATA_DATA_SCENEJSON, num); String objectContent = fYunFileService.getFileContent(bucket, objectName); if(StrUtil.isEmpty(objectContent)) return ResultData.ok(); sceneInfoVO = JSON.parseObject(objectContent, SceneInfoVO.class); sceneInfoVO.setScenePassword(null); if(Objects.isNull(sceneInfoVO.getFloorPlanAngle())){ sceneInfoVO.setFloorPlanAngle(0f); } if(Objects.isNull(sceneInfoVO.getFloorPlanCompass())){ sceneInfoVO.setFloorPlanCompass(0f); } return ResultData.ok(sceneInfoVO); } }