Compare commits
5 Commits
c0443d3a8b
...
2847747f53
Author | SHA1 | Date |
---|---|---|
Kane Wang | 2847747f53 | |
Kane Wang | 1231fe3132 | |
Kane Wang | fbe9f8e532 | |
Kane Wang | 53849e4f74 | |
Kane Wang | d1bcb3b956 |
|
@ -134,3 +134,6 @@ $RECYCLE.BIN/
|
||||||
*.lnk
|
*.lnk
|
||||||
|
|
||||||
target/*
|
target/*
|
||||||
|
|
||||||
|
logs/*
|
||||||
|
logs
|
|
@ -3,6 +3,7 @@
|
||||||
"key": "fe9fa8eeeb6f4301a92541eed565dd15",
|
"key": "fe9fa8eeeb6f4301a92541eed565dd15",
|
||||||
"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,
|
||||||
"cities": [
|
"cities": [
|
||||||
{
|
{
|
||||||
"city_name": "厦门",
|
"city_name": "厦门",
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
|
||||||
|
|
||||||
|
.level = INFO
|
||||||
|
|
||||||
|
java.util.logging.FileHandler.pattern = ./logs/log_%u.log
|
||||||
|
java.util.logging.FileHandler.limit = 50000
|
||||||
|
java.util.logging.FileHandler.count = 1
|
||||||
|
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
|
||||||
|
java.util.logging.FileHandler.append = true;
|
|
@ -23,7 +23,7 @@
|
||||||
<version>4.13.2</version>
|
<version>4.13.2</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<!-- <dependency>
|
||||||
<groupId>commons-beanutils</groupId>
|
<groupId>commons-beanutils</groupId>
|
||||||
<artifactId>commons-beanutils</artifactId>
|
<artifactId>commons-beanutils</artifactId>
|
||||||
<version>1.9.4</version>
|
<version>1.9.4</version>
|
||||||
|
@ -53,7 +53,7 @@
|
||||||
<artifactId>json-lib</artifactId>
|
<artifactId>json-lib</artifactId>
|
||||||
<version>2.4</version>
|
<version>2.4</version>
|
||||||
<classifier>jdk15</classifier>
|
<classifier>jdk15</classifier>
|
||||||
</dependency>
|
</dependency> -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
<artifactId>jackson-core</artifactId>
|
<artifactId>jackson-core</artifactId>
|
||||||
|
@ -79,10 +79,39 @@
|
||||||
</properties>
|
</properties>
|
||||||
<build>
|
<build>
|
||||||
<defaultGoal>compile</defaultGoal>
|
<defaultGoal>compile</defaultGoal>
|
||||||
|
|
||||||
<plugins>
|
<plugins>
|
||||||
<!-- <plugin>
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<version>3.0.0-M6</version>
|
||||||
|
<configuration>
|
||||||
|
<skipTests>true</skipTests>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-assembly-plugin</artifactId>
|
<artifactId>maven-assembly-plugin</artifactId>
|
||||||
</plugin> -->
|
<configuration>
|
||||||
|
<descriptorRefs>
|
||||||
|
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||||
|
</descriptorRefs>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<mainClass>AppMain</mainClass>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>make-assmenbly</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>single</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
<profiles>
|
<profiles>
|
||||||
|
|
|
@ -2,18 +2,19 @@
|
||||||
* @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-06 11:08:07
|
* @LastEditTime: 2022-05-10 16:28:07
|
||||||
* @FilePath: \DisasterWarning\src\main\java\AppMain.java
|
* @FilePath: \DisasterWarning\src\main\java\AppMain.java
|
||||||
* @Description: 和风天气预警推送厦门太保公众号主程序!
|
* @Description: 和风天气预警推送厦门太保公众号主程序!
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
|
import com.cpic.xim.config.AppConfigManager;
|
||||||
import com.cpic.xim.config.City;
|
import com.cpic.xim.config.City;
|
||||||
import com.cpic.xim.notify.disaster.QWeatherDisasterWarning;
|
import com.cpic.xim.notify.disaster.QWeatherDisasterWarning;
|
||||||
import com.cpic.xim.notify.disaster.WeatherDisasterWarningGrabber;
|
import com.cpic.xim.notify.disaster.WeatherDisasterWarningGrabber;
|
||||||
import com.cpic.xim.wechat.officalAccount.sendMessage;
|
import com.cpic.xim.wechat.officalAccount.sendMessage;
|
||||||
import com.cpic.xim.config.WeatherDisasterNotifyConfig;
|
import com.cpic.xim.config.WeatherDisasterNotifyConfig;
|
||||||
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
@ -22,7 +23,7 @@ import java.util.logging.*;
|
||||||
|
|
||||||
public class AppMain
|
public class AppMain
|
||||||
{
|
{
|
||||||
private final static String LOG_FILE_PATH = "./app.log";
|
// private final static String LOG_FILE_PATH = "./logs/app%u.log";
|
||||||
|
|
||||||
public static void main( String[] args )
|
public static void main( String[] args )
|
||||||
{
|
{
|
||||||
|
@ -45,11 +46,10 @@ public class AppMain
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 读取配置
|
// 读取配置
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
config = WeatherDisasterNotifyConfig.getConfig();
|
config = AppConfigManager.getConfig();
|
||||||
}
|
}
|
||||||
catch ( IOException error )
|
catch ( IOException error )
|
||||||
{
|
{
|
||||||
|
@ -66,57 +66,73 @@ public class AppMain
|
||||||
String userKey = config.getKey();
|
String userKey = config.getKey();
|
||||||
|
|
||||||
// 遍历所有城市,查询是否有警报,有则推送。
|
// 遍历所有城市,查询是否有警报,有则推送。
|
||||||
for ( City city : cities )
|
while (true)
|
||||||
{
|
{
|
||||||
|
for ( City city : cities )
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
json = WeatherDisasterWarningGrabber.getWeatherDisasterWarningJSON( queryURL,
|
||||||
|
userKey, city.getCityCode() );
|
||||||
|
warning = WeatherDisasterWarningGrabber.convertWeatherDisasterWarning( json );
|
||||||
|
|
||||||
|
logger.log( Level.INFO, "查询{0}天气预警,结果:{1}。", new Object[]
|
||||||
|
{ city.getCityName(), json} );
|
||||||
|
|
||||||
|
// 判断是否有警报
|
||||||
|
if ( warning.getWarning().isEmpty() == true)
|
||||||
|
{
|
||||||
|
logger.log( Level.INFO, "查询{0}天气预警,无警报!。", new Object[]
|
||||||
|
{ city.getCityName()} );
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.log( Level.INFO, "查询{0}天气预警,发送日志。", new Object[]
|
||||||
|
{ city.getCityName()} );
|
||||||
|
|
||||||
|
sendMessage.sendWeatherDisasterWarning( config.getWechatOfficalAccountURL(),
|
||||||
|
warning );
|
||||||
|
|
||||||
|
logger.log( Level.INFO, "{0}天气预警,日志发送成功。", new Object[]
|
||||||
|
{ city.getCityName()} );
|
||||||
|
|
||||||
|
sendMessage.saveWeatherDisasterWarning( city.getCityName(), warning );
|
||||||
|
}
|
||||||
|
catch ( IOException error )
|
||||||
|
{
|
||||||
|
System.out.println( "查询" + city.getCityName() + "出现异常!" );
|
||||||
|
System.out.println( error.getMessage() );
|
||||||
|
|
||||||
|
logger.log( Level.SEVERE, "查询 {0} 出现异常:{1}。", new Object[]
|
||||||
|
{ city.getCityName(), error.getMessage()} );
|
||||||
|
}
|
||||||
|
catch ( SQLException error )
|
||||||
|
{
|
||||||
|
logger.log( Level.SEVERE, "查询 {0} 写入数据库失败:{1}。", new Object[]
|
||||||
|
{ city.getCityName(), error.getMessage()} );
|
||||||
|
}
|
||||||
|
catch ( ClassNotFoundException error )
|
||||||
|
{
|
||||||
|
logger.log( Level.SEVERE, "查询 {0} 加载oracle驱动失败:{1}。", new Object[]
|
||||||
|
{ city.getCityName(), error.getMessage()} );
|
||||||
|
|
||||||
|
}
|
||||||
|
catch ( Exception error )
|
||||||
|
{
|
||||||
|
logger.log( Level.SEVERE, "查询 {0} 出现未知错误:{1}。", new Object[]
|
||||||
|
{ city.getCityName(), error.getMessage()} );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
json = WeatherDisasterWarningGrabber.getWeatherDisasterWarningJSON( queryURL,
|
logger.log( Level.INFO, "查询结束,休眠{0}分钟。", config.getQueryInterval() );
|
||||||
userKey, city.getCityCode() );
|
Thread.sleep( config.getQueryInterval() * 1000 * 60 );
|
||||||
warning = WeatherDisasterWarningGrabber.convertWeatherDisasterWarning( json );
|
|
||||||
|
|
||||||
logger.log( Level.INFO, "查询{0}天气预警,结果:{1}。", new Object[]
|
|
||||||
{ city.getCityName(), json} );
|
|
||||||
|
|
||||||
// 判断是否有警报
|
|
||||||
if ( warning.getWarning().isEmpty() == true)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.log( Level.INFO, "查询{0}天气预警,发送日志。", new Object[]
|
|
||||||
{ city.getCityName()} );
|
|
||||||
|
|
||||||
sendMessage.sendWeatherDisasterWarning( config.getWechatOfficalAccountURL(),
|
|
||||||
warning );
|
|
||||||
|
|
||||||
logger.log( Level.INFO, "{0}天气预警,日志发送成功。", new Object[]
|
|
||||||
{ city.getCityName()} );
|
|
||||||
|
|
||||||
sendMessage.saveWeatherDisasterWarning( city.getCityName(), warning );
|
|
||||||
}
|
}
|
||||||
catch ( IOException error )
|
catch ( InterruptedException error )
|
||||||
{
|
{
|
||||||
System.out.println( "查询" + city.getCityName() + "出现异常!" );
|
logger.log( Level.SEVERE, "线程休眠异常,错误信息:{0}", new Object[]
|
||||||
System.out.println( error.getMessage() );
|
{ error.getMessage()} );
|
||||||
|
|
||||||
logger.log( Level.SEVERE, "查询 {0} 出现异常:{1}。", new Object[]
|
|
||||||
{ city.getCityName(), error.getMessage()} );
|
|
||||||
}
|
|
||||||
catch ( SQLException error )
|
|
||||||
{
|
|
||||||
logger.log( Level.SEVERE, "查询 {0} 写入数据库失败:{1}。", new Object[]
|
|
||||||
{ city.getCityName(), error.getMessage()} );
|
|
||||||
}
|
|
||||||
catch ( ClassNotFoundException error )
|
|
||||||
{
|
|
||||||
logger.log( Level.SEVERE, "查询 {0} 加载oracle驱动失败:{1}。", new Object[]
|
|
||||||
{ city.getCityName(), error.getMessage()} );
|
|
||||||
|
|
||||||
}
|
|
||||||
catch ( Exception error )
|
|
||||||
{
|
|
||||||
logger.log( Level.SEVERE, "查询 {0} 出现未知错误:{1}。", new Object[]
|
|
||||||
{ city.getCityName(), error.getMessage()} );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -126,17 +142,15 @@ public class AppMain
|
||||||
*/
|
*/
|
||||||
private static void setRootLogger() throws IOException
|
private static void setRootLogger() throws IOException
|
||||||
{
|
{
|
||||||
Logger rootLogger = Logger.getLogger( "com.cpicxim" );
|
LogManager logManager = LogManager.getLogManager();
|
||||||
ConsoleHandler consoleHandler = new ConsoleHandler();
|
// 使用外部的配置文件。
|
||||||
FileHandler fileHandler = new FileHandler( LOG_FILE_PATH );
|
FileInputStream configFile = new FileInputStream( "./logging.properties" );
|
||||||
SimpleFormatter formatter = new SimpleFormatter();
|
// 使用jar中的配置文件。
|
||||||
|
// InputStream configFile =
|
||||||
|
// AppMain.class.getClassLoader().getResourceAsStream( "logging.properties" );
|
||||||
|
|
||||||
consoleHandler.setFormatter( formatter );
|
logManager.readConfiguration( configFile );
|
||||||
fileHandler.setFormatter( formatter );
|
|
||||||
rootLogger.addHandler( consoleHandler );
|
|
||||||
rootLogger.addHandler( fileHandler );
|
|
||||||
|
|
||||||
rootLogger.setUseParentHandlers( false );
|
Logger.getLogger( "com.cpicxim" );
|
||||||
rootLogger.setLevel( Level.ALL );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2022-05-10 16:06:14
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @LastEditTime: 2022-05-10 16:09:07
|
||||||
|
* @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\config\AppConfigManager.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.cpic.xim.config;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
|
||||||
|
|
||||||
|
public class AppConfigManager
|
||||||
|
{
|
||||||
|
private static final int BUFFER_SIZE = 1024;
|
||||||
|
private static final String CONFIG_FILE_CHARSET = "UTF-8";
|
||||||
|
private static final String CONFIG_FILE_PATH = "./config.json";
|
||||||
|
private static WeatherDisasterNotifyConfig appConfig = null;
|
||||||
|
|
||||||
|
public static WeatherDisasterNotifyConfig getConfig() throws IOException
|
||||||
|
|
||||||
|
{
|
||||||
|
if ( appConfig != null)
|
||||||
|
{
|
||||||
|
return appConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
FileInputStream configFile = null;
|
||||||
|
InputStreamReader in = null;
|
||||||
|
StringBuffer json = null;
|
||||||
|
char[] buffer = new char[BUFFER_SIZE];
|
||||||
|
|
||||||
|
// 设置json属性
|
||||||
|
mapper.setPropertyNamingStrategy( PropertyNamingStrategy.SNAKE_CASE );
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
configFile = new FileInputStream( CONFIG_FILE_PATH );
|
||||||
|
in = new InputStreamReader( configFile, CONFIG_FILE_CHARSET );
|
||||||
|
json = new StringBuffer();
|
||||||
|
|
||||||
|
int length = in.read( buffer );
|
||||||
|
|
||||||
|
while (length != -1)
|
||||||
|
{
|
||||||
|
json.append( buffer );
|
||||||
|
|
||||||
|
length = in.read( buffer );
|
||||||
|
}
|
||||||
|
|
||||||
|
appConfig = mapper.readValue( json.toString(), WeatherDisasterNotifyConfig.class );
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if ( configFile != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
configFile.close();
|
||||||
|
}
|
||||||
|
catch ( IOException e )
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return appConfig;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,72 +1,22 @@
|
||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2022-04-24 10:21:46
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @LastEditTime: 2022-05-10 16:16:28
|
||||||
|
* @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\config\WeatherDisasterNotifyConfig.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
package com.cpic.xim.config;
|
package com.cpic.xim.config;
|
||||||
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
|
|
||||||
|
|
||||||
public class WeatherDisasterNotifyConfig
|
public class WeatherDisasterNotifyConfig
|
||||||
{
|
{
|
||||||
private static final int BUFFER_SIZE = 1024;
|
|
||||||
private static final String CONFIG_FILE_CHARSET = "UTF-8";
|
|
||||||
private static final String CONFIG_FILE_PATH = "./config.json";
|
|
||||||
private static WeatherDisasterNotifyConfig appConfig = null;
|
|
||||||
|
|
||||||
public static WeatherDisasterNotifyConfig getConfig() throws IOException
|
|
||||||
|
|
||||||
{
|
|
||||||
if ( appConfig != null)
|
|
||||||
{
|
|
||||||
return appConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
|
||||||
FileInputStream configFile = null;
|
|
||||||
InputStreamReader in = null;
|
|
||||||
StringBuffer json = null;
|
|
||||||
char[] buffer = new char[BUFFER_SIZE];
|
|
||||||
|
|
||||||
// 设置json属性
|
|
||||||
mapper.setPropertyNamingStrategy( PropertyNamingStrategy.SNAKE_CASE );
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
configFile = new FileInputStream( CONFIG_FILE_PATH );
|
|
||||||
in = new InputStreamReader( configFile, CONFIG_FILE_CHARSET );
|
|
||||||
json = new StringBuffer();
|
|
||||||
|
|
||||||
int length = in.read( buffer );
|
|
||||||
|
|
||||||
while (length != -1)
|
|
||||||
{
|
|
||||||
json.append( buffer );
|
|
||||||
|
|
||||||
length = in.read( buffer );
|
|
||||||
}
|
|
||||||
|
|
||||||
appConfig = mapper.readValue( json.toString(), WeatherDisasterNotifyConfig.class );
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if ( configFile != null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
configFile.close();
|
|
||||||
}
|
|
||||||
catch ( IOException e )
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return appConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
public WeatherDisasterNotifyConfig()
|
public WeatherDisasterNotifyConfig()
|
||||||
{};
|
{};
|
||||||
|
@ -106,6 +56,18 @@ public class WeatherDisasterNotifyConfig
|
||||||
return cities;
|
return cities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int getQueryInterval()
|
||||||
|
{
|
||||||
|
return queryInterval;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQueryInterval( int queryInterval )
|
||||||
|
{
|
||||||
|
this.queryInterval = queryInterval;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setCities( Vector<City> cities )
|
public void setCities( Vector<City> cities )
|
||||||
{
|
{
|
||||||
this.cities = cities;
|
this.cities = cities;
|
||||||
|
@ -131,12 +93,24 @@ public class WeatherDisasterNotifyConfig
|
||||||
this.wechatOfficalAccountURL = wechatOfficalAccountURL;
|
this.wechatOfficalAccountURL = wechatOfficalAccountURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JsonProperty( "title")
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
|
@JsonProperty( "key")
|
||||||
private String key;
|
private String key;
|
||||||
|
|
||||||
|
@JsonProperty( "query_url")
|
||||||
private String queryUrl;
|
private String queryUrl;
|
||||||
|
|
||||||
|
@JsonProperty( "query_interval")
|
||||||
|
private int queryInterval;
|
||||||
|
|
||||||
@JsonProperty( "wechat_officalaccount_url")
|
@JsonProperty( "wechat_officalaccount_url")
|
||||||
private String wechatOfficalAccountURL;
|
private String wechatOfficalAccountURL;
|
||||||
|
|
||||||
|
@JsonProperty( "cities")
|
||||||
private Vector<City> cities;
|
private Vector<City> cities;
|
||||||
|
|
||||||
|
@JsonProperty( "notify_stuffs")
|
||||||
private Vector<CpicxmStuff> notifyStuffs;
|
private Vector<CpicxmStuff> notifyStuffs;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
|
||||||
|
|
||||||
|
.level = INFO
|
||||||
|
|
||||||
|
java.util.logging.FileHandler.pattern = ./logs/log_%u.log
|
||||||
|
java.util.logging.FileHandler.limit = 50000
|
||||||
|
java.util.logging.FileHandler.count = 10
|
||||||
|
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
|
||||||
|
java.util.logging.FileHandler.append = true;
|
|
@ -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-06 11:14:35
|
* @LastEditTime: 2022-05-10 11:33:41
|
||||||
* @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:
|
||||||
*
|
*
|
||||||
|
@ -12,7 +12,6 @@ package com.cpic.xim.wechat.officalAccount;
|
||||||
|
|
||||||
import com.cpic.xim.notify.disaster.QWeatherDisasterWarning;
|
import com.cpic.xim.notify.disaster.QWeatherDisasterWarning;
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
import com.cpic.xim.httpUtil.*;
|
import com.cpic.xim.httpUtil.*;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -61,7 +60,7 @@ public class sendMessageTest
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
// @Test
|
||||||
public void testSendWeatherDisasterWarning() throws IOException
|
public void testSendWeatherDisasterWarning() throws IOException
|
||||||
{
|
{
|
||||||
String warningJSON =
|
String warningJSON =
|
||||||
|
|
Loading…
Reference in New Issue