diff --git a/jpahefengweather/pom.xml b/jpahefengweather/pom.xml index 3727fcb..1824715 100644 --- a/jpahefengweather/pom.xml +++ b/jpahefengweather/pom.xml @@ -150,6 +150,11 @@ mssql-jdbc 11.2.0.jre8 + + net.i2p.crypto + eddsa + 0.3.0 + diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/controller/WeatherController.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/controller/WeatherController.java index 9fb2f08..05bc63a 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/controller/WeatherController.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/controller/WeatherController.java @@ -2,13 +2,11 @@ package com.rehome.jpahefengweather.controller; import com.liuhuiyu.util.model.Result; -import com.liuhuiyu.util.web.AddressRoutingUtil; -import com.liuhuiyu.util.web.HttpUtil; import com.rehome.jpahefengweather.dto.BaseFindDto; import com.rehome.jpahefengweather.dto.BaseWeatherFindDto; import com.rehome.jpahefengweather.dto.ForecastWeatherDto; import com.rehome.jpahefengweather.dto.NowWeatherDto; -import com.rehome.jpahefengweather.entity.CityList; +import com.rehome.jpahefengweather.entity.HefengCity; import com.rehome.jpahefengweather.entity.NowWeather; import com.rehome.jpahefengweather.service.CityService; import com.rehome.jpahefengweather.service.WeatherService; @@ -36,8 +34,8 @@ public class WeatherController { * @Param: */ @GetMapping("/getCityList") - public Result> getCityList(){ - return Result.of(this.cityService.findAllCitys()); + public Result> getCityList(){ + return Result.of(this.cityService.findAllCity()); } //region 获取历史天气 diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/dao/CityRepository.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/dao/CityRepository.java index 1b2155a..8c0934b 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/dao/CityRepository.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/dao/CityRepository.java @@ -1,16 +1,19 @@ package com.rehome.jpahefengweather.dao; -import com.rehome.jpahefengweather.entity.CityList; +import com.rehome.jpahefengweather.entity.HefengCity; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + /** * 参数一 T :当前需要映射的实体 * 参数二 ID :当前映射的实体中的OID的类型 * */ -public interface CityRepository extends JpaRepository { +public interface CityRepository extends JpaRepository { //方法名称必须要遵循驼峰式命名规则,findBy(关键字)+属性名称(首字母大写)+查询条件(首字母大写) - CityList findByLocationId(String location_ID); + HefengCity findByLocationId(String location_ID); + List findByAdm1NameEn(String provinceCode); } diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/dao/ProvinceRepository.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/dao/ProvinceRepository.java new file mode 100644 index 0000000..2bcf314 --- /dev/null +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/dao/ProvinceRepository.java @@ -0,0 +1,17 @@ +package com.rehome.jpahefengweather.dao; + + +import com.rehome.jpahefengweather.entity.HefengProvince; +import org.springframework.data.jpa.repository.JpaRepository; + + +/** + * 参数一 T :当前需要映射的实体 + * 参数二 ID :当前映射的实体中的OID的类型 + * + */ +public interface ProvinceRepository extends JpaRepository { + + //方法名称必须要遵循驼峰式命名规则,findBy(关键字)+属性名称(首字母大写)+查询条件(首字母大写) + HefengProvince findByCode(String code); +} diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/ForecastWeather.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/ForecastWeather.java index 17bfcfc..3a90b91 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/ForecastWeather.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/ForecastWeather.java @@ -20,6 +20,12 @@ public class ForecastWeather implements Serializable { private String locationId; + private String province; + + private String city ; + + private String locationNameZh; + // 存放长文本 @Lob @Basic(fetch=FetchType.LAZY) diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/CityList.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/HefengCity.java similarity index 58% rename from jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/CityList.java rename to jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/HefengCity.java index ae04ff0..c4549f1 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/CityList.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/HefengCity.java @@ -1,22 +1,15 @@ package com.rehome.jpahefengweather.entity; -import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -import org.hibernate.annotations.Proxy; -import org.springframework.data.annotation.CreatedDate; -import org.springframework.data.annotation.LastModifiedDate; -import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.*; import java.io.Serializable; import java.util.Date; -@EntityListeners(AuditingEntityListener.class) -@Proxy(lazy = false) + @Data @Entity -//@Table(name="t_users") -public class CityList implements Serializable { +public class HefengCity implements Serializable { @Id private String locationId; @@ -47,12 +40,10 @@ public class CityList implements Serializable { private String adcode; // @CreatedDate -// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @Temporal(TemporalType.TIMESTAMP) private Date createDate; // @LastModifiedDate -// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @Temporal(TemporalType.TIMESTAMP) private Date lastUpdateDate; } diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/HefengProvince.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/HefengProvince.java new file mode 100644 index 0000000..4583011 --- /dev/null +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/HefengProvince.java @@ -0,0 +1,23 @@ +package com.rehome.jpahefengweather.entity; + +import lombok.Data; +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +@Data +@Entity +public class HefengProvince implements Serializable{ + @Id + private String code; + + private String name; + + private String url; + + @Temporal(TemporalType.TIMESTAMP) + private Date createDate; + + @Temporal(TemporalType.TIMESTAMP) + private Date lastUpdateDate; +} \ No newline at end of file diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/NowWeather.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/NowWeather.java index e33bb47..f066c1b 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/NowWeather.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/entity/NowWeather.java @@ -23,6 +23,12 @@ public class NowWeather implements Serializable { private String locationId; + private String province; + + private String city ; + + private String locationNameZh; + //存放长文本 @Lob @Basic(fetch=FetchType.LAZY) diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/CityService.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/CityService.java index 05195cd..51c2911 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/CityService.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/CityService.java @@ -1,15 +1,34 @@ package com.rehome.jpahefengweather.service; -import com.liuhuiyu.util.model.Result; -import com.rehome.jpahefengweather.entity.CityList; +import com.rehome.jpahefengweather.entity.HefengCity; +import com.rehome.jpahefengweather.entity.HefengProvince; import java.util.List; public interface CityService { - void saveCitys(List cityLists); + /** + * 保存省份列表 + * @param provinceList + */ + void saveProvinceList(List provinceList); + /** + * 保存城市列表 + * @param cityList + */ + void saveCityList(List cityList); + /** + * 查询全国3000+个市县区 + * @return List + */ + List findAllCity(); + /** + * 查询全国3000+个市县区 + * @return List + */ + List findCityByProvinceCode(String provinceCode); /** * 查询全国3000+个市县区 * @return List */ - List findAllCitys(); + List findAllProvince(); } diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/Impl/CityServiceImpl.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/Impl/CityServiceImpl.java index d994cd8..1c1cf02 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/Impl/CityServiceImpl.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/Impl/CityServiceImpl.java @@ -1,7 +1,9 @@ package com.rehome.jpahefengweather.service.Impl; import com.rehome.jpahefengweather.dao.CityRepository; -import com.rehome.jpahefengweather.entity.CityList; +import com.rehome.jpahefengweather.dao.ProvinceRepository; +import com.rehome.jpahefengweather.entity.HefengCity; +import com.rehome.jpahefengweather.entity.HefengProvince; import com.rehome.jpahefengweather.service.CityService; import org.springframework.stereotype.Service; @@ -10,44 +12,71 @@ import java.util.Date; import java.util.List; @Service -public class CityServiceImpl implements CityService { +public class CityServiceImpl implements CityService { @Resource private CityRepository cityRepository; + @Resource + private ProvinceRepository provinceRepository; + + @Override + public void saveProvinceList(List provinceList) { + Date nowTime = new Date(); + for (HefengProvince province : provinceList) { + HefengProvince provinceDb = this.provinceRepository.findByCode(province.getCode()); + if (provinceDb != null) { + provinceDb.setName(province.getName()); + provinceDb.setLastUpdateDate(nowTime); + this.provinceRepository.save(provinceDb); + }else{ + province.setLastUpdateDate(nowTime); + province.setCreateDate(nowTime); + this.provinceRepository.save(province); + } + } + } + @Override - public void saveCitys(List cityLists) { - if(cityLists!=null){ - Date now = new Date(); - for (CityList city:cityLists) { - CityList cityDB=this.cityRepository.findByLocationId(city.getLocationId()); - if(cityDB!=null){ - cityDB.setLocationNameEn(city.getLocationNameEn()); - cityDB.setLocationNameZh(city.getLocationNameZh()); - cityDB.setCountryCode(city.getCountryCode()); - cityDB.setCountryNameEn(city.getCountryNameEn()); - cityDB.setCountryNameZh(city.getCountryNameZh()); - cityDB.setAdm1NameEn(city.getAdm1NameEn()); - cityDB.setAdm1NameZh(city.getAdm1NameZh()); - cityDB.setAdm2NameEn(city.getAdm2NameEn()); - cityDB.setAdm2NameZh(city.getAdm2NameZh()); - cityDB.setTimezone(city.getTimezone()); - cityDB.setLatitude(city.getLatitude()); - cityDB.setLongitude(city.getLongitude()); - cityDB.setAdcode(city.getAdcode()); - cityDB.setLastUpdateDate(now); - cityDB.setCreateDate(now); - this.cityRepository.save(cityDB); - }else{ - city.setLastUpdateDate(now); - city.setCreateDate(now); - this.cityRepository.save(city); - } + public void saveCityList(List cityList) { + Date now = new Date(); + for (HefengCity city : cityList) { + HefengCity cityDB = this.cityRepository.findByLocationId(city.getLocationId()); + if (cityDB != null) { + cityDB.setLocationNameEn(city.getLocationNameEn()); + cityDB.setLocationNameZh(city.getLocationNameZh()); + cityDB.setCountryCode(city.getCountryCode()); + cityDB.setCountryNameEn(city.getCountryNameEn()); + cityDB.setCountryNameZh(city.getCountryNameZh()); + cityDB.setAdm1NameEn(city.getAdm1NameEn()); + cityDB.setAdm1NameZh(city.getAdm1NameZh()); + cityDB.setAdm2NameEn(city.getAdm2NameEn()); + cityDB.setAdm2NameZh(city.getAdm2NameZh()); + cityDB.setTimezone(city.getTimezone()); + cityDB.setLatitude(city.getLatitude()); + cityDB.setLongitude(city.getLongitude()); + cityDB.setAdcode(city.getAdcode()); + cityDB.setLastUpdateDate(now); + this.cityRepository.save(cityDB); + } else { + city.setLastUpdateDate(now); + city.setCreateDate(now); + this.cityRepository.save(city); } } } @Override - public List findAllCitys() { + public List findAllCity() { return this.cityRepository.findAll(); } + + @Override + public List findCityByProvinceCode(String provinceCode) { + return this.cityRepository.findByAdm1NameEn(provinceCode); + } + + @Override + public List findAllProvince() { + return this.provinceRepository.findAll(); + } } diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/Impl/WeatherServiceImpl.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/Impl/WeatherServiceImpl.java index 9221c64..1ff87c4 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/Impl/WeatherServiceImpl.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/Impl/WeatherServiceImpl.java @@ -1,21 +1,16 @@ package com.rehome.jpahefengweather.service.Impl; import com.google.gson.Gson; -import com.rehome.jpahefengweather.dao.CityRepository; import com.rehome.jpahefengweather.dao.ForecastWeatherRepository; import com.rehome.jpahefengweather.dao.NowWeatherRepository; import com.rehome.jpahefengweather.dto.ForecastWeatherDto; import com.rehome.jpahefengweather.dto.NowWeatherDto; -import com.rehome.jpahefengweather.entity.CityList; import com.rehome.jpahefengweather.entity.ForecastWeather; import com.rehome.jpahefengweather.entity.NowWeather; import com.rehome.jpahefengweather.service.WeatherService; -import org.hibernate.query.Query; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/ScheduledService.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/ScheduledService.java index 129328d..48355d6 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/ScheduledService.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/ScheduledService.java @@ -1,19 +1,13 @@ package com.rehome.jpahefengweather.service; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.liuhuiyu.spring_util.SpringUtil; -import com.liuhuiyu.util.string.StringUtil; import com.rehome.jpahefengweather.dto.NmcBaseDto; -import com.rehome.jpahefengweather.dto.NmcNowWeatherDto; -import com.rehome.jpahefengweather.dto.StormDataDto; import com.rehome.jpahefengweather.entity.*; -import com.rehome.jpahefengweather.service.Impl.NmcWeatherServiceImpl; import com.rehome.jpahefengweather.service.excel.*; +import com.rehome.jpahefengweather.utils.JwtUtils; import com.rehome.jpahefengweather.utils.OkHttpUtil; import okhttp3.*; import org.springframework.beans.factory.annotation.Value; @@ -25,13 +19,9 @@ import javax.annotation.Resource; import java.io.File; import java.io.IOException; import java.lang.reflect.Type; -import java.math.BigInteger; import java.text.SimpleDateFormat; import java.util.*; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; -import java.util.logging.Handler; -import java.util.logging.LogRecord; /** * @author huangwenfei @@ -69,7 +59,7 @@ public class ScheduledService { * @description: 定时任务 * @Param: null */ - //@Scheduled(cron = "0 30 * * * *")//每个小时执行一次 + //@Scheduled(cron = "0 32 * * * *")//每个小时执行一次 public void scheduled() { System.out.println("scheduled"); System.out.println("=====>>>>>使用cron:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); @@ -95,9 +85,35 @@ public class ScheduledService { ReadCityExcelXlsx readCityExcelXlsx = new ReadCityExcelXlsx(this.resourcesPath, "China-City-List-latest.xlsx"); //readCityExcelXlsx.testReadExcel(); - List excelReadCityExcelXlsx = readCityExcelXlsx.getCityLists(); - this.cityService.saveCitys(excelReadCityExcelXlsx); - + List excelReadCityExcelXlsx = readCityExcelXlsx.getCityLists(); + if(excelReadCityExcelXlsx!=null&&excelReadCityExcelXlsx.size()>0){ + this.cityService.saveCityList(excelReadCityExcelXlsx); + Map provinceCodeMap = new HashMap<>(); + for (HefengCity hefengCity :excelReadCityExcelXlsx) { + provinceCodeMap.put(hefengCity.getAdm1NameEn(),hefengCity.getAdm1NameZh()); + } + System.out.println(new Gson().toJson(provinceCodeMap)); + System.out.println(String.valueOf(provinceCodeMap.size())); + List provinceList = new ArrayList<>(); + for (String key : provinceCodeMap.keySet()) { + String provinceName = provinceCodeMap.get(key); + HefengProvince province = new HefengProvince(); + province.setCode(key); + province.setName(provinceName); + Date now = new Date(); + province.setCreateDate(now); + province.setLastUpdateDate(now); + provinceList.add(province); + } + if(provinceList.size()>0){ + this.cityService.saveProvinceList(provinceList); + } + List listCityByProvince = this.cityService.findCityByProvinceCode("Guangdong"); + System.out.println("----------"); + System.out.println(new Gson().toJson(listCityByProvince)); + System.out.println("广东省城市总数:"+String.valueOf(listCityByProvince.size())); + System.out.println("和风天气省份和城市数据同步成功"); + } } else { System.out.println("文件不存在"); } @@ -107,6 +123,11 @@ public class ScheduledService { } } + //@Scheduled(cron = "0/5 * * * * *")//每个小时执行一次 + public void scheduledGetJwt() { + String jwt = JwtUtils.getJwt(); + System.out.println(jwt); + } /** * @date 2022-03-16 09:41 * @description: 定时任务, 从和风天气获取实时天气预报,OkHttpClient异步获取,工具类封装网络请求 @@ -114,23 +135,24 @@ public class ScheduledService { */ //@Scheduled(cron = "0 0 10,14,18,20,22 * * *")//每天10,14,18,20,22点各执行一次,一天总共执行五次 //@Scheduled(cron = "0 0 0,8,12,16 * * *")//每天0,8,12,16点各执行一次,一天总共执行四次 + @Scheduled(cron = "0 15 * * * *")//每个小时执行一次 public void scheduledGetWeather() { System.out.println("scheduledGetWeather"); System.out.println("=====>>>>>使用cron:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - List citys = this.cityService.findAllCitys(); - if (citys != null && citys.size() > 0) { + List cityList = this.cityService.findCityByProvinceCode("Guangdong"); + if (cityList != null && cityList.size() > 0) { Date now = new Date(); - System.out.println(citys.size()); - for (int i = 0; i < citys.size(); i++) { - CityList city = citys.get(i); + System.out.println(cityList.size()); + for (int i = 0; i < cityList.size(); i++) { + HefengCity city = cityList.get(i); Map params = new HashMap<>(); //我的帐号: c67db396fcdb416c959933d29e30db3d //克金帐号: 3522d7d5736947d7a63e8d7d95316406 params.put("key", "c67db396fcdb416c959933d29e30db3d"); params.put("location", city.getLocationId()); - String weatherData = OkHttpUtil.get("https://devapi.qweather.com/v7/weather/now", params); - //System.out.println(weatherData); + String weatherData = OkHttpUtil.get("https://m573jftdb9.re.qweatherapi.com/v7/weather/now", params); + System.out.println(weatherData); try { Thread.sleep(200); } catch (Exception e) { @@ -148,6 +170,10 @@ public class ScheduledService { nowWeather.setWeather(weatherData); nowWeather.setCreateDate(now); nowWeather.setLastUpdateDate(now); + + nowWeather.setProvince(city.getAdm1NameZh()); + nowWeather.setCity(city.getAdm2NameZh()); + nowWeather.setLocationNameZh(city.getLocationNameZh()); this.weatherService.saveNowWeather(nowWeather); // } } else { @@ -163,21 +189,22 @@ public class ScheduledService { * @Param: null */ //@Scheduled(cron = "0 0 9 * * *")//每天9点执行一次 + @Scheduled(cron = "0 16 * * * *")//每个小时执行一次 public void scheduledGetForecastWeather() { System.out.println("scheduledGetForecastWeather"); System.out.println("=====>>>>>使用cron:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - List citys = this.cityService.findAllCitys(); + List citys = this.cityService.findAllCity(); if (citys != null && citys.size() > 0) { Date now = new Date(); System.out.println(citys.size()); for (int i = 0; i < citys.size(); i++) { - CityList city = citys.get(i); + HefengCity city = citys.get(i); Map params = new HashMap<>(); //c67db396fcdb416c959933d29e30db3d params.put("key", "c67db396fcdb416c959933d29e30db3d"); params.put("location", city.getLocationId()); - String weatherData = OkHttpUtil.get("https://devapi.qweather.com/v7/weather/7d", params); + String weatherData = OkHttpUtil.get("https://m573jftdb9.re.qweatherapi.com/v7/weather/7d", params); //System.out.println(weatherData); try { Thread.sleep(500); @@ -196,6 +223,10 @@ public class ScheduledService { forecastWeather.setWeather(weatherData); forecastWeather.setLastUpdateDate(now); forecastWeather.setCreateDate(now); + + forecastWeather.setProvince(city.getAdm1NameZh()); + forecastWeather.setCity(city.getAdm2NameZh()); + forecastWeather.setLocationNameZh(city.getLocationNameZh()); this.weatherService.saveForecastWeather(forecastWeather); //} } else { @@ -778,7 +809,7 @@ public class ScheduledService { * @description: 从温州气象台获取台风列表 * @Param: null */ - @Scheduled(cron = "0 30 * * * *") + //@Scheduled(cron = "0 30 * * * *") public void getWztfHistoryStormList() { for(int i=1945;i<2025;i++){ getWztfStormList(String.valueOf(i)); diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/WeatherService.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/WeatherService.java index 42da43d..9764320 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/WeatherService.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/WeatherService.java @@ -2,7 +2,6 @@ package com.rehome.jpahefengweather.service; import com.rehome.jpahefengweather.dto.ForecastWeatherDto; import com.rehome.jpahefengweather.dto.NowWeatherDto; -import com.rehome.jpahefengweather.entity.CityList; import com.rehome.jpahefengweather.entity.ForecastWeather; import com.rehome.jpahefengweather.entity.NowWeather; diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/excel/ReadCityExcelXls.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/excel/ReadCityExcelXls.java index 9e73cb5..0eb692e 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/excel/ReadCityExcelXls.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/excel/ReadCityExcelXls.java @@ -9,7 +9,7 @@ import java.util.ArrayList; import java.util.List; import com.google.gson.Gson; -import com.rehome.jpahefengweather.entity.CityList; +import com.rehome.jpahefengweather.entity.HefengCity; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; @@ -34,14 +34,14 @@ public class ReadCityExcelXls { System.out.println("excel文件不存在"); return; } - List excelList = this.readExcel(file); + List excelList = this.readExcel(file); System.out.println("list中的数据打印出来"); if(excelList!=null&&excelList.size()>0){ System.out.println(String.valueOf(excelList.size())); } if(excelList!=null){ for (int i = 0; i < excelList.size(); i++) { - CityList city = excelList.get(i); + HefengCity city = excelList.get(i); Gson gson = new Gson(); System.out.print(gson.toJson(city)); System.out.println(); @@ -49,19 +49,19 @@ public class ReadCityExcelXls { } } - public List getCityLists() { + public List getCityLists() { // 要读取的Excel文件路径 File file = new File(this.filePath); if (!file.exists()) { System.out.println("excel文件不存在"); return null; } - List excelList = this.readExcel(file); + List excelList = this.readExcel(file); return excelList; } // 去读Excel的方法readExcel,该方法的入口参数为一个File对象 - public List readExcel(File file) { + public List readExcel(File file) { try { //用流的方式先读取到你想要的excel的文件 FileInputStream fis=new FileInputStream(file); @@ -72,7 +72,7 @@ public class ReadCityExcelXls { // Excel的页签数量 int sheet_size = hb.getNumberOfSheets(); for (int index = 0; index < sheet_size; index++) { - List outerList = new ArrayList(); + List outerList = new ArrayList(); // 每个页签创建一个Sheet对象 HSSFSheet sheet=hb.getSheetAt(index); //获取第一行 @@ -84,7 +84,7 @@ public class ReadCityExcelXls { if(i==0){ continue; } - CityList city = new CityList(); + HefengCity city = new HefengCity(); //获取哪一行i Row row=sheet.getRow(i); if (row!=null) { diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/excel/ReadCityExcelXlsx.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/excel/ReadCityExcelXlsx.java index 9186a69..9e33769 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/excel/ReadCityExcelXlsx.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/excel/ReadCityExcelXlsx.java @@ -9,7 +9,7 @@ import java.util.ArrayList; import java.util.List; import com.google.gson.Gson; -import com.rehome.jpahefengweather.entity.CityList; +import com.rehome.jpahefengweather.entity.HefengCity; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; @@ -34,14 +34,14 @@ public class ReadCityExcelXlsx { System.out.println("excel文件不存在"); return; } - List excelList = this.readExcel(file); + List excelList = this.readExcel(file); System.out.println("list中的数据打印出来"); if (excelList != null && excelList.size() > 0) { System.out.println(String.valueOf(excelList.size())); } if(excelList!=null){ for (int i = 0; i < excelList.size(); i++) { - CityList city = excelList.get(i); + HefengCity city = excelList.get(i); Gson gson = new Gson(); System.out.print(gson.toJson(city)); System.out.println(); @@ -49,19 +49,19 @@ public class ReadCityExcelXlsx { } } - public List getCityLists() { + public List getCityLists() { // 要读取的Excel文件路径 File file = new File(this.filePath); if (!file.exists()) { System.out.println("excel文件不存在"); return null; } - List excelList = this.readExcel(file); + List excelList = this.readExcel(file); return excelList; } // 去读Excel的方法readExcel,该方法的入口参数为一个File对象 - public List readExcel(File file) { + public List readExcel(File file) { try { //用流的方式先读取到你想要的excel的文件 FileInputStream fis = new FileInputStream(file); @@ -70,7 +70,7 @@ public class ReadCityExcelXlsx { // Excel的页签数量 int sheet_size = workbook.getNumberOfSheets(); for (int index = 0; index < sheet_size; index++) { - List outerList = new ArrayList(); + List outerList = new ArrayList(); // 每个页签创建一个Sheet对象 XSSFSheet sheet = workbook.getSheetAt(index); //获取第一行 @@ -82,7 +82,7 @@ public class ReadCityExcelXlsx { if(i==0){ continue; } - CityList city = new CityList(); + HefengCity city = new HefengCity(); //获取哪一行i Row row = sheet.getRow(i); if (row != null) { diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/excel/ReadExcelXls.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/excel/ReadExcelXls.java index ee5596d..00b79e6 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/excel/ReadExcelXls.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/service/excel/ReadExcelXls.java @@ -7,7 +7,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import com.rehome.jpahefengweather.entity.CityList; +import com.rehome.jpahefengweather.entity.HefengCity; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; @@ -32,7 +32,7 @@ public class ReadExcelXls { System.out.println("excel文件不存在"); return; } - List excelList = this.readExcel(file); + List excelList = this.readExcel(file); System.out.println("list中的数据打印出来"); if(excelList!=null&&excelList.size()>0){ System.out.println(String.valueOf(excelList.size())); diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/utils/JwtUtils.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/utils/JwtUtils.java new file mode 100644 index 0000000..e241ca5 --- /dev/null +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/utils/JwtUtils.java @@ -0,0 +1,66 @@ +package com.rehome.jpahefengweather.utils; + +import net.i2p.crypto.eddsa.EdDSAEngine; +import net.i2p.crypto.eddsa.EdDSAPrivateKey; +import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable; +import net.i2p.crypto.eddsa.spec.EdDSAParameterSpec; +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; +import org.springframework.lang.NonNull; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.PrivateKey; +import java.security.Signature; +import java.security.spec.PKCS8EncodedKeySpec; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; +import java.util.Base64; + +public class JwtUtils { + public static String getJwt(){ + try { + // Private key + String privateKeyString = "MC4CAQAwBQYDK2VwBCIEIOtI2Yuhkyor4Zfny9OUMbzMmZCEJ7hqIpuoDhk0zYcy"; + privateKeyString = privateKeyString.trim().replace("-----BEGIN PRIVATE KEY-----", "").replace("-----END PRIVATE KEY-----", "").trim(); + byte[] privateKeyBytes = Base64.getDecoder().decode(privateKeyString); + PKCS8EncodedKeySpec encoded = new PKCS8EncodedKeySpec(privateKeyBytes); + PrivateKey privateKey = new EdDSAPrivateKey(encoded); + + // Header + String headerJson = "{\"alg\": \"EdDSA\", \"kid\": \"C4B98RHV2D\"}"; + + // Payload + long iat = ZonedDateTime.now(ZoneOffset.UTC).toEpochSecond() - 30; + long exp = iat + 900; + String payloadJson = "{\"sub\": \"278AVHGU9W\", \"iat\": " + iat + ", \"exp\": " + exp + "}"; + + // Base64url header+payload + String headerEncoded = Base64.getUrlEncoder().encodeToString(headerJson.getBytes(StandardCharsets.UTF_8)); + String payloadEncoded = Base64.getUrlEncoder().encodeToString(payloadJson.getBytes(StandardCharsets.UTF_8)); + String data = headerEncoded + "." + payloadEncoded; + + EdDSAParameterSpec spec = EdDSANamedCurveTable.getByName(EdDSANamedCurveTable.ED_25519); + + // Sign + final Signature s = new EdDSAEngine(MessageDigest.getInstance(spec.getHashAlgorithm())); + s.initSign(privateKey); + s.update(data.getBytes(StandardCharsets.UTF_8)); + byte[] signature = s.sign(); + + String signatureString = Base64.getUrlEncoder().encodeToString(signature); + + System.out.println("Signature: \n" + signatureString); + + // Print Token + String jwt = data + "." + signatureString; + System.out.println("JWT: \n" + jwt); + return jwt; + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } +} diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/utils/OkHttpConfig.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/utils/OkHttpConfig.java index d30da45..bd366c7 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/utils/OkHttpConfig.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/utils/OkHttpConfig.java @@ -1,5 +1,6 @@ package com.rehome.jpahefengweather.utils; +import java.io.IOException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; @@ -12,10 +13,10 @@ import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import com.liuhuiyu.spring_util.SpringUtil; -import okhttp3.ConnectionPool; -import okhttp3.OkHttpClient; +import okhttp3.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.lang.NonNull; /** * Created by qhong on 2018/7/3 16:52 @@ -76,6 +77,7 @@ public class OkHttpConfig { @Bean public OkHttpClient okHttpClient() { return new OkHttpClient.Builder() + .addNetworkInterceptor(new TokenHeaderInterceptor()) .sslSocketFactory(sslSocketFactory(), x509TrustManager()) .retryOnConnectionFailure(true)//是否开启缓存 .connectionPool(pool())//连接池 @@ -83,4 +85,20 @@ public class OkHttpConfig { .readTimeout(30L, TimeUnit.SECONDS) .build(); } + public static class TokenHeaderInterceptor implements Interceptor { + @NonNull + @Override + public Response intercept(@NonNull Chain chain) throws IOException { + Request originalRequest = chain.request(); + String token = JwtUtils.getJwt(); + if(token!=null){ + System.out.println("token:"); + System.out.println(token); + String credential = "Bearer " + token; + Request updateRequest = originalRequest.newBuilder().header("Authorization", credential).build(); + return chain.proceed(updateRequest); + } + return chain.proceed(originalRequest); + } + } } \ No newline at end of file diff --git a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/utils/OkHttpUtil.java b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/utils/OkHttpUtil.java index 2f40152..389c240 100644 --- a/jpahefengweather/src/main/java/com/rehome/jpahefengweather/utils/OkHttpUtil.java +++ b/jpahefengweather/src/main/java/com/rehome/jpahefengweather/utils/OkHttpUtil.java @@ -1,15 +1,12 @@ package com.rehome.jpahefengweather.utils; +import java.io.IOException; import java.util.Iterator; import java.util.Map; import com.liuhuiyu.spring_util.SpringUtil; -import okhttp3.FormBody; -import okhttp3.MediaType; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; +import okhttp3.*; +import org.springframework.lang.NonNull; /** * Created by qhong on 2018/7/3 16:55 @@ -130,4 +127,6 @@ public class OkHttpUtil{ .build(); return execNewCall(request); } + + } diff --git a/jpahefengweather/src/main/resources/application.yml b/jpahefengweather/src/main/resources/application.yml index 7fbe63f..e4ea79c 100644 --- a/jpahefengweather/src/main/resources/application.yml +++ b/jpahefengweather/src/main/resources/application.yml @@ -14,7 +14,7 @@ spring: #url: jdbc:mysql://192.168.1.28:3340/hefengweather?useUnicode=true&characterEncoding=utf-8&useSSL=false # url: jdbc:mysql://192.168.1.71:2881/hefengweather?useUnicode=true&characterEncoding=utf-8&useSSL=false driverClassName: com.mysql.cj.jdbc.Driver #com.mysql.cj.jdbc.Driver com.mysql.jdbc.Driver - url: jdbc:mysql://192.168.2.18:3306/nmcweather?useUnicode=true&characterEncoding=utf-8&useSSL=false + url: jdbc:mysql://127.0.0.1:3306/hefengweather?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: Skyinno251, # driverClassName: oracle.jdbc.driver.OracleDriver @@ -73,4 +73,4 @@ spring: hibernate: ddl-auto: update # 第一次建表create 后面用update,要不然每次重启都会新建表 rehome: - resources-path: /Users/wenfeihuang/storage # 外部资源文件存储路径 格式:/Users/edao/storage \ No newline at end of file + resources-path: /Users/edao/storage # 外部资源文件存储路径 格式:/Users/edao/storage \ No newline at end of file diff --git a/jpahefengweather/src/test/java/com/rehome/jpahefengweather/controller/WeatherControllerTest.java b/jpahefengweather/src/test/java/com/rehome/jpahefengweather/controller/WeatherControllerTest.java index 908efef..7e9a0c2 100644 --- a/jpahefengweather/src/test/java/com/rehome/jpahefengweather/controller/WeatherControllerTest.java +++ b/jpahefengweather/src/test/java/com/rehome/jpahefengweather/controller/WeatherControllerTest.java @@ -1,9 +1,8 @@ package com.rehome.jpahefengweather.controller; -import com.google.gson.Gson; import com.liuhuiyu.test.BaseServiceTest; import com.liuhuiyu.util.model.Result; -import com.rehome.jpahefengweather.entity.CityList; +import com.rehome.jpahefengweather.entity.HefengCity; import com.rehome.jpahefengweather.service.CityService; import com.rehome.jpahefengweather.utils.TimestampUtil; import org.apache.logging.log4j.LogManager; @@ -54,8 +53,8 @@ public class WeatherControllerTest extends BaseServiceTest { Timestamp endTime = TimestampUtil.beginTime(end); - Result> result = this.weatherController.getCityList(); - List citys = result.getData(); + Result> result = this.weatherController.getCityList(); + List citys = result.getData(); //LOG.info("{}",new Gson().toJson(citys)); System.out.println(citys.size()); }catch (Exception e){