package com.fdkankan.manage.httpClient.service; import com.alibaba.fastjson.JSONObject; import com.fdkankan.manage.common.RedisKeyUtil; import com.fdkankan.manage.common.ResultCode; import com.fdkankan.manage.config.FyunConfig; import com.fdkankan.manage.exception.BusinessException; import com.fdkankan.manage.httpClient.client.OverallClient; import com.fdkankan.manage.httpClient.param.WorkOfflineDTO; import com.fdkankan.manage.httpClient.vo.OverallParam; import com.fdkankan.manage.httpClient.vo.OverallVo; import com.fdkankan.manage.service.IDownService; import com.fdkankan.manage.task.ThreadBussService; import com.fdkankan.rabbitmq.util.RabbitMqProducer; import com.fdkankan.redis.util.RedisUtil; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @Service @Slf4j public class OverallService { @Autowired OverallClient overallClient; @Autowired RabbitMqProducer rabbitMqProducer; @Autowired IDownService downService; @Autowired FyunConfig fyunConfig; @Autowired RedisUtil redisUtil; @Autowired @Lazy ThreadBussService threadBussService; private static String appId ="BDA385EC848C1A425F746869011C8D23"; private static String key ="appId"; public OverallVo delete(String num) { return overallClient.delete(num,appId,key); } public OverallVo list(OverallParam param) { return overallClient.list(param,appId,key); } public synchronized Object downOfflinePage(String workId){ try { String redisKey = String.format(RedisKeyUtil.overallDownOfflineProgressKey,workId); if(redisUtil.hasKey(redisKey)){ WorkOfflineDTO dto = JSONObject.parseObject(redisUtil.get(redisKey),WorkOfflineDTO.class); if(dto.getProgress() == 100 || (dto.getOfflineStatus() != null && dto.getOfflineStatus() ==-1)){ redisUtil.del(redisKey); } return dto; } WorkOfflineDTO param = new WorkOfflineDTO(workId); overallClient.UpdateDownloadOfflineStatus(param,appId,key); OverallVo offlineDetail = overallClient.getOfflineDetail(param,appId,key); if(offlineDetail == null || offlineDetail.getCode() !=0){ throw new BusinessException(ResultCode.OVERALL_VIEW_ERROR); } Object data = offlineDetail.getData(); String jsonString = JSONObject.toJSONString(data); WorkOfflineDTO dto = JSONObject.parseObject(jsonString,WorkOfflineDTO.class); redisUtil.set(redisKey,jsonString,RedisKeyUtil.overallDownOfflineProgressKeyTime); threadBussService.overallDownScene(dto,redisKey); return dto; }catch (Exception e){ log.info("全景看看访问失败:{}",e); throw new BusinessException(ResultCode.OVERALL_VIEW_ERROR); } } }