package com.mh.user.job; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.github.benmanes.caffeine.cache.Cache; import com.mh.common.utils.StringUtils; import com.mh.user.entity.SysParamEntity; import com.mh.user.service.SysParamService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; /** * @author LJF * @version 1.0 * @project NewZhujiang_Server * @description 定期获取时间 * @date 2023-12-05 14:12:56 */ @Component @Slf4j public class GetWeatherInfoJob { @Resource private SysParamService sysParamService; @Resource private RestTemplate restTemplate; @Resource @Qualifier("caffeineCache") private Cache caffeineCache; @Value("${amap.key}") String amapKey; /** * 定时获取每天天气 */ @Scheduled(cron = "0 0 0 1/1 * ?") public void getWeatherInfo() { // 从系统参数中获取对应的项目区域 SysParamEntity sysParam = sysParamService.selectSysParam(); if (null != sysParam) { String url = "https://restapi.amap.com/v3/weather/weatherInfo?extensions=all&key="+amapKey+"&city="+sysParam.getProArea(); String returnResult = restTemplate.getForObject(url, String.class); if (!StringUtils.isBlank(returnResult)) { JSONObject jsonObject = JSON.parseObject(returnResult); if ("1".equals(jsonObject.get("status"))) { Object wetTemp = caffeineCache.getIfPresent(sysParam.getProArea()); if (wetTemp != null) { caffeineCache.invalidate(sysParam.getProArea()); } caffeineCache.put(sysParam.getProArea(), jsonObject.toString()); } } } } }