You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.0 KiB
64 lines
2.0 KiB
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()); |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|