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){