LAPTOP-KB9HII50\70708 2 anni fa
parent
commit
ec03be70fd

+ 186 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/weather/BaseWeatherDayDO.java

@ -0,0 +1,186 @@
package com.yihu.jw.entity.care.weather;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by yeshijie on 2022/7/27.
 */
@Entity
@Table(name = "base_weather_day")
public class BaseWeatherDayDO extends UuidIdentityEntityWithCreateTime {
    private String nums;//今日实时请求次数
    private String cityid;//城市ID
    private String city;//城市名称
    private String date;//当前日期
    private String week;//星期
    private String updateTime;//更新时间
    private String wea;//天气情况
    private String weaImg;//天气标识(xue、lei、shachen、wu、bingbao、yun、yu、yin、qing)
    private String tem;//实况温度
    private String temDay;//白天温度(高温)
    private String temNight;//夜间温度(低温)
    private String win;//风向
    private String winSpeed;//风力
    private String winMeter;//风速
    private String air;//空气质量
    private String pressure;//气压
    private String humidity;//湿度
    @Column(name = "nums")
    public String getNums() {
        return nums;
    }
    public void setNums(String nums) {
        this.nums = nums;
    }
    @Column(name = "cityid")
    public String getCityid() {
        return cityid;
    }
    public void setCityid(String cityid) {
        this.cityid = cityid;
    }
    @Column(name = "city")
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    @Column(name = "date")
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    @Column(name = "week")
    public String getWeek() {
        return week;
    }
    public void setWeek(String week) {
        this.week = week;
    }
    @Column(name = "update_time")
    public String getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(String updateTime) {
        this.updateTime = updateTime;
    }
    @Column(name = "wea")
    public String getWea() {
        return wea;
    }
    public void setWea(String wea) {
        this.wea = wea;
    }
    @Column(name = "wea_img")
    public String getWeaImg() {
        return weaImg;
    }
    public void setWeaImg(String weaImg) {
        this.weaImg = weaImg;
    }
    @Column(name = "tem")
    public String getTem() {
        return tem;
    }
    public void setTem(String tem) {
        this.tem = tem;
    }
    @Column(name = "tem_day")
    public String getTemDay() {
        return temDay;
    }
    public void setTemDay(String temDay) {
        this.temDay = temDay;
    }
    @Column(name = "tem_night")
    public String getTemNight() {
        return temNight;
    }
    public void setTemNight(String temNight) {
        this.temNight = temNight;
    }
    @Column(name = "win")
    public String getWin() {
        return win;
    }
    public void setWin(String win) {
        this.win = win;
    }
    @Column(name = "win_speed")
    public String getWinSpeed() {
        return winSpeed;
    }
    public void setWinSpeed(String winSpeed) {
        this.winSpeed = winSpeed;
    }
    @Column(name = "win_meter")
    public String getWinMeter() {
        return winMeter;
    }
    public void setWinMeter(String winMeter) {
        this.winMeter = winMeter;
    }
    @Column(name = "air")
    public String getAir() {
        return air;
    }
    public void setAir(String air) {
        this.air = air;
    }
    @Column(name = "pressure")
    public String getPressure() {
        return pressure;
    }
    public void setPressure(String pressure) {
        this.pressure = pressure;
    }
    @Column(name = "humidity")
    public String getHumidity() {
        return humidity;
    }
    public void setHumidity(String humidity) {
        this.humidity = humidity;
    }
}

+ 137 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/weather/BaseWeatherWeekDO.java

@ -0,0 +1,137 @@
package com.yihu.jw.entity.care.weather;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by yeshijie on 2022/7/27.
 */
@Entity
@Table(name = "base_weather_week")
public class BaseWeatherWeekDO extends UuidIdentityEntityWithCreateTime {
    private String nums;//今日实时请求次数
    private String cityid;//城市ID
    private String city;//城市名称
    private String updateDate;//更新日期
    private String updateTime;//更新时间
    private String date;//预报日期
    private String wea;//天气情况
    private String weaImg;//天气标识(xue、lei、shachen、wu、bingbao、yun、yu、yin、qing)
    private String temDay;//白天温度(高温)
    private String temNight;//夜间温度(低温)
    private String win;//风向
    private String winSpeed;//风力
    @Column(name = "nums")
    public String getNums() {
        return nums;
    }
    public void setNums(String nums) {
        this.nums = nums;
    }
    @Column(name = "cityid")
    public String getCityid() {
        return cityid;
    }
    public void setCityid(String cityid) {
        this.cityid = cityid;
    }
    @Column(name = "city")
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    @Column(name = "date")
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    @Column(name = "update_date")
    public String getUpdateDate() {
        return updateDate;
    }
    public void setUpdateDate(String updateDate) {
        this.updateDate = updateDate;
    }
    @Column(name = "update_time")
    public String getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(String updateTime) {
        this.updateTime = updateTime;
    }
    @Column(name = "wea")
    public String getWea() {
        return wea;
    }
    public void setWea(String wea) {
        this.wea = wea;
    }
    @Column(name = "wea_img")
    public String getWeaImg() {
        return weaImg;
    }
    public void setWeaImg(String weaImg) {
        this.weaImg = weaImg;
    }
    @Column(name = "tem_day")
    public String getTemDay() {
        return temDay;
    }
    public void setTemDay(String temDay) {
        this.temDay = temDay;
    }
    @Column(name = "tem_night")
    public String getTemNight() {
        return temNight;
    }
    public void setTemNight(String temNight) {
        this.temNight = temNight;
    }
    @Column(name = "win")
    public String getWin() {
        return win;
    }
    public void setWin(String win) {
        this.win = win;
    }
    @Column(name = "win_speed")
    public String getWinSpeed() {
        return winSpeed;
    }
    public void setWinSpeed(String winSpeed) {
        this.winSpeed = winSpeed;
    }
}

+ 16 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/weather/BaseWeatherDayDao.java

@ -0,0 +1,16 @@
package com.yihu.jw.care.dao.weather;
import com.yihu.jw.entity.care.weather.BaseWeatherDayDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2022/7/27.
 */
public interface BaseWeatherDayDao extends PagingAndSortingRepository<BaseWeatherDayDO,String>,
        JpaSpecificationExecutor<BaseWeatherDayDO> {
    @Query("select a from BaseWeatherDayDO a where a.cityid=?1 and a.date=?2 ")
    BaseWeatherDayDO findByCityidAndDate(String cityid,String date);
}

+ 18 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/weather/BaseWeatherWeekDao.java

@ -0,0 +1,18 @@
package com.yihu.jw.care.dao.weather;
import com.yihu.jw.entity.care.weather.BaseWeatherWeekDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2022/7/27.
 */
public interface BaseWeatherWeekDao extends PagingAndSortingRepository<BaseWeatherWeekDO,String>,
        JpaSpecificationExecutor<BaseWeatherWeekDO> {
    @Query("select a from BaseWeatherWeekDO a where a.cityid=?1 and a.updateDate=?2 ")
    List<BaseWeatherWeekDO> findByCityidAndUpdateDate(String cityid, String updateDate);
}

+ 50 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/common/CommonController.java

@ -0,0 +1,50 @@
package com.yihu.jw.care.endpoint.common;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.util.WeatherUtil;
import com.yihu.jw.entity.care.weather.BaseWeatherDayDO;
import com.yihu.jw.entity.care.weather.BaseWeatherWeekDO;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * Created by yeshijie on 2022/7/28.
 */
@RestController
@RequestMapping(value = "/common", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(value = "无关业务的通用接口", tags = {"无关业务的通用接口"})
public class CommonController extends EnvelopRestEndpoint {
    private static final Logger logger = LoggerFactory.getLogger(CommonController.class);
    @Autowired
    private WeatherUtil weatherUtil;
    @GetMapping(value = "weather")
    @ApiOperation(value = "获取天气数据")
    public ObjEnvelop findWeather() {
        try {
            JSONObject json = new JSONObject();
            BaseWeatherDayDO weatherDayDO = weatherUtil.getWeatherDay(null,null);
            List<BaseWeatherWeekDO> weatherWeekDOList = weatherUtil.getWeatherWeek(null,null);
            json.put("weatherDayDO",weatherDayDO);
            json.put("weatherWeekDOList",weatherWeekDOList);
            return ObjEnvelop.getSuccess("获取成功",json);
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
}

+ 1 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/SpeechTtsUtil.java

@ -69,6 +69,7 @@ public class SpeechTtsUtil {
                req.setText(text);
                req.setSessionId(sessionId);
                req.setVoiceType(1009L);
                req.setSpeed(-1f);
                req.setVolume(10F);
                req.setCodec(codec);
                // 返回的resp是一个TextToVoiceResponse的实例,与请求对象对应

+ 155 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/WeatherUtil.java

@ -0,0 +1,155 @@
package com.yihu.jw.care.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.weather.BaseWeatherDayDao;
import com.yihu.jw.care.dao.weather.BaseWeatherWeekDao;
import com.yihu.jw.entity.care.weather.BaseWeatherDayDO;
import com.yihu.jw.entity.care.weather.BaseWeatherWeekDO;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * Created by yeshijie on 2022/7/27.
 */
@Component
public class WeatherUtil {
    private static final Logger logger = LoggerFactory.getLogger(WeatherUtil.class);
    //天气接口个人免费 每天限制500次
    public static final String baseUrl = "https://www.yiketianqi.com/";
    public static final String appid = "66754959";
    public static final String appsecret = "ejDIv6Oo";
    public static final String defaultCityid = "101210101";
    @Autowired
    private HttpClientUtil httpClientUtil;
    @Autowired
    private BaseWeatherDayDao weatherDayDao;
    @Autowired
    private BaseWeatherWeekDao weatherWeekDao;
    /**
     * 获取实况天气情况
     */
    public synchronized BaseWeatherDayDO getWeatherDay(String cityid,String date){
        try {
            if(StringUtils.isBlank(cityid)){
                cityid = defaultCityid;
            }
            if(StringUtils.isBlank(date)){
                date = DateUtil.getStringDateShort();
            }
            BaseWeatherDayDO dayDO = weatherDayDao.findByCityidAndDate(cityid,date);
            if(dayDO!=null){
                return dayDO;
            }
            //https://www.yiketianqi.com/free/day?appid=66754959&appsecret=ejDIv6Oo&unescape=1&cityid=101210101
            String url = baseUrl + "free/day?appid="+appid+"&appsecret="+appsecret+"&unescape=1&cityid="+cityid;
            String res = httpClientUtil.get(url,"UTF-8");
            logger.info("getWeatherDay:"+res);
            //{"nums":3,"cityid":"101210101","city":"杭州","date":"2022-07-27","week":"星期三","update_time":"14:35","wea":"多云","wea_img":"yun","tem":"37","tem_day":"38"
            // ,"tem_night":"28","win":"东风","win_speed":"2级","win_meter":"7km\/h","air":"118","pressure":"999","humidity":"50%"}
            JSONObject json = JSON.parseObject(res);
            dayDO = new BaseWeatherDayDO();
            dayDO.setCreateTime(new Date());
            dayDO.setNums(json.getInteger("nums")+"");
            dayDO.setCity(json.getString("city"));
            dayDO.setCityid(json.getString("cityid"));
            dayDO.setDate(json.getString("date"));
            dayDO.setWeek(json.getString("week"));
            dayDO.setUpdateTime(json.getString("update_time"));
            dayDO.setWea(json.getString("wea"));
            dayDO.setWeaImg(json.getString("wea_img"));
            dayDO.setTem(json.getString("tem"));
            dayDO.setTemNight(json.getString("tem_night"));
            dayDO.setTemDay(json.getString("tem_day"));
            dayDO.setWin(json.getString("win"));
            dayDO.setWinSpeed(json.getString("win_speed"));
            dayDO.setWinMeter(json.getString("win_meter"));
            dayDO.setAir(json.getString("air"));
            dayDO.setPressure(json.getString("pressure"));
            dayDO.setHumidity(json.getString("humidity"));
            weatherDayDao.save(dayDO);
            return dayDO;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
      }
    /**
     * 获取7天气情况
     */
    public synchronized List<BaseWeatherWeekDO> getWeatherWeek(String cityid,String date){
        try {
            if(StringUtils.isBlank(cityid)){
                cityid = defaultCityid;
            }
            if(StringUtils.isBlank(date)){
                date = DateUtil.getStringDateShort();
            }
            List<BaseWeatherWeekDO> weekDOS = weatherWeekDao.findByCityidAndUpdateDate(cityid,date);
            if(weekDOS!=null&&weekDOS.size()>0){
                return weekDOS;
            }
            //https://www.yiketianqi.com/free/week?unescape=1&appid=66754959&appsecret=ejDIv6Oo&cityid=101210101
            String url = baseUrl + "free/week?unescape=1&appid="+appid+"&appsecret="+appsecret+"&cityid="+cityid;
            String res = httpClientUtil.get(url,"UTF-8");
            logger.info("getWeatherWeek:"+res);
            //{"nums":4,"cityid":"101210101","city":"杭州","update_time":"2022-07-27 13:57:19","data":
            // [{"date":"2022-07-27","wea":"雷阵雨","wea_img":"yu","tem_day":"38","tem_night":"28","win":"东北风","win_speed":"3-4级转<3级"}
            // ,{"date":"2022-07-28","wea":"雷阵雨","wea_img":"yu","tem_day":"37","tem_night":"26","win":"东风","win_speed":"3-4级转<3级"}
            // ,{"date":"2022-07-29","wea":"晴","wea_img":"qing","tem_day":"38","tem_night":"26","win":"东北风","win_speed":"4-5级转3-4级"}
            // ,{"date":"2022-07-30","wea":"晴","wea_img":"qing","tem_day":"35","tem_night":"26","win":"东风","win_speed":"4-5级转<3级"}
            // ,{"date":"2022-07-31","wea":"多云","wea_img":"yun","tem_day":"35","tem_night":"26","win":"东北风","win_speed":"4-5级转<3级"}
            // ,{"date":"2022-08-01","wea":"雷阵雨转多云","wea_img":"yun","tem_day":"34","tem_night":"26","win":"东北风","win_speed":"3-4级转<3级"}
            // ,{"date":"2022-08-02","wea":"雷阵雨","wea_img":"yu","tem_day":"33","tem_night":"27","win":"东风","win_speed":"3-4级"}]}
            JSONObject jsonObject = JSON.parseObject(res);
            String city = jsonObject.getString("city");
            String nums = jsonObject.getInteger("nums")+"";
            String updateTime = jsonObject.getString("update_time");
            JSONArray data = jsonObject.getJSONArray("data");
            weekDOS = new ArrayList<>();
            for (int i=0;i<data.size();i++){
                JSONObject json = data.getJSONObject(i);
                BaseWeatherWeekDO weekDO = new BaseWeatherWeekDO();
                weekDO.setCity(city);
                weekDO.setCityid(cityid);
                weekDO.setUpdateDate(date);
                weekDO.setUpdateTime(updateTime);
                weekDO.setNums(nums);
                weekDO.setDate(json.getString("date"));
                weekDO.setWea(json.getString("wea"));
                weekDO.setWeaImg(json.getString("wea_img"));
                weekDO.setTemDay(json.getString("tem_day"));
                weekDO.setTemNight(json.getString("tem_night"));
                weekDO.setWin(json.getString("win"));
                weekDO.setWinSpeed(json.getString("win_speed"));
                weekDOS.add(weekDO);
            }
            if(weekDOS.size()>0){
                weatherWeekDao.save(weekDOS);
            }
            return weekDOS;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }
}

+ 16 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/weather/BaseWeatherDayDao.java

@ -0,0 +1,16 @@
package com.yihu.jw.care.dao.weather;
import com.yihu.jw.entity.care.weather.BaseWeatherDayDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2022/7/27.
 */
public interface BaseWeatherDayDao extends PagingAndSortingRepository<BaseWeatherDayDO,String>,
        JpaSpecificationExecutor<BaseWeatherDayDO> {
    @Query("select a from BaseWeatherDayDO a where a.cityid=?1 and a.date=?2 ")
    BaseWeatherDayDO findByCityidAndDate(String cityid,String date);
}

+ 18 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/dao/weather/BaseWeatherWeekDao.java

@ -0,0 +1,18 @@
package com.yihu.jw.care.dao.weather;
import com.yihu.jw.entity.care.weather.BaseWeatherWeekDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2022/7/27.
 */
public interface BaseWeatherWeekDao extends PagingAndSortingRepository<BaseWeatherWeekDO,String>,
        JpaSpecificationExecutor<BaseWeatherWeekDO> {
    @Query("select a from BaseWeatherWeekDO a where a.cityid=?1 and a.updateDate=?2 ")
    List<BaseWeatherWeekDO> findByCityidAndUpdateDate(String cityid, String updateDate);
}

+ 155 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/util/WeatherUtil.java

@ -0,0 +1,155 @@
package com.yihu.jw.care.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.weather.BaseWeatherDayDao;
import com.yihu.jw.care.dao.weather.BaseWeatherWeekDao;
import com.yihu.jw.entity.care.weather.BaseWeatherDayDO;
import com.yihu.jw.entity.care.weather.BaseWeatherWeekDO;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * Created by yeshijie on 2022/7/27.
 */
@Component
public class WeatherUtil {
    private static final Logger logger = LoggerFactory.getLogger(WeatherUtil.class);
    //天气接口个人免费 每天限制500次
    public static final String baseUrl = "https://www.yiketianqi.com/";
    public static final String appid = "66754959";
    public static final String appsecret = "ejDIv6Oo";
    public static final String defaultCityid = "101210101";
    @Autowired
    private HttpClientUtil httpClientUtil;
    @Autowired
    private BaseWeatherDayDao weatherDayDao;
    @Autowired
    private BaseWeatherWeekDao weatherWeekDao;
    /**
     * 获取实况天气情况
     */
    public synchronized BaseWeatherDayDO getWeatherDay(String cityid,String date){
        try {
            if(StringUtils.isBlank(cityid)){
                cityid = defaultCityid;
            }
            if(StringUtils.isBlank(date)){
                date = DateUtil.getStringDateShort();
            }
            BaseWeatherDayDO dayDO = weatherDayDao.findByCityidAndDate(cityid,date);
            if(dayDO!=null){
                return dayDO;
            }
            //https://www.yiketianqi.com/free/day?appid=66754959&appsecret=ejDIv6Oo&unescape=1&cityid=101210101
            String url = baseUrl + "free/day?appid="+appid+"&appsecret="+appsecret+"&unescape=1&cityid="+cityid;
            String res = httpClientUtil.get(url,"UTF-8");
            logger.info("getWeatherDay:"+res);
            //{"nums":3,"cityid":"101210101","city":"杭州","date":"2022-07-27","week":"星期三","update_time":"14:35","wea":"多云","wea_img":"yun","tem":"37","tem_day":"38"
            // ,"tem_night":"28","win":"东风","win_speed":"2级","win_meter":"7km\/h","air":"118","pressure":"999","humidity":"50%"}
            JSONObject json = JSON.parseObject(res);
            dayDO = new BaseWeatherDayDO();
            dayDO.setCreateTime(new Date());
            dayDO.setNums(json.getInteger("nums")+"");
            dayDO.setCity(json.getString("city"));
            dayDO.setCityid(json.getString("cityid"));
            dayDO.setDate(json.getString("date"));
            dayDO.setWeek(json.getString("week"));
            dayDO.setUpdateTime(json.getString("update_time"));
            dayDO.setWea(json.getString("wea"));
            dayDO.setWeaImg(json.getString("wea_img"));
            dayDO.setTem(json.getString("tem"));
            dayDO.setTemNight(json.getString("tem_night"));
            dayDO.setTemDay(json.getString("tem_day"));
            dayDO.setWin(json.getString("win"));
            dayDO.setWinSpeed(json.getString("win_speed"));
            dayDO.setWinMeter(json.getString("win_meter"));
            dayDO.setAir(json.getString("air"));
            dayDO.setPressure(json.getString("pressure"));
            dayDO.setHumidity(json.getString("humidity"));
            weatherDayDao.save(dayDO);
            return dayDO;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
      }
    /**
     * 获取7天气情况
     */
    public synchronized List<BaseWeatherWeekDO> getWeatherWeek(String cityid,String date){
        try {
            if(StringUtils.isBlank(cityid)){
                cityid = defaultCityid;
            }
            if(StringUtils.isBlank(date)){
                date = DateUtil.getStringDateShort();
            }
            List<BaseWeatherWeekDO> weekDOS = weatherWeekDao.findByCityidAndUpdateDate(cityid,date);
            if(weekDOS!=null&&weekDOS.size()>0){
                return weekDOS;
            }
            //https://www.yiketianqi.com/free/week?unescape=1&appid=66754959&appsecret=ejDIv6Oo&cityid=101210101
            String url = baseUrl + "free/week?unescape=1&appid="+appid+"&appsecret="+appsecret+"&cityid="+cityid;
            String res = httpClientUtil.get(url,"UTF-8");
            logger.info("getWeatherWeek:"+res);
            //{"nums":4,"cityid":"101210101","city":"杭州","update_time":"2022-07-27 13:57:19","data":
            // [{"date":"2022-07-27","wea":"雷阵雨","wea_img":"yu","tem_day":"38","tem_night":"28","win":"东北风","win_speed":"3-4级转<3级"}
            // ,{"date":"2022-07-28","wea":"雷阵雨","wea_img":"yu","tem_day":"37","tem_night":"26","win":"东风","win_speed":"3-4级转<3级"}
            // ,{"date":"2022-07-29","wea":"晴","wea_img":"qing","tem_day":"38","tem_night":"26","win":"东北风","win_speed":"4-5级转3-4级"}
            // ,{"date":"2022-07-30","wea":"晴","wea_img":"qing","tem_day":"35","tem_night":"26","win":"东风","win_speed":"4-5级转<3级"}
            // ,{"date":"2022-07-31","wea":"多云","wea_img":"yun","tem_day":"35","tem_night":"26","win":"东北风","win_speed":"4-5级转<3级"}
            // ,{"date":"2022-08-01","wea":"雷阵雨转多云","wea_img":"yun","tem_day":"34","tem_night":"26","win":"东北风","win_speed":"3-4级转<3级"}
            // ,{"date":"2022-08-02","wea":"雷阵雨","wea_img":"yu","tem_day":"33","tem_night":"27","win":"东风","win_speed":"3-4级"}]}
            JSONObject jsonObject = JSON.parseObject(res);
            String city = jsonObject.getString("city");
            String nums = jsonObject.getInteger("nums")+"";
            String updateTime = jsonObject.getString("update_time");
            JSONArray data = jsonObject.getJSONArray("data");
            weekDOS = new ArrayList<>();
            for (int i=0;i<data.size();i++){
                JSONObject json = data.getJSONObject(i);
                BaseWeatherWeekDO weekDO = new BaseWeatherWeekDO();
                weekDO.setCity(city);
                weekDO.setCityid(cityid);
                weekDO.setUpdateDate(date);
                weekDO.setUpdateTime(updateTime);
                weekDO.setNums(nums);
                weekDO.setDate(json.getString("date"));
                weekDO.setWea(json.getString("wea"));
                weekDO.setWeaImg(json.getString("wea_img"));
                weekDO.setTemDay(json.getString("tem_day"));
                weekDO.setTemNight(json.getString("tem_night"));
                weekDO.setWin(json.getString("win"));
                weekDO.setWinSpeed(json.getString("win_speed"));
                weekDOS.add(weekDO);
            }
            if(weekDOS.size()>0){
                weatherWeekDao.save(weekDOS);
            }
            return weekDOS;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }
}