package com.moral.api.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.moral.api.entity.CityWeather;
|
import com.moral.api.mapper.CityWeatherMapper;
|
import com.moral.api.service.CityWeatherService;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.moral.constant.RedisConstants;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Map;
|
|
/**
|
* <p>
|
* 城市实测小时气象数据表 服务实现类
|
* </p>
|
*
|
* @author moral
|
* @since 2021-10-28
|
*/
|
@Service
|
public class CityWeatherServiceImpl extends ServiceImpl<CityWeatherMapper, CityWeather> implements CityWeatherService {
|
|
@Autowired
|
RedisTemplate redisTemplate;
|
@Autowired
|
CityWeatherMapper cityWeatherMapper;
|
@Override
|
public Map<String, Object> queryWeatherByRegionCode(Integer regionCode) {
|
Map<String,Object> value = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.CITY_WEATHER,String.valueOf(regionCode));
|
if(value==null)
|
value = queryCityWeatherByRegionCodeFromDB(regionCode);
|
return value;
|
}
|
|
/**
|
* @Description: 从数据库查询天气数据
|
* @Param: [regionCode]
|
* @return: java.util.Map<java.lang.String,java.lang.Object>
|
* @Author: 陈凯裕
|
* @Date: 2021/10/29
|
*/
|
private Map<String, Object> queryCityWeatherByRegionCodeFromDB(Integer regionCode) {
|
QueryWrapper<CityWeather> wrapper = new QueryWrapper();
|
wrapper.eq("city_code",regionCode);
|
wrapper.orderByDesc("time");
|
wrapper.last(true,"limit 1");
|
CityWeather weather = cityWeatherMapper.selectOne(wrapper);
|
if(weather==null)
|
return null;
|
String value = weather.getValue();
|
redisTemplate.opsForHash().put(RedisConstants.CITY_WEATHER,regionCode,value);
|
return JSON.parseObject(value,Map.class);
|
}
|
}
|