diff --git a/zheng-notify/pom.xml b/zheng-notify/pom.xml new file mode 100644 index 00000000..26c3ef70 --- /dev/null +++ b/zheng-notify/pom.xml @@ -0,0 +1,25 @@ + + 4.0.0 + + com.zheng + zheng-notify + 1.0.0 + pom + + zheng-notify + http://www.zhangshuzheng.cn + + + UTF-8 + + 1.7 + 1.7 + 1.7 + + + + zheng-notify-sdk + zheng-notify-server + + diff --git a/zheng-notify/zheng-notify-client/index.html b/zheng-notify/zheng-notify-client/index.html new file mode 100644 index 00000000..ea70d7f5 --- /dev/null +++ b/zheng-notify/zheng-notify-client/index.html @@ -0,0 +1,83 @@ + + + + + + 管理监控中心 + + + +
+
+
+ + + + + + +
+
+
    +
+
+
+
+ + + + + \ No newline at end of file diff --git a/zheng-notify/zheng-notify-sdk/pom.xml b/zheng-notify/zheng-notify-sdk/pom.xml new file mode 100644 index 00000000..b517216a --- /dev/null +++ b/zheng-notify/zheng-notify-sdk/pom.xml @@ -0,0 +1,60 @@ + + 4.0.0 + + + com.zheng + zheng-notify + 1.0.0 + + + zheng-notify-sdk + jar + + zheng-notify-sdk + http://www.zhangshuzheng.cn + + + UTF-8 + + + + + org.apache.httpcomponents + httpclient + 4.5.5 + + + com.alibaba + fastjson + 1.2.47 + + + + + zheng-notify-sdk + + + src/main/java + + **/*.xml + + true + + + src/main/resources + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.18.1 + + true + true + + + + + diff --git a/zheng-notify/zheng-notify-sdk/src/main/java/com/zheng/notify/sdk/BaseResult.java b/zheng-notify/zheng-notify-sdk/src/main/java/com/zheng/notify/sdk/BaseResult.java new file mode 100644 index 00000000..a18aadfa --- /dev/null +++ b/zheng-notify/zheng-notify-sdk/src/main/java/com/zheng/notify/sdk/BaseResult.java @@ -0,0 +1,54 @@ +package com.zheng.notify.sdk; + +/** + * 统一返回结果类 + * Created by shuzheng on 2017/2/18. + */ +public class BaseResult { + + /** + * 状态码:1成功,其他为失败 + */ + public int code; + + /** + * 成功为success,其他为失败原因 + */ + public String message; + + /** + * 数据结果集 + */ + public Object data; + + public BaseResult(int code, String message, Object data) { + this.code = code; + this.message = message; + this.data = data; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } + +} diff --git a/zheng-notify/zheng-notify-sdk/src/main/java/com/zheng/notify/sdk/NotifyConstants.java b/zheng-notify/zheng-notify-sdk/src/main/java/com/zheng/notify/sdk/NotifyConstants.java new file mode 100644 index 00000000..bf2330ac --- /dev/null +++ b/zheng-notify/zheng-notify-sdk/src/main/java/com/zheng/notify/sdk/NotifyConstants.java @@ -0,0 +1,18 @@ +package com.zheng.notify.sdk; + +/** + * 全局常量 + * Created by shuzheng on 2018/6/28. + */ +public class NotifyConstants { + + // 通知类型:广播 + public static final String PUBLISH_TYPE_BROADCAST = "broadcast"; + + // 通知类型:主题 + public static final String PUBLISH_TYPE_TOPICS = "topics"; + + // 通知类型:点对点 + public static final String PUBLISH_TYPE_CLIENTS = "clients"; + +} diff --git a/zheng-notify/zheng-notify-sdk/src/main/java/com/zheng/notify/sdk/NotifyHelper.java b/zheng-notify/zheng-notify-sdk/src/main/java/com/zheng/notify/sdk/NotifyHelper.java new file mode 100644 index 00000000..a6cb38ca --- /dev/null +++ b/zheng-notify/zheng-notify-sdk/src/main/java/com/zheng/notify/sdk/NotifyHelper.java @@ -0,0 +1,68 @@ +package com.zheng.notify.sdk; + +import com.alibaba.fastjson.JSONObject; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.util.EntityUtils; + +import java.nio.charset.Charset; + +/** + * 推送工具类 + * Created by shuzheng on 2018/6/28. + */ +public class NotifyHelper { + + /** + * 推送消息 + * @param url + * @param publishDto + * @return + */ + public BaseResult publish(String url, PublishDto publishDto) { + HttpPost httpPost = null; + try { + HttpClient httpClient = new DefaultHttpClient(); + + httpPost = new HttpPost(url); + httpPost.setHeader("Content-type", "application/json; charset=utf-8"); + + HttpEntity httpEntity = new StringEntity(JSONObject.toJSONString(publishDto), "utf-8"); + httpPost.setEntity(httpEntity); + + HttpResponse httpResponse = httpClient.execute(httpPost); + int statusCode = httpResponse.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + HttpEntity resEntity = httpResponse.getEntity(); + if (resEntity != null) { + String result = EntityUtils.toString(resEntity, Charset.forName("utf-8")); + return JSONObject.parseObject(result, BaseResult.class); + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (httpPost != null) { + httpPost.releaseConnection(); + } + } + return new BaseResult(-1, "error", "publish error"); + } + + public static void main(String[] args) { + String url = "http://localhost:8881/notify/publish"; + PublishDto publishDto = new PublishDto(); + publishDto.setType(NotifyConstants.PUBLISH_TYPE_BROADCAST); + publishDto.setNamespace("/demo"); + publishDto.setAccessKey("1"); + publishDto.setPayload("hi"); + BaseResult result = new NotifyHelper().publish(url, publishDto); + System.out.println(result.message); + } + +} diff --git a/zheng-notify/zheng-notify-sdk/src/main/java/com/zheng/notify/sdk/PublishDto.java b/zheng-notify/zheng-notify-sdk/src/main/java/com/zheng/notify/sdk/PublishDto.java new file mode 100644 index 00000000..08e8a5da --- /dev/null +++ b/zheng-notify/zheng-notify-sdk/src/main/java/com/zheng/notify/sdk/PublishDto.java @@ -0,0 +1,76 @@ +package com.zheng.notify.sdk; + + +/** + * 推送消息 + * Created by shuzheng on 2018/6/20. + */ +public class PublishDto { + + // 推送类型:"broadcast/topics/clients" <=> 广播、按主题、点对点 + private String type; + + // 推送命名空间 + private String namespace; + + // 鉴权key + private String accessKey; + + // 推送订阅主题的订阅者 + private String[] topics; + + // 推送客户端 + private String[] clients; + + // 消息体 + private Object payload; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getNamespace() { + return namespace; + } + + public void setNamespace(String namespace) { + this.namespace = namespace; + } + + public String[] getTopics() { + return topics; + } + + public void setTopics(String[] topics) { + this.topics = topics; + } + + public String[] getClients() { + return clients; + } + + public void setClients(String[] clients) { + this.clients = clients; + } + + public Object getPayload() { + return payload; + } + + public void setPayload(Object payload) { + this.payload = payload; + } + + public String getAccessKey() { + return accessKey; + } + + public void setAccessKey(String accessKey) { + this.accessKey = accessKey; + } + +} diff --git a/zheng-notify/zheng-notify-server/pom.xml b/zheng-notify/zheng-notify-server/pom.xml new file mode 100644 index 00000000..3067fa65 --- /dev/null +++ b/zheng-notify/zheng-notify-server/pom.xml @@ -0,0 +1,111 @@ + + 4.0.0 + + + com.zheng + zheng-notify + 1.0.0 + + + zheng-notify-server + jar + + zheng-notify-server + http://www.zhangshuzheng.cn + + + UTF-8 + + + + + com.zheng + zheng-common + 1.0.0 + jar + + + junit + junit + 4.12 + test + + + javax.servlet + servlet-api + 2.5 + provided + + + javax.servlet + jstl + 1.2 + + + + + + dev + + dev + + + true + + + + test + + test + + + + prod + + prod + + + + + + zheng-notify-server + + src/main/resources/profiles/${env}.properties + + + + src/main/resources + true + + + + + + org.eclipse.jetty + jetty-maven-plugin + + 9.2.7.v20150116 + + 3 + + / + + + 8881 + + automatic + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.18.1 + + true + true + + + + + diff --git a/zheng-notify/zheng-notify-server/src/main/java/com/zheng/notify/server/controller/IndexController.java b/zheng-notify/zheng-notify-server/src/main/java/com/zheng/notify/server/controller/IndexController.java new file mode 100644 index 00000000..4c80e5b0 --- /dev/null +++ b/zheng-notify/zheng-notify-server/src/main/java/com/zheng/notify/server/controller/IndexController.java @@ -0,0 +1,26 @@ +package com.zheng.notify.server.controller; + +import com.zheng.common.base.BaseController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 测试controller + * Created by shuzheng on 2017/2/18. + */ +@Controller +public class IndexController extends BaseController { + + private static final Logger LOGGER = LoggerFactory.getLogger(IndexController.class); + + @RequestMapping(value = "/index", method = RequestMethod.GET) + @ResponseBody + public String index() { + return "index"; + } + +} \ No newline at end of file diff --git a/zheng-notify/zheng-notify-server/src/main/resources/config.properties b/zheng-notify/zheng-notify-server/src/main/resources/config.properties new file mode 100644 index 00000000..63dd02bb --- /dev/null +++ b/zheng-notify/zheng-notify-server/src/main/resources/config.properties @@ -0,0 +1,3 @@ +app.name=${app.name} +env=${profile.env} +zheng.ui.path=${zheng.ui.path} \ No newline at end of file diff --git a/zheng-notify/zheng-notify-server/src/main/resources/i18n/messages_en_US.properties b/zheng-notify/zheng-notify-server/src/main/resources/i18n/messages_en_US.properties new file mode 100644 index 00000000..056877f3 --- /dev/null +++ b/zheng-notify/zheng-notify-server/src/main/resources/i18n/messages_en_US.properties @@ -0,0 +1,4 @@ +403=Access forbidden! +404=Page not found! +500=Internal server error! +error=Server error! \ No newline at end of file diff --git a/zheng-notify/zheng-notify-server/src/main/resources/i18n/messages_zh_CN.properties b/zheng-notify/zheng-notify-server/src/main/resources/i18n/messages_zh_CN.properties new file mode 100644 index 00000000..d1c6f767 --- /dev/null +++ b/zheng-notify/zheng-notify-server/src/main/resources/i18n/messages_zh_CN.properties @@ -0,0 +1,4 @@ +403=\u6CA1\u6709\u6743\u9650\uFF01 +404=\u9875\u9762\u6CA1\u6709\u627E\u5230\uFF01 +500=\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF\uFF01 +error=\u670D\u52A1\u5668\u53D1\u751F\u9519\u8BEF\uFF01 \ No newline at end of file diff --git a/zheng-notify/zheng-notify-server/src/main/resources/log4j.properties b/zheng-notify/zheng-notify-server/src/main/resources/log4j.properties new file mode 100644 index 00000000..d199d8ce --- /dev/null +++ b/zheng-notify/zheng-notify-server/src/main/resources/log4j.properties @@ -0,0 +1,30 @@ +#off/fatal/error/warn/info/debug/all +log4j.debug=false +log4j.rootLogger=info,stdout,log,errorlog + +# Console +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target = System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n + +### Log ### +log4j.appender.log = org.apache.log4j.DailyRollingFileAppender +log4j.appender.log.File = ../logs/zheng-notify-server.log +log4j.appender.log.Append = true +log4j.appender.log.Threshold = DEBUG +log4j.appender.log.DatePattern='.'yyyy-MM-dd +log4j.appender.log.layout = org.apache.log4j.PatternLayout +log4j.appender.log.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] [ %C{1}.java :%L(%M)] %m%n + +### Error ### +log4j.appender.errorlog = org.apache.log4j.DailyRollingFileAppender +log4j.appender.errorlog.File = ../logs/zheng-notify-server.error.log +log4j.appender.errorlog.Append = true +log4j.appender.errorlog.Threshold = ERROR +log4j.appender.errorlog.DatePattern='.'yyyy-MM-dd +log4j.appender.errorlog.layout = org.apache.log4j.PatternLayout +log4j.appender.errorlog.layout.ConversionPattern =%-d{yyyy-MM-dd HH:mm:ss} [ %p ] [ %C{1}.java :%L(%M)] %m%n + +#Spring logging configuration +log4j.category.org.springframework = warn \ No newline at end of file diff --git a/zheng-notify/zheng-notify-server/src/main/resources/profiles/dev.properties b/zheng-notify/zheng-notify-server/src/main/resources/profiles/dev.properties new file mode 100644 index 00000000..f15fe569 --- /dev/null +++ b/zheng-notify/zheng-notify-server/src/main/resources/profiles/dev.properties @@ -0,0 +1,3 @@ +app.name=zheng-notify +profile.env=dev +zheng.ui.path=http://ui.zhangshuzheng.cn:1000/ \ No newline at end of file diff --git a/zheng-notify/zheng-notify-server/src/main/resources/profiles/prod.properties b/zheng-notify/zheng-notify-server/src/main/resources/profiles/prod.properties new file mode 100644 index 00000000..1047706c --- /dev/null +++ b/zheng-notify/zheng-notify-server/src/main/resources/profiles/prod.properties @@ -0,0 +1,3 @@ +app.name=zheng-notify +profile.env=prod +zheng.ui.path=http://ui.zhangshuzheng.cn:1000/ \ No newline at end of file diff --git a/zheng-notify/zheng-notify-server/src/main/resources/profiles/test.properties b/zheng-notify/zheng-notify-server/src/main/resources/profiles/test.properties new file mode 100644 index 00000000..30d11296 --- /dev/null +++ b/zheng-notify/zheng-notify-server/src/main/resources/profiles/test.properties @@ -0,0 +1,3 @@ +app.name=zheng-notify +profile.env=test +zheng.ui.path=http://ui.zhangshuzheng.cn:1000/ \ No newline at end of file diff --git a/zheng-notify/zheng-notify-server/src/main/resources/springMVC-servlet.xml b/zheng-notify/zheng-notify-server/src/main/resources/springMVC-servlet.xml new file mode 100644 index 00000000..3f302519 --- /dev/null +++ b/zheng-notify/zheng-notify-server/src/main/resources/springMVC-servlet.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zheng-notify/zheng-notify-server/src/main/webapp/WEB-INF/web.xml b/zheng-notify/zheng-notify-server/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000..63bd5d04 --- /dev/null +++ b/zheng-notify/zheng-notify-server/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,66 @@ + + + + + + CharacterEncodingFilter + org.springframework.web.filter.CharacterEncodingFilter + + encoding + UTF-8 + + + + CharacterEncodingFilter + /* + REQUEST + FORWARD + + + + + org.springframework.web.context.ContextLoaderListener + + + contextConfigLocation + + classpath*:applicationContext*.xml + + + + + + log4jConfigLocation + classpath:log4j.properties + + + + + springMVC + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath*:springMVC-servlet.xml + + 1 + true + + + springMVC + / + + + + + 30 + + + + + index.html + + + \ No newline at end of file