13 Commits

Author SHA1 Message Date
59208d80ba 。。。 2023-05-15 21:03:23 +08:00
cba061e177 xxx 2022-12-16 15:51:44 +08:00
c988bf4c91 加入使用代理功能,修改json格式! 2022-11-04 16:11:18 +08:00
628b08e1ef 完成json配置文件的读取。 2022-11-04 15:06:03 +08:00
7dce36562c 保存进度! 2022-11-04 11:50:52 +08:00
9b0d6a8c6d 保存进度! 2022-11-04 11:39:28 +08:00
3b1844c994 和风天气json结构变更。 2022-06-07 14:03:35 +08:00
db8f9e9c05 保存进度! 2022-05-17 10:39:53 +08:00
4c0cb3c76e 保存进度! 2022-05-13 17:44:23 +08:00
65431a0f0e 增加要查询的城市清单。 2022-05-12 18:17:24 +08:00
cd8bcb8ba0 Merge branch 'develop' of http://cppdisciple.f3322.org:3000/CPICXIM/disaster_warrning into develop 2022-05-12 10:10:23 +08:00
e800558a32 修改数据保存方式! 2022-05-12 10:09:35 +08:00
b993638e5b 提交小修改! 2022-05-11 23:10:01 +08:00
20 changed files with 532 additions and 238 deletions

View File

@@ -1,6 +1,6 @@
{ {
"java.configuration.updateBuildConfiguration": "automatic", "java.configuration.updateBuildConfiguration": "automatic",
"java.format.settings.url": "D:\\工作文档\\配置备份\\vscode\\eclipse-java-google-style.xml", "java.format.settings.url": "E:\\工作文档\\4、配置备份\\vscode\\eclipse-java-google-style.xml",
"[java]": { "[java]": {
"editor.detectIndentation": true "editor.detectIndentation": true
} }

View File

@@ -4,10 +4,24 @@
"query_url": "https://devapi.qweather.com/v7/warning/now?", "query_url": "https://devapi.qweather.com/v7/warning/now?",
"wechat_officalaccount_url": "https://cxxmwx.cpic.com.cn/app/index.php?i=2&c=entry&do=send_group_tpl_api&m=ok_tplmessage", "wechat_officalaccount_url": "https://cxxmwx.cpic.com.cn/app/index.php?i=2&c=entry&do=send_group_tpl_api&m=ok_tplmessage",
"query_interval": 10, "query_interval": 10,
"proxy_setting": {
"enable": true,
"proxy_mode": "http",
"proxy_address": "172.16.39.2",
"proxy_port": 18080
},
"cities": [ "cities": [
{ {
"city_name": "厦门", "city_name": "厦门",
"city_code": "101230201" "city_code": "101230201"
},
{
"city_name": "同安",
"city_code": "101230202"
},
{
"city_name": "翔安",
"city_code": "101230207"
} }
], ],
"notify_stuffs": [ "notify_stuffs": [

View File

@@ -21,17 +21,13 @@
<SOURCES /> <SOURCES />
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="library" name="Maven: com.oracle:ojdbc8:19.3.0.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.13" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.13" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" /> <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13.2" level="project" /> <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" /> <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:20040616" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.8" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.8" level="project" />

View File

@@ -225,11 +225,6 @@
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" /> <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository> </remote-repository>
</component> </component>
<component name="SwUserDefinedSpecifications">
<option name="specTypeByUrl">
<map />
</option>
</component>
<component name="VcsDirectoryMappings"> <component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" /> <mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
</component> </component>
@@ -267,15 +262,15 @@
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8-sources.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8-sources.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
<library name="Maven: commons-beanutils:commons-beanutils:1.9.4"> <library name="Maven: com.oracle:ojdbc8:19.3.0.0.0">
<CLASSES> <CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/com/oracle/ojdbc8/19.3.0.0.0/ojdbc8-19.3.0.0.0.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC> <JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4-javadoc.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/com/oracle/ojdbc8/19.3.0.0.0/ojdbc8-19.3.0.0.0-javadoc.jar!/" />
</JAVADOC> </JAVADOC>
<SOURCES> <SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4-sources.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/com/oracle/ojdbc8/19.3.0.0.0/ojdbc8-19.3.0.0.0-sources.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
<library name="Maven: commons-codec:commons-codec:1.11"> <library name="Maven: commons-codec:commons-codec:1.11">
@@ -289,37 +284,15 @@
<root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11-sources.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11-sources.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
<library name="Maven: commons-collections:commons-collections:20040616"> <library name="Maven: commons-logging:commons-logging:1.2">
<CLASSES> <CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/20040616/commons-collections-20040616.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.2/commons-logging-1.2.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC> <JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/20040616/commons-collections-20040616-javadoc.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.2/commons-logging-1.2-javadoc.jar!/" />
</JAVADOC> </JAVADOC>
<SOURCES> <SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/20040616/commons-collections-20040616-sources.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.2/commons-logging-1.2-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: commons-lang:commons-lang:2.6">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: commons-logging:commons-logging:1.1.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
<library name="Maven: junit:junit:4.13.2"> <library name="Maven: junit:junit:4.13.2">
@@ -333,28 +306,6 @@
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13.2/junit-4.13.2-sources.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13.2/junit-4.13.2-sources.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
<library name="Maven: net.sf.ezmorph:ezmorph:1.0.6">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: net.sf.json-lib:json-lib:jdk15:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/json-lib/json-lib/2.4/json-lib-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/json-lib/json-lib/2.4/json-lib-2.4-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.apache.httpcomponents:httpclient:4.5.13"> <library name="Maven: org.apache.httpcomponents:httpclient:4.5.13">
<CLASSES> <CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar!/" />

View File

@@ -7,4 +7,4 @@ java.util.logging.FileHandler.pattern = ./logs/log_%u.log
java.util.logging.FileHandler.limit = 50000 java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.append = true; java.util.logging.FileHandler.append = true

View File

@@ -1,14 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.cpic.xim</groupId> <groupId>com.cpic.xim</groupId>
<artifactId>disaster_warning</artifactId> <artifactId>disaster_warning</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.1</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.oracle</groupId> <groupId>com.oracle</groupId>
<artifactId>ojdbc8</artifactId> <artifactId>ojdbc8</artifactId>
<version>19.3.0.0.0</version> <version>19.3.0.0.0</version>
<!-- <scope>system</scope>
<systemPath>${project.basedir}/lib/ojdbc8.jar</systemPath> -->
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.httpcomponents</groupId> <groupId>org.apache.httpcomponents</groupId>
@@ -21,20 +25,23 @@
<version>4.13.2</version> <version>4.13.2</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <!--jackson-->
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.8</version>
</dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId> <artifactId>jackson-databind</artifactId>
<version>2.9.8</version> <version>2.14.2</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId> <artifactId>jackson-annotations</artifactId>
<version>2.9.8</version> <version>2.13.4</version>
</dependency> </dependency>
</dependencies> </dependencies>
<properties> <properties>

View File

@@ -1,8 +1,9 @@
/* /*
* @Author: Kane * @Author: Kane
* @Date: 2022-04-22 10:53:49 * @Date: 2022-04-22 10:53:49
* @LastEditors: Kane * @LastEditors: Kane
* @LastEditTime: 2022-05-10 19:03:56 * @LastEditTime: 2022-11-04 11:50:17
* @FilePath: \DisasterWarning\src\main\java\AppMain.java * @FilePath: \DisasterWarning\src\main\java\AppMain.java
* @Description: 和风天气预警推送厦门太保公众号主程序! * @Description: 和风天气预警推送厦门太保公众号主程序!
* *
@@ -21,7 +22,6 @@ import java.sql.SQLException;
import java.util.Vector; import java.util.Vector;
import java.util.logging.*; import java.util.logging.*;
public class AppMain public class AppMain
{ {
// private final static String LOG_FILE_PATH = "./logs/app%u.log"; // private final static String LOG_FILE_PATH = "./logs/app%u.log";
@@ -74,7 +74,7 @@ public class AppMain
try try
{ {
json = WeatherDisasterWarningGrabber.getWeatherDisasterWarningJSON( queryURL, json = WeatherDisasterWarningGrabber.getWeatherDisasterWarningJSON( queryURL,
userKey, city.getCityCode() ); userKey, city.getCityCode(), config.getProxySetting() );
warning = WeatherDisasterWarningGrabber.convertWeatherDisasterWarning( json ); warning = WeatherDisasterWarningGrabber.convertWeatherDisasterWarning( json );
logger.log( Level.INFO, "查询{0}天气预警,结果:{1}。", new Object[] logger.log( Level.INFO, "查询{0}天气预警,结果:{1}。", new Object[]
@@ -111,10 +111,10 @@ public class AppMain
logger.log( Level.INFO, "{0}天气预警,日志发送成功。", new Object[] logger.log( Level.INFO, "{0}天气预警,日志发送成功。", new Object[]
{ city.getCityName()} ); { city.getCityName()} );
}
// 将发送的警报,保存起来 // 将发送的警报,保存起来
sendMessage.saveWeatherDisasterWarning( city.getCityName(), warning ); sendMessage.saveWeatherDisasterWarning( city.getCityName(), item );
}
} }
catch ( IOException error ) catch ( IOException error )
{ {

View File

@@ -0,0 +1,116 @@
/*
* @Author: Kane
* @Date: 2022-11-04 14:18:19
* @LastEditors: Kane
* @LastEditTime: 2022-11-04 15:01:58
* @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\config\db\ProxySetting.java
* @Description: 用于存放代理服务器设置的类。
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.config;
import com.fasterxml.jackson.annotation.*;;
/*****************************************************
* 用于存放代理服务器设置的类。
*****************************************************/
public class ProxySetting
{
public ProxySetting()
{}
public boolean isEnable()
{
return enable;
}
public void setEnable( boolean enable )
{
this.enable = enable;
}
public String getProxyMode()
{
return proxyMode;
}
public void setProxyMode( String proxyMode )
{
this.proxyMode = proxyMode;
}
public String getProxyAddress()
{
return proxyAddress;
}
public void setProxyAddress( String proxy_address )
{
this.proxyAddress = proxy_address;
}
public int getProxyPort()
{
return proxyPort;
}
public void setProxyPort( int proxy_port )
{
this.proxyPort = proxy_port;
}
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + (enable ? 1231 : 1237);
result = prime * result + ((proxyMode == null) ? 0 : proxyMode.hashCode());
result = prime * result + ((proxyAddress == null) ? 0 : proxyAddress.hashCode());
result = prime * result + proxyPort;
return result;
}
@Override
public boolean equals( Object obj )
{
if ( this == obj)
return true;
if ( obj == null)
return false;
if ( getClass() != obj.getClass())
return false;
ProxySetting other = (ProxySetting) obj;
if ( enable != other.enable)
return false;
if ( proxyMode == null)
{
if ( other.proxyMode != null)
return false;
} else if ( !proxyMode.equals( other.proxyMode ))
return false;
if ( proxyAddress == null)
{
if ( other.proxyAddress != null)
return false;
} else if ( !proxyAddress.equals( other.proxyAddress ))
return false;
if ( proxyPort != other.proxyPort)
return false;
return true;
}
@JsonProperty( "enable")
private boolean enable = true;
@JsonProperty( "proxy_mode")
private String proxyMode = "http";
@JsonProperty( "proxy_address")
private String proxyAddress;
@JsonProperty( "proxy_port")
private int proxyPort;
}

View File

@@ -2,7 +2,7 @@
* @Author: Kane * @Author: Kane
* @Date: 2022-04-24 10:21:46 * @Date: 2022-04-24 10:21:46
* @LastEditors: Kane * @LastEditors: Kane
* @LastEditTime: 2022-05-10 16:16:28 * @LastEditTime: 2022-11-04 15:03:05
* @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\config\WeatherDisasterNotifyConfig.java * @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\config\WeatherDisasterNotifyConfig.java
* @Description: * @Description:
* *
@@ -11,7 +11,6 @@
package com.cpic.xim.config; package com.cpic.xim.config;
import java.util.Vector; import java.util.Vector;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
@@ -67,6 +66,15 @@ public class WeatherDisasterNotifyConfig
this.queryInterval = queryInterval; this.queryInterval = queryInterval;
} }
public ProxySetting getProxySetting()
{
return proxySetting;
}
public void setProxySetting( ProxySetting proxySetting )
{
this.proxySetting = proxySetting;
}
public void setCities( Vector<City> cities ) public void setCities( Vector<City> cities )
{ {
@@ -105,6 +113,9 @@ public class WeatherDisasterNotifyConfig
@JsonProperty( "query_interval") @JsonProperty( "query_interval")
private int queryInterval; private int queryInterval;
@JsonProperty( "proxy_setting")
private ProxySetting proxySetting;
@JsonProperty( "wechat_officalaccount_url") @JsonProperty( "wechat_officalaccount_url")
private String wechatOfficalAccountURL; private String wechatOfficalAccountURL;

View File

@@ -2,7 +2,7 @@
* @Author: Kane * @Author: Kane
* @Date: 2022-04-25 21:45:12 * @Date: 2022-04-25 21:45:12
* @LastEditors: Kane * @LastEditors: Kane
* @LastEditTime: 2022-05-03 22:34:37 * @LastEditTime: 2022-11-04 14:51:25
* @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\config\db\OracleConfigManager.java * @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\config\db\OracleConfigManager.java
* @Description: oracle数据库配置文件加载类 * @Description: oracle数据库配置文件加载类
* *

View File

@@ -2,7 +2,7 @@
* @Author: Kane * @Author: Kane
* @Date: 2022-04-22 09:54:05 * @Date: 2022-04-22 09:54:05
* @LastEditors: Kane * @LastEditors: Kane
* @LastEditTime: 2022-04-22 16:18:17 * @LastEditTime: 2022-11-04 11:48:28
* @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\httpUtil\HttpUtils.java * @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\httpUtil\HttpUtils.java
* @Description: http相关的工具类。 * @Description: http相关的工具类。
* Copyright (c) ${2022} by Kane, All Rights Reserved. * Copyright (c) ${2022} by Kane, All Rights Reserved.
@@ -22,85 +22,71 @@ import java.nio.charset.StandardCharsets;
/** /**
* Http相关的工具类。 * Http相关的工具类。
*/ */
public class HttpUtils public class HttpUtils {
{
/** /**
* 以POST方式发送http请求 * 以POST方式发送http请求
* @param url 访问的链接字符串 *
* @param url 访问的链接字符串
* @param headers 请求头部参数集合 * @param headers 请求头部参数集合
* @param params 请求体字符串 * @param params 请求体字符串
*/ */
public static String postHttpRequest( String url, HashMap<String, String> headers, public static String postHttpRequest(String url, HashMap<String, String> headers,
String param ) throws MalformedURLException String param) throws MalformedURLException {
{
URL httpURL = null; URL httpURL = null;
HttpURLConnection conn = null; HttpURLConnection conn = null;
OutputStreamWriter out = null; OutputStreamWriter out = null;
BufferedReader in = null; BufferedReader in = null;
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
try try {
{
// 获取connection // 获取connection
httpURL = new URL( url ); httpURL = new URL(url);
conn = (HttpURLConnection) httpURL.openConnection(); conn = (HttpURLConnection) httpURL.openConnection();
// 设置请求方式 // 设置请求方式
conn.setRequestMethod( "POST" ); conn.setRequestMethod("POST");
// 设置请求头参数 // 设置请求头参数
for ( HashMap.Entry<String, String> head : headers.entrySet()) for (HashMap.Entry<String, String> head : headers.entrySet()) {
{ conn.setRequestProperty(head.getKey(), head.getValue());
conn.setRequestProperty( head.getKey(), head.getValue() );
} }
// 连接 // 连接
conn.setDoInput( true ); conn.setDoInput(true);
conn.setDoOutput( true ); conn.setDoOutput(true);
conn.connect(); conn.connect();
// 输出请求 // 输出请求
out = new OutputStreamWriter( conn.getOutputStream(), StandardCharsets.UTF_8 ); out = new OutputStreamWriter(conn.getOutputStream(), StandardCharsets.UTF_8);
out.write( param ); out.write(param);
out.flush(); out.flush();
// 读取返回值。 // 读取返回值。
in = new BufferedReader( new InputStreamReader( conn.getInputStream() ) ); in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = in.readLine(); String line = in.readLine();
while (line != null) while (line != null) {
{ result.append(line);
result.append( line );
line = in.readLine(); line = in.readLine();
} }
} } catch (IOException error) {
catch (IOException error)
{
} } finally {
finally try {
{ if (out != null) {
try
{
if ( out != null)
{
out.close(); out.close();
} }
if ( in != null) if (in != null) {
{
in.close(); in.close();
} }
if ( conn != null) if (conn != null) {
{
conn.disconnect(); conn.disconnect();
} }
} } catch (Exception error) {
catch (Exception error)
{
error.printStackTrace(); error.printStackTrace();
} }
} }

View File

@@ -74,7 +74,7 @@ public class QWeatherDisasterWarning
private String code; private String code;
@JsonProperty( "updateTime") @JsonProperty( "updateTime")
@JsonFormat( pattern = "yyyy-MM-dd\'T\'HH:mmXXX") @JsonFormat( pattern = "yyyy-MM-dd'T'HH:mmXXX")
private Date updateTime; private Date updateTime;
@JsonProperty( "fxLink") @JsonProperty( "fxLink")

View File

@@ -1,7 +1,6 @@
package com.cpic.xim.notify.disaster; package com.cpic.xim.notify.disaster;
import java.util.Date; import java.util.Date;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
@@ -12,52 +11,6 @@ public class QWeatherDisasterWarningItem
public QWeatherDisasterWarningItem() public QWeatherDisasterWarningItem()
{} {}
public QWeatherDisasterWarningItem( String id, String sender, Date pubTime, String title,
String status, String level, String type, String typeName, String text, String related,
String urgency, String certainty)
{
this.id = id;
this.sender = sender;
this.pubTime = pubTime;
this.title = title;
this.status = status;
this.level = level;
this.type = type;
this.typeName = typeName;
this.text = text;
this.related = related;
this.urgency = urgency;
this.certainty = certainty;
}
@Override
public boolean equals( Object o )
{
if ( this == o)
{
return true;
}
if ( o == null || getClass() != o.getClass())
{
return false;
}
QWeatherDisasterWarningItem that = (QWeatherDisasterWarningItem) o;
return id.equals( that.id ) && Objects.equals( sender, that.sender )
&& Objects.equals( pubTime, that.pubTime ) && Objects.equals( title, that.title )
&& Objects.equals( status, that.status ) && Objects.equals( level, that.level )
&& Objects.equals( type, that.type ) && Objects.equals( typeName, that.typeName )
&& Objects.equals( text, that.text ) && Objects.equals( related, that.related )
&& Objects.equals( urgency, that.urgency )
&& Objects.equals( certainty, that.certainty );
}
@Override
public int hashCode()
{
return Objects.hash( id, sender, pubTime, title, status, level, type, typeName, text,
related, urgency, certainty );
}
public String getId() public String getId()
{ {
return id; return id;
@@ -98,6 +51,26 @@ public class QWeatherDisasterWarningItem
this.title = title; this.title = title;
} }
public Date getStartTime()
{
return startTime;
}
public void setStartTime( Date startTime )
{
this.startTime = startTime;
}
public Date getEndTime()
{
return endTime;
}
public void setEndTime( Date endTime )
{
this.endTime = endTime;
}
public String getStatus() public String getStatus()
{ {
return status; return status;
@@ -118,6 +91,26 @@ public class QWeatherDisasterWarningItem
this.level = level; this.level = level;
} }
public String getSeverity()
{
return severity;
}
public void setSeverity( String severity )
{
this.severity = severity;
}
public String getSeverityColor()
{
return severityColor;
}
public void setSeverityColor( String severityColor )
{
this.severityColor = severityColor;
}
public String getType() public String getType()
{ {
return type; return type;
@@ -178,20 +171,187 @@ public class QWeatherDisasterWarningItem
this.certainty = certainty; this.certainty = certainty;
} }
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((sender == null) ? 0 : sender.hashCode());
result = prime * result + ((pubTime == null) ? 0 : pubTime.hashCode());
result = prime * result + ((title == null) ? 0 : title.hashCode());
result = prime * result + ((startTime == null) ? 0 : startTime.hashCode());
result = prime * result + ((endTime == null) ? 0 : endTime.hashCode());
result = prime * result + ((status == null) ? 0 : status.hashCode());
result = prime * result + ((level == null) ? 0 : level.hashCode());
result = prime * result + ((severity == null) ? 0 : severity.hashCode());
result = prime * result + ((severityColor == null) ? 0 : severityColor.hashCode());
result = prime * result + ((type == null) ? 0 : type.hashCode());
result = prime * result + ((typeName == null) ? 0 : typeName.hashCode());
result = prime * result + ((text == null) ? 0 : text.hashCode());
result = prime * result + ((related == null) ? 0 : related.hashCode());
result = prime * result + ((urgency == null) ? 0 : urgency.hashCode());
result = prime * result + ((certainty == null) ? 0 : certainty.hashCode());
return result;
}
@Override
public boolean equals( Object obj )
{
if ( this == obj)
return true;
if ( obj == null)
return false;
if ( getClass() != obj.getClass())
return false;
QWeatherDisasterWarningItem other = (QWeatherDisasterWarningItem) obj;
if ( id == null)
{
if ( other.id != null)
return false;
} else if ( !id.equals( other.id ))
return false;
if ( sender == null)
{
if ( other.sender != null)
return false;
} else if ( !sender.equals( other.sender ))
return false;
if ( pubTime == null)
{
if ( other.pubTime != null)
return false;
} else if ( !pubTime.equals( other.pubTime ))
return false;
if ( title == null)
{
if ( other.title != null)
return false;
} else if ( !title.equals( other.title ))
return false;
if ( startTime == null)
{
if ( other.startTime != null)
return false;
} else if ( !startTime.equals( other.startTime ))
return false;
if ( endTime == null)
{
if ( other.endTime != null)
return false;
} else if ( !endTime.equals( other.endTime ))
return false;
if ( status == null)
{
if ( other.status != null)
return false;
} else if ( !status.equals( other.status ))
return false;
if ( level == null)
{
if ( other.level != null)
return false;
} else if ( !level.equals( other.level ))
return false;
if ( severity == null)
{
if ( other.severity != null)
return false;
} else if ( !severity.equals( other.severity ))
return false;
if ( severityColor == null)
{
if ( other.severityColor != null)
return false;
} else if ( !severityColor.equals( other.severityColor ))
return false;
if ( type == null)
{
if ( other.type != null)
return false;
} else if ( !type.equals( other.type ))
return false;
if ( typeName == null)
{
if ( other.typeName != null)
return false;
} else if ( !typeName.equals( other.typeName ))
return false;
if ( text == null)
{
if ( other.text != null)
return false;
} else if ( !text.equals( other.text ))
return false;
if ( related == null)
{
if ( other.related != null)
return false;
} else if ( !related.equals( other.related ))
return false;
if ( urgency == null)
{
if ( other.urgency != null)
return false;
} else if ( !urgency.equals( other.urgency ))
return false;
if ( certainty == null)
{
if ( other.certainty != null)
return false;
} else if ( !certainty.equals( other.certainty ))
return false;
return true;
}
@JsonProperty( "id")
private String id; private String id;
@JsonProperty( "sender")
private String sender; private String sender;
@JsonProperty( "pubTime") @JsonProperty( "pubTime")
@JsonFormat( shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd\'T\'HH:mmXXX") @JsonFormat( shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd\'T\'HH:mmXXX")
private Date pubTime; private Date pubTime;
@JsonProperty( "title")
private String title; private String title;
@JsonProperty( "startTime")
@JsonFormat( shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd\'T\'HH:mmXXX")
private Date startTime;
@JsonProperty( "endTime")
@JsonFormat( shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd\'T\'HH:mmXXX")
private Date endTime;
@JsonProperty( "status")
private String status; private String status;
@JsonProperty( "level")
private String level; private String level;
@JsonProperty( "severity")
private String severity;
@JsonProperty( "severityColor")
private String severityColor;
@JsonProperty( "type")
private String type; private String type;
@JsonProperty( "typeName")
private String typeName; private String typeName;
@JsonProperty( "text")
private String text; private String text;
@JsonProperty( "related")
private String related; private String related;
@JsonProperty( "urgency")
private String urgency; private String urgency;
@JsonProperty( "certainty")
private String certainty; private String certainty;
} }

View File

@@ -4,17 +4,18 @@
*/ */
package com.cpic.xim.notify.disaster; package com.cpic.xim.notify.disaster;
import com.fasterxml.jackson.databind.ObjectMapper; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;
import java.util.zip.GZIPInputStream; import java.util.zip.GZIPInputStream;
import com.cpic.xim.config.ProxySetting;
import com.fasterxml.jackson.databind.ObjectMapper;
/** /**
* *
@@ -23,45 +24,58 @@ public class WeatherDisasterWarningGrabber
{ {
/*** /***
* 从和风天气获取天气警报json字符串 * 从和风天气获取天气警报json字符串
*
* @param cityCode 城市或区域代码 * @param cityCode 城市或区域代码
* @return 返回警报的json字符串 * @return 返回警报的json字符串
*/ */
public static String getWeatherDisasterWarningJSON( String queryURL, public static String getWeatherDisasterWarningJSON( String queryURL, String userKey,
String userKey, String cityCode, ProxySetting proxySetting )
String cityCode )
{ {
//拼接url字符串 // 拼接url字符串
String json = ""; String json = "";
String requestURL = queryURL + "key=" + userKey + "&location=" + cityCode; String requestURL = queryURL + "key=" + userKey + "&location=" + cityCode;
//链接用 // 链接用
HttpURLConnection connection = null; HttpURLConnection connection = null;
URL url = null; URL url = null;
InputStream inputStream = null; InputStream inputStream = null;
BufferedReader bufferedReader = null; BufferedReader bufferedReader = null;
StringBuilder buffer = new StringBuilder(); StringBuilder buffer = new StringBuilder();
try try
{ {
url = new URL( requestURL ); url = new URL( requestURL );
connection = (HttpURLConnection) url.openConnection();
// 是否要用代理服务器
if ( proxySetting.isEnable())
{
InetSocketAddress proxyAddress = new InetSocketAddress(
proxySetting.getProxyAddress(), proxySetting.getProxyPort() );
Proxy proxy = new Proxy( Proxy.Type.HTTP, proxyAddress );
connection = (HttpURLConnection) url.openConnection( proxy );
} else
{
connection = (HttpURLConnection) url.openConnection();
}
connection.setRequestMethod( "GET" ); connection.setRequestMethod( "GET" );
connection.setConnectTimeout( 15000 ); connection.setConnectTimeout( 15000 );
connection.setReadTimeout( 60000 ); connection.setReadTimeout( 60000 );
connection.connect(); connection.connect();
//如果responseCode为200说明访问成功 // 如果responseCode为200说明访问成功
if ( connection.getResponseCode() == 200 ) if ( connection.getResponseCode() == 200)
{ {
//注意和风使用了gzip压缩响应体 // 注意和风使用了gzip压缩响应体
inputStream = new GZIPInputStream( connection.getInputStream() ); inputStream = new GZIPInputStream( connection.getInputStream() );
bufferedReader = new BufferedReader( new InputStreamReader( inputStream, "UTF-8" ) ); bufferedReader =
new BufferedReader( new InputStreamReader( inputStream, "UTF-8" ) );
//读出数据 // 读出数据
String temp = bufferedReader.readLine(); String temp = bufferedReader.readLine();
while ( temp != null ) while (temp != null)
{ {
buffer.append( temp ); buffer.append( temp );
@@ -81,7 +95,7 @@ public class WeatherDisasterWarningGrabber
} }
finally finally
{ {
if ( bufferedReader != null ) if ( bufferedReader != null)
{ {
try try
{ {
@@ -93,7 +107,7 @@ public class WeatherDisasterWarningGrabber
} }
} }
if ( inputStream != null ) if ( inputStream != null)
{ {
try try
{ {
@@ -105,7 +119,7 @@ public class WeatherDisasterWarningGrabber
} }
} }
if ( connection != null ) if ( connection != null)
{ {
connection.disconnect(); connection.disconnect();
} }
@@ -116,8 +130,9 @@ public class WeatherDisasterWarningGrabber
/** /**
* 将天气警告的json字符串转换成java对象。 * 将天气警告的json字符串转换成java对象。
*
* @param json json字符串 * @param json json字符串
* @return 返回 QWeatherDisasterWarning 对象。 * @return 返回 QWeatherDisasterWarning 对象。
* @throws IOException * @throws IOException
*/ */
public static QWeatherDisasterWarning convertWeatherDisasterWarning( String json ) public static QWeatherDisasterWarning convertWeatherDisasterWarning( String json )

View File

@@ -2,7 +2,7 @@
* @Author: Kane * @Author: Kane
* @Date: 2022-04-22 10:53:49 * @Date: 2022-04-22 10:53:49
* @LastEditors: Kane * @LastEditors: Kane
* @LastEditTime: 2022-05-10 19:02:32 * @LastEditTime: 2022-12-16 15:51:36
* @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\wechat\officalAccount\sendMessage.java * @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\wechat\officalAccount\sendMessage.java
* @Description: 用来推送公众号消息的程序库。 * @Description: 用来推送公众号消息的程序库。
* *
@@ -14,6 +14,7 @@ import com.cpic.xim.config.db.OracleConfigManager;
import com.cpic.xim.config.db.OracleConfig; import com.cpic.xim.config.db.OracleConfig;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.util.HashMap; import java.util.HashMap;
@@ -23,24 +24,26 @@ import java.sql.DriverManager;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import com.cpic.xim.notify.disaster.*; import com.cpic.xim.notify.disaster.*;
import com.cpic.xim.httpUtil.HttpUtils; import com.cpic.xim.httpUtil.HttpUtils;
/** /**
* 推送微信公众号消息。 * 推送微信公众号消息。
* *
* @author Kane * @author Kane
*/ */
public class sendMessage public class sendMessage
{ {
private static HashMap<String, String> warningLevel; private static HashMap<String, String> warningLevel;
/** /*****************************************************
* 推送天气灾害预警!接口文档参考 彭奕洁 编写《消息发送接口调用文档》 * 推送天气灾害预警!接口文档参考 彭奕洁 编写《消息发送接口调用文档》
* 使用 post 方式,请求体内容以最基础的 post 格式。 * 使用 post 方式,请求体内容以最基础的 post 格式。
*
* @param officalAccountURL 产险厦门分公司公众号接口网址 * @param officalAccountURL 产险厦门分公司公众号接口网址
* @param warningItem 灾害预警对象 * @param warningItem 灾害预警对象
*/ *****************************************************/
public static void sendWeatherDisasterWarning( String officalAccountURL, public static void sendWeatherDisasterWarning( String officalAccountURL,
QWeatherDisasterWarningItem warningItem ) QWeatherDisasterWarningItem warningItem )
{ {
@@ -59,7 +62,7 @@ public class sendMessage
// 拼接消息内容 // 拼接消息内容
String title = warningItem.getTitle(); String title = warningItem.getTitle();
String text = warningItem.getText(); String text = warningItem.getText();
String color = warningLevel.keySet().contains( warningItem.getLevel() ) String color = warningLevel.containsKey( warningItem.getLevel() )
? warningLevel.get( warningItem.getLevel() ) ? warningLevel.get( warningItem.getLevel() )
: "#000000"; : "#000000";
requestBody = new StringBuilder(); requestBody = new StringBuilder();
@@ -84,6 +87,7 @@ public class sendMessage
* 检查预警是否已经推送过,通过 QWeatherDisasterWarningItem 对象的 id 属性。 * 检查预警是否已经推送过,通过 QWeatherDisasterWarningItem 对象的 id 属性。
* 查询 oracle xmcx1 数据库 wechat 表空间下 weather_disaster_notify 表, * 查询 oracle xmcx1 数据库 wechat 表空间下 weather_disaster_notify 表,
* 统计 warningID 的数量如果不为0,说明该预警已经保存过,视为已经推送过。 * 统计 warningID 的数量如果不为0,说明该预警已经保存过,视为已经推送过。
*
* @param warningID 预警的id * @param warningID 预警的id
* @return 如果推送过返回false否则返回 true。 * @return 如果推送过返回false否则返回 true。
*/ */
@@ -92,7 +96,7 @@ public class sendMessage
{ {
boolean result = false; boolean result = false;
OracleConfig dbConfig = OracleConfigManager.getOracleConfig();; OracleConfig dbConfig = OracleConfigManager.getOracleConfig();
Connection conn = null; Connection conn = null;
PreparedStatement stmt = null; PreparedStatement stmt = null;
@@ -166,21 +170,24 @@ public class sendMessage
* 保存天气预警警报数据。 * 保存天气预警警报数据。
* 保存至 oracle xmcx1 数据库 wechat 表空间下 weather_disaster_notify 表。 * 保存至 oracle xmcx1 数据库 wechat 表空间下 weather_disaster_notify 表。
* 保存的数据用来判断预警是否已经推送过,以防止反复推送数据。 * 保存的数据用来判断预警是否已经推送过,以防止反复推送数据。
* @param city 城市名称 *
* @param city 城市名称
* @param warning 预警数据,为 QWeatherDisasterWarningItem 对象。 * @param warning 预警数据,为 QWeatherDisasterWarningItem 对象。
* @throws SQLException 执行sql时可能抛出的异常。出现sql异常就回滚事务。 * @throws SQLException 执行sql时可能抛出的异常。出现sql异常就回滚事务。
* @throws IOException 读取数据库配置文件时可能抛出的异常。 * @throws IOException 读取数据库配置文件时可能抛出的异常。
* @throws ClassNotFoundException 加载oracle jdbc驱动时可能抛出的异常。 * @throws ClassNotFoundException 加载oracle jdbc驱动时可能抛出的异常。
*/ */
public static void saveWeatherDisasterWarning( String city, QWeatherDisasterWarning warnings ) public static void saveWeatherDisasterWarning( String city,
QWeatherDisasterWarningItem warning )
throws SQLException, IOException, ClassNotFoundException throws SQLException, IOException, ClassNotFoundException
{ {
Connection conn = null; Connection conn = null;
PreparedStatement stmt = null; PreparedStatement stmt = null;
String sql = "insert into weather_disaster_notify(notify_id, sender, city," String sql = new StringBuilder()
+ "warning_level, warning_type_code, warning_type_name, title," .append( "insert into weather_disaster_notify(notify_id, sender, city," )
+ "text, pub_time) values( ?,?,?,?,?,?,?,?,?)"; .append( "warning_level, warning_type_code, warning_type_name, title," )
.append( "text, pub_time) values( ?,?,?,?,?,?,?,?,?)" ).toString();
OracleConfig dbConfig = OracleConfigManager.getOracleConfig(); OracleConfig dbConfig = OracleConfigManager.getOracleConfig();
@@ -197,23 +204,19 @@ public class sendMessage
conn.setAutoCommit( false ); conn.setAutoCommit( false );
for ( QWeatherDisasterWarningItem warning : warnings.getWarning() ) java.sql.Timestamp pubTime = new java.sql.Timestamp( warning.getPubTime().getTime() );
{
java.sql.Timestamp pubTime =
new java.sql.Timestamp( warning.getPubTime().getTime() );
stmt.setString( 1, warning.getId() ); stmt.setString( 1, warning.getId() );
stmt.setString( 2, warning.getSender() ); stmt.setString( 2, warning.getSender() );
stmt.setString( 3, city ); stmt.setString( 3, city );
stmt.setString( 4, warning.getLevel() ); stmt.setString( 4, warning.getLevel() );
stmt.setString( 5, warning.getType() ); stmt.setString( 5, warning.getType() );
stmt.setString( 6, warning.getTypeName() ); stmt.setString( 6, warning.getTypeName() );
stmt.setString( 7, warning.getTitle() ); stmt.setString( 7, warning.getTitle() );
stmt.setString( 8, warning.getText() ); stmt.setString( 8, warning.getText() );
stmt.setTimestamp( 9, pubTime ); stmt.setTimestamp( 9, pubTime );
stmt.execute(); stmt.execute();
}
// 没有问题就提交 // 没有问题就提交
conn.commit(); conn.commit();
@@ -256,7 +259,6 @@ public class sendMessage
} }
} }
static static
{ {
// 预警级别色彩 // 预警级别色彩

View File

@@ -2,8 +2,8 @@
* @Author: Kane * @Author: Kane
* @Date: 2022-04-22 10:53:49 * @Date: 2022-04-22 10:53:49
* @LastEditors: Kane * @LastEditors: Kane
* @LastEditTime: 2022-05-10 11:33:41 * @LastEditTime: 2023-05-15 21:03:21
* @FilePath: \DisasterWarning\src\test\java\com\cpic\xim\wechat\officalAccount\sendMessageTest.java * @FilePath: /DisasterWarning/src/test/java/com/cpic/xim/wechat/officalAccount/sendMessageTest.java
* @Description: * @Description:
* *
* Copyright (c) ${2022} by Kane, All Rights Reserved. * Copyright (c) ${2022} by Kane, All Rights Reserved.
@@ -17,7 +17,7 @@ import com.cpic.xim.httpUtil.*;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
import org.junit.Test;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
public class sendMessageTest public class sendMessageTest
@@ -25,7 +25,7 @@ public class sendMessageTest
private static String url = private static String url =
"https://cxxmwx.cpic.com.cn/app/index.php?i=2&c=entry&do=send_group_tpl_api&m=ok_tplmessage"; "https://cxxmwx.cpic.com.cn/app/index.php?i=2&c=entry&do=send_group_tpl_api&m=ok_tplmessage";
// @Test @Test
public void postNotifyMessageJson() public void postNotifyMessageJson()
{ {
try try
@@ -75,7 +75,7 @@ public class sendMessageTest
String city = "东山县"; String city = "东山县";
sendMessage.saveWeatherDisasterWarning( city, warning ); // sendMessage.saveWeatherDisasterWarning( city, warning );
} }
catch ( Exception error ) catch ( Exception error )
{ {
@@ -83,7 +83,7 @@ public class sendMessageTest
} }
} }
// @Test @Test
public void testCheckWarningHasSended() public void testCheckWarningHasSended()
{ {
String warningID = "10123060820220422061200476313081"; String warningID = "10123060820220422061200476313081";

View File

@@ -8,6 +8,14 @@
{ {
"city_name": "厦门", "city_name": "厦门",
"city_code": "101230201" "city_code": "101230201"
},
{
"city_name": "同安",
"city_code": "101230202"
},
{
"city_name": "翔安",
"city_code": "101230207"
} }
], ],
"notify_stuffs": [ "notify_stuffs": [

2
应用/1.0/run.bat Normal file
View File

@@ -0,0 +1,2 @@
java -jar disaster_warning-1.0-SNAPSHOT-jar-with-dependencies.jar
pause

View File

@@ -19,5 +19,5 @@
} }
], ],
"refer": { "sources": ["12379"], "license": ["no commercial use"] }, "refer": { "sources": ["12379"], "license": ["no commercial use"] },
"testURL": "https://devapi.qweather.com/v7/warning/now?key=fe9fa8eeeb6f4301a92541eed565dd15&location=101230608" "testURL": "https://devapi.qweather.com/v7/warning/now?key=fe9fa8eeeb6f4301a92541eed565dd15&location=101230201"
} }

View File

@@ -0,0 +1,26 @@
{
"code": "200",
"updateTime": "2022-11-04T15:18+08:00",
"fxLink": "http://hfx.link/3565",
"warning": [
{
"id": "10123020120221104060100024343791",
"sender": "厦门市气象台",
"pubTime": "2022-11-04T06:01+08:00",
"title": "厦门市气象台发布大风黄色预警[Ⅲ级/较重]",
"startTime": "2022-11-04T06:09+08:00",
"endTime": "2022-11-05T06:09+08:00",
"status": "active",
"level": "黄色",
"severity": "Moderate",
"severityColor": "Yellow",
"type": "1006",
"typeName": "大风",
"urgency": "",
"certainty": "",
"text": "厦门市气象台2022年11月04日06时01分发布大风黄色预警信号受冷空气影响未来12小时思明区、湖里区、集美区、海沧区及海上风力逐渐增强预计厦门市区东北风最大可达56级、阵风78级厦门内海及各大桥、高海拔山区最大可达67级、阵风89级崇武到东山沿海最大可达78级、阵风9级台湾海峡南部最大可达78级、阵风910级。请注意防范。同安区、翔安区请关注属地的预警信号发布情况。",
"related": ""
}
],
"refer": { "sources": ["12379"], "license": ["no commercial use"] }
}