diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/MqConfig.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/MqConfig.java
new file mode 100644
index 0000000000..297c305a39
--- /dev/null
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/MqConfig.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2018 人人开源 All rights reserved.
+ *
+ * https://www.renren.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.epmet.commons.tools.config;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 消息网关配置信息
+ *
+ * @author Mark sunlightcs@gmail.com
+ * @since 1.0.0
+ */
+@Data
+@Configuration
+public class MqConfig {
+ @Value("${elink.mq.appId}")
+ private String appId;
+ @Value("${elink.mq.token}")
+ private String token;
+ @JsonIgnore
+ @Value("${elink.mq.host}")
+ private String host;
+}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqBaseMsgDTO.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqBaseMsgDTO.java
new file mode 100644
index 0000000000..812d2e5baa
--- /dev/null
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqBaseMsgDTO.java
@@ -0,0 +1,30 @@
+package com.epmet.commons.tools.dto.form.mq;
+
+import lombok.Data;
+import org.springframework.stereotype.Component;
+
+/**
+ * 消息网关基础信息
+ *
+ * @author jianjun liu
+ * @date 2020-07-21 14:33
+ **/
+@Data
+@Component
+public class MqBaseMsgDTO extends MqConfigDTO {
+ private static final long serialVersionUID = 8176470786428432009L;
+
+ /**
+ * mq的事件类型
+ */
+ private String eventClass;
+ /**
+ * 事件code
+ */
+ private String eventTag;
+ /**
+ * 消息体
+ */
+ private String msg;
+
+}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqConfigDTO.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqConfigDTO.java
new file mode 100644
index 0000000000..24a388f8ae
--- /dev/null
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqConfigDTO.java
@@ -0,0 +1,18 @@
+package com.epmet.commons.tools.dto.form.mq;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 消息网关基础信息
+ *
+ * @author jianjun liu
+ * @date 2020-07-21 14:33
+ **/
+@Data
+public class MqConfigDTO implements Serializable {
+ private String appId;
+ private String token;
+ private String requestUrl;
+}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqReturnBaseResult.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqReturnBaseResult.java
new file mode 100644
index 0000000000..f25e66bcfd
--- /dev/null
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqReturnBaseResult.java
@@ -0,0 +1,19 @@
+package com.epmet.commons.tools.dto.form.mq;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * desc:消息网关返回结果
+ *
+ * @author lyn
+ * @date 2020/7/21 13:38
+ */
+@Data
+public class MqReturnBaseResult implements Serializable {
+ private static final long serialVersionUID = -7763308686382363929L;
+ Integer errCode;
+ String errMsg;
+ String data;
+}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqSubscribeFormDTO.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqSubscribeFormDTO.java
new file mode 100644
index 0000000000..4eb3a21bc7
--- /dev/null
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqSubscribeFormDTO.java
@@ -0,0 +1,36 @@
+package com.epmet.commons.tools.dto.form.mq;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * desc: 订阅服务参数 实体类
+ *
+ * @date: 2020/6/29 9:06
+ * @author: jianjun liu
+ * email:liujianjun@git.elinkit.com.cn
+ */
+@Data
+public class MqSubscribeFormDTO implements Serializable {
+
+ /**
+ * 消息接收者
+ */
+ private String belongAppId;
+
+ /**
+ * 密钥
+ */
+ private String eventClass;
+ /**
+ * 发送内容
+ */
+ private String eventTag;
+
+ /**
+ * 是否at所有人
+ */
+ private String callbackUrl;
+
+}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/ReceiveMqMsg.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/ReceiveMqMsg.java
new file mode 100644
index 0000000000..b78d568924
--- /dev/null
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/ReceiveMqMsg.java
@@ -0,0 +1,21 @@
+package com.epmet.commons.tools.dto.form.mq;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 亿联云消息网关消息回调外层DTO
+ *
+ * @author jianjun liu
+ * @date 2020-07-20 8:58
+ **/
+@Data
+public class ReceiveMqMsg implements Serializable {
+
+ private static final long serialVersionUID = -2776439983884650701L;
+ /**
+ * 消息体 json串
+ */
+ private String msg;
+}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/MqMethodPathEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/MqMethodPathEnum.java
new file mode 100644
index 0000000000..014722de84
--- /dev/null
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/MqMethodPathEnum.java
@@ -0,0 +1,42 @@
+package com.epmet.commons.tools.enums;
+
+/**
+ * 消息网关方法枚举类
+ * dev|test|prod
+ *
+ * @author jianjun liu
+ * @date 2020-07-03 11:14
+ **/
+public enum MqMethodPathEnum {
+ SEND_MSG("producerService/producer/sendMsg", "发送消息"),
+
+ ;
+
+ private String code;
+ private String name;
+
+
+
+ MqMethodPathEnum(String code, String name) {
+ this.code = code;
+ this.name = name;
+ }
+
+ public static MqMethodPathEnum getEnum(String code) {
+ MqMethodPathEnum[] values = MqMethodPathEnum.values();
+ for (MqMethodPathEnum value : values) {
+ if (code != null && value.getCode().equals(code)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java
index 6312fa2df0..5061222074 100644
--- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java
@@ -4,8 +4,6 @@ import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.dto.form.DingTalkTextMsg;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
-import com.epmet.commons.tools.scan.param.TextScanParamDTO;
-import com.epmet.commons.tools.scan.param.TextTaskDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.ArrayUtils;
@@ -20,22 +18,34 @@ import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.socket.PlainConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.util.CollectionUtils;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -55,6 +65,28 @@ public class HttpClientManager {
* HttpClient对象
*/
private static CloseableHttpClient httpclient = HttpClients.custom().disableAutomaticRetries().build();
+ private static CloseableHttpClient httpsClient;
+
+ static {
+ try {
+ // 采用绕过验证的方式处理https请求
+ SSLContext sslcontext = createIgnoreVerifySSL();
+ // 设置协议http和https对应的处理socket链接工厂的对象
+ Registry socketFactoryRegistry = RegistryBuilder.create()
+ .register("http", PlainConnectionSocketFactory.INSTANCE)
+ .register("https", new SSLConnectionSocketFactory(sslcontext,
+ SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER))
+ .build();
+ PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(
+ socketFactoryRegistry);
+ HttpClients.custom().setConnectionManager(connManager);
+
+ // 创建自定义的httpclient对象
+ httpsClient = HttpClients.custom().setConnectionManager(connManager).build();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
/*** 超时设置 ****/
private static RequestConfig requestConfig = RequestConfig.custom()
@@ -78,7 +110,7 @@ public class HttpClientManager {
*
* @author: jianjun liu
*/
- public Result sendPost(String url, Map paramsMap) {
+ public Result sendPost(String url, Map paramsMap) {
try {
HttpPost httppost = new HttpPost(url);
@@ -92,9 +124,8 @@ public class HttpClientManager {
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(list, "utf-8");
httppost.setEntity(urlEncodedFormEntity);
- return execute(httppost);
+ return execute(httppost, false);
} catch (Exception e) {
- e.printStackTrace();
log.error("send exception", e);
return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
@@ -119,7 +150,7 @@ public class HttpClientManager {
StringEntity se = new StringEntity(jsonStrParam, "utf-8");
httppost.setEntity(se);
}
- return execute(httppost);
+ return execute(httppost, false);
} catch (Exception e) {
log.error("send exception", e);
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
@@ -144,13 +175,38 @@ public class HttpClientManager {
HttpEntity reqEntity = MultipartEntityBuilder.create()
.addPart("media", fileBody).build();
httppost.setEntity(reqEntity);
- return execute(httppost);
+ return execute(httppost,false);
} catch (Exception e) {
log.error("send exception", e);
throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
}
+ /**
+ * desc: https发送json post 请求
+ * param: url,jsonStrParam
+ * return: Result
+ * date: 2019/2/21 9:12
+ *
+ * @author: jianjun liu
+ */
+ public Result sendPostByHttps(String url, String jsonStrParam) {
+ try {
+ HttpPost httppost = new HttpPost(url);
+ httppost.setConfig(requestConfig);
+ httppost.addHeader("Content-Type", "application/json");
+ if (StringUtils.isNotEmpty(jsonStrParam)) {
+ StringEntity se = new StringEntity(jsonStrParam, "utf-8");
+ httppost.setEntity(se);
+ }
+ return execute(httppost, true);
+ } catch (Exception e) {
+ log.error("sendPostByHttps exception", e);
+ throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
+ }
+
+ }
+
/**
* desc: 发送钉钉群消息 简版
* param: url,jsonStrParam
@@ -168,10 +224,10 @@ public class HttpClientManager {
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
- String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
+ String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
DingTalkTextMsg msg = new DingTalkTextMsg();
msg.setContent(content);
- url = url.concat("×tamp="+timestamp+"&sign="+sign);
+ url = url.concat("×tamp=" + timestamp + "&sign=" + sign);
String jsonStrParam = msg.getMsgContent();
return sendPostByJSON(url, jsonStrParam);
} catch (Exception e) {
@@ -200,25 +256,28 @@ public class HttpClientManager {
}
HttpGet httpGet = new HttpGet(builder.build());
httpGet.setConfig(requestConfig);
- return execute(httpGet);
+ return execute(httpGet, false);
} catch (Exception e) {
log.error("sendGet exception", e);
return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
}
- private Result execute(HttpRequestBase httpMethod) {
+ private Result execute(HttpRequestBase httpMethod, boolean isHttps) {
CloseableHttpResponse response = null;
try {
- response = httpclient.execute(httpMethod);
- log.debug("http send response:{}", JSON.toJSONString(response));
+ if (isHttps) {
+ response = httpsClient.execute(httpMethod);
+ } else {
+ response = httpclient.execute(httpMethod);
+ }
if (response != null && response.getStatusLine() != null) {
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String result = EntityUtils.toString(response.getEntity());
return new Result().ok(result);
} else {
log.warn("execute http method fail,httpStatus:{}", response.getStatusLine().getStatusCode());
- return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(),"请求失败httpStatus:"+response.getStatusLine().getStatusCode());
+ return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), "请求失败httpStatus:" + response.getStatusLine().getStatusCode());
}
}
} catch (Exception e) {
@@ -297,17 +356,29 @@ public class HttpClientManager {
return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
- public static void main(String[] args) {
- String url = "http://localhost:8107/epmetscan/api/textSyncScan";
- TextTaskDTO p = new TextTaskDTO();
- p.setDataId("1");
- p.setContent("neirong1");
- List list = new ArrayList<>();
- list.add(p);
- TextScanParamDTO param = new TextScanParamDTO();
- param.setTasks(list);
- Result result = HttpClientManager.getInstance().sendPostByJSON(url, JSON.toJSONString(param));
- System.out.println(JSON.toJSONString(result));
+ private static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {
+ SSLContext sc = SSLContext.getInstance("SSLv3");
+
+ // 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法
+ X509TrustManager trustManager = new X509TrustManager() {
+ @Override
+ public void checkClientTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
+ String paramString) throws CertificateException {
+ }
+
+ @Override
+ public void checkServerTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
+ String paramString) throws CertificateException {
+ }
+
+ @Override
+ public java.security.cert.X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+ };
+
+ sc.init(null, new TrustManager[]{trustManager}, null);
+ return sc;
}
}
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ScanContentUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ScanContentUtils.java
index a39a45309e..ef7a3257a6 100644
--- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ScanContentUtils.java
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ScanContentUtils.java
@@ -18,7 +18,6 @@ import java.util.List;
* 扫描内容工具类
*
* @author jianjun liu
- * @email liujianjun@yunzongnet.com
* @date 2020-06-08 8:28
**/
@Slf4j
diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/SendMqMsgUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/SendMqMsgUtils.java
new file mode 100644
index 0000000000..65fb179ca3
--- /dev/null
+++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/SendMqMsgUtils.java
@@ -0,0 +1,69 @@
+package com.epmet.commons.tools.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.epmet.commons.tools.config.MqConfig;
+import com.epmet.commons.tools.constant.NumConstant;
+import com.epmet.commons.tools.dto.form.mq.MqBaseMsgDTO;
+import com.epmet.commons.tools.dto.form.mq.MqReturnBaseResult;
+import com.epmet.commons.tools.enums.MqMethodPathEnum;
+import com.epmet.commons.tools.exception.EpmetErrorCode;
+import com.epmet.commons.tools.exception.ValidateException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * 发送亿联云消息工具类
+ *
+ * @author jianjun liu
+ * @date 2020-06-08 8:28
+ **/
+@Slf4j
+@Component
+public class SendMqMsgUtils {
+ private static MqConfig mqStaticConfig;
+
+ /**
+ * desc:发送mq消息
+ *
+ * @return
+ */
+ public static Result sendMsg(MqBaseMsgDTO msg) {
+ if (mqStaticConfig == null) {
+ mqStaticConfig = SpringContextUtils.getBean(MqConfig.class);
+ }
+ log.debug("sendMsg param:{}", JSON.toJSONString(msg));
+ try {
+ // TODO
+ //ValidatorUtils.validateEntity(msg, null);
+ } catch (ValidateException e) {
+ return new Result().error(e.getMsg());
+ }
+ msg.setAppId(mqStaticConfig.getAppId());
+ msg.setRequestUrl(mqStaticConfig.getHost().concat(MqMethodPathEnum.SEND_MSG.getCode()));
+ msg.setToken(mqStaticConfig.getToken());
+ try {
+ Result result = HttpClientManager.getInstance().sendPostByHttps(msg.getRequestUrl(), JSON.toJSONString(msg));
+ log.debug("sendMsg result:{}", JSON.toJSONString(result));
+ if (result.success()) {
+ MqReturnBaseResult resultResult = JSON.parseObject(result.getData(), MqReturnBaseResult.class);
+ if (resultResult.getErrCode().equals(NumConstant.ZERO)) {
+ JSONObject jsonObject = JSON.parseObject(resultResult.getData());
+ return new Result().ok(jsonObject.getString("msgId"));
+ } else {
+ log.error("sendMsg fail,resultData:{}", JSON.toJSONString(resultResult));
+ return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), resultResult.getErrMsg());
+ }
+ }
+ Result resultResult = new Result<>();
+ resultResult.error(result.getCode(), result.getMsg());
+ resultResult.setInternalMsg(result.getInternalMsg());
+ return resultResult;
+ } catch (Exception e) {
+ log.debug("sendMsg exception", e);
+ return new Result().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
+ }
+ }
+
+
+}
diff --git a/epmet-module/epmet-heart/epmet-heart-server/pom.xml b/epmet-module/epmet-heart/epmet-heart-server/pom.xml
index 3c200a6622..2646e872e2 100644
--- a/epmet-module/epmet-heart/epmet-heart-server/pom.xml
+++ b/epmet-module/epmet-heart/epmet-heart-server/pom.xml
@@ -120,6 +120,11 @@
false
+
+ https://epmet-dev.elinkservice.cn/estos/
+ producerService/producer/sendMsg
+ 202007161443499985fa2d397436d10356542134c8f008c48
+ 52d9d9b0e7d0eb5b8b81c205b579e07c
@@ -152,6 +157,11 @@
true
+
+ https://epmet-dev.elinkservice.cn/estos/
+ producerService/producer/sendMsg
+ 202007161443499985fa2d397436d10356542134c8f008c48
+ 52d9d9b0e7d0eb5b8b81c205b579e07c
@@ -184,6 +194,11 @@
true
+
+ https://epmet-dev.elinkservice.cn/estos/
+ producerService/producer/sendMsg
+ 202007161443499985fa2d397436d10356542134c8f008c48
+ 52d9d9b0e7d0eb5b8b81c205b579e07c
diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/TestController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/TestController.java
index 773e645d2c..a7ddd79e3b 100644
--- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/TestController.java
+++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/TestController.java
@@ -1,15 +1,17 @@
package com.epmet.controller;
+import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
+import com.epmet.commons.tools.dto.form.mq.MqBaseMsgDTO;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
+import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
+import com.epmet.commons.tools.utils.SendMqMsgUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
@@ -23,15 +25,38 @@ import java.util.Map;
@RestController
@RequestMapping("demo")
public class TestController {
- private Logger logger = LogManager.getLogger(TestController.class);
- @Autowired
- private LoginUserUtil loginUserUtil;
- @GetMapping("test")
- public Result test(@LoginUser TokenDto tokenDto){
- Map map=new HashMap<>();
- String userId=loginUserUtil.getLoginUserId();
- map.put("TokenDto", tokenDto);
- map.put("userId",userId);
- return new Result().ok(map);
- }
+ private Logger logger = LogManager.getLogger(TestController.class);
+ @Autowired
+ private LoginUserUtil loginUserUtil;
+
+ @GetMapping("test")
+ public Result test(@LoginUser TokenDto tokenDto) {
+ Map map = new HashMap<>();
+ String userId = loginUserUtil.getLoginUserId();
+ map.put("TokenDto", tokenDto);
+ map.put("userId", userId);
+ return new Result().ok(map);
+ }
+
+ @PostMapping("sendPointMsg")
+ public Result sendPointEvent(@RequestBody MqBaseMsgDTO mqBaseMsgDTO) {
+ Result result = SendMqMsgUtils.sendMsg(mqBaseMsgDTO);
+ logger.info("param:{},reult:{}", mqBaseMsgDTO, result);
+ return result;
+ }
+
+ public static void main(String[] args) {
+ String url = "https://epmet-dev.elinkservice.cn/estos/producerService/producer/sendMsg";
+ Map msgInfo = new HashMap(6);
+ msgInfo.put("appId", "202007161443499985fa2d397436d10356542134c8f008c48");
+ //msgInfo.put("appName", "党群e事通开发测试");
+ msgInfo.put("eventClass", "epmet_heart");
+ msgInfo.put("eventTag", "active_send_point");
+ msgInfo.put("msg", "我是消息体");
+ //msgInfo.put("msgId", "123456");
+ msgInfo.put("token", "52d9d9b0e7d0eb5b8b81c205b579e07c");
+ String jsonStrParam = JSON.toJSONString(msgInfo);
+ Result result = HttpClientManager.getInstance().sendPostByHttps(url, jsonStrParam);
+ System.out.println("result:" + result + "param:" + jsonStrParam);
+ }
}
diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml
index f1b4e09318..e9eeec50c4 100644
--- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml
+++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml
@@ -116,4 +116,12 @@ ribbon:
#pageHelper分页插件
pagehelper:
helper-dialect: mysql
- reasonable: false #分页合理化配置,例如输入页码为-1,则自动转化为最小页码1
\ No newline at end of file
+ reasonable: false #分页合理化配置,例如输入页码为-1,则自动转化为最小页码1
+
+#亿联云消息网关
+elink:
+ mq:
+ appId: @elink.mq.appId@ #项目接入亿联云的应用Id
+ token: @elink.mq.token@ #项目接入亿联云的应用token 相当于secret
+ host: @elink.mq.host@ #亿联云消息网关服务地址
+ sendMsgPath: @elink.mq.sendMsgPath@ #发送消息路径
\ No newline at end of file
diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/dto/form/SendPointFormDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/dto/form/SendPointFormDTO.java
new file mode 100644
index 0000000000..ae4c7aeeba
--- /dev/null
+++ b/epmet-module/epmet-point/epmet-point-client/src/main/java/dto/form/SendPointFormDTO.java
@@ -0,0 +1,18 @@
+package dto.form;/**
+ * @author jianjun liu
+ * @email liujianjun@yunzongnet.com
+ * @date 2020-07-17 17:16
+ **/
+
+import lombok.Data;
+
+/**
+ * desc:发送积分dto
+ * @author lyn
+ * @date 2020/7/17 17:16
+ */
+@Data
+public class SendPointFormDTO {
+ private String pointDesc;
+ private Integer point;
+}
diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/config/MqSubcribeConfig.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/config/MqSubcribeConfig.java
new file mode 100644
index 0000000000..e7e1a33c7f
--- /dev/null
+++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/config/MqSubcribeConfig.java
@@ -0,0 +1,45 @@
+package com.epmet.config;
+
+import com.alibaba.fastjson.JSON;
+import com.epmet.commons.tools.dto.form.mq.MqSubscribeFormDTO;
+import com.epmet.commons.tools.utils.HttpClientManager;
+import com.epmet.commons.tools.utils.Result;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * desc:订阅积分事件
+ */
+@Component
+public class MqSubcribeConfig {
+ private Logger logger = LogManager.getLogger(MqSubcribeConfig.class);
+
+ private String mqServer = "https://epmet-dev.elinkservice.cn/estos/mq-subscriber/subscribe";
+ private String token = "1cfcbb5ade1e3202855ee5819983d773";
+
+ @PostConstruct
+ private void subscribe() {
+ MqSubscribeFormDTO event = new MqSubscribeFormDTO();
+ event.setBelongAppId("202007161443499985fa2d397436d10356542134c8f008c48");
+ event.setEventClass("epmet_heart");
+ event.setEventTag("active_send_point");
+ String callbackUrl = "http://192.168.51.49/point/callback/sendPoint";
+ callbackUrl = "";
+ event.setCallbackUrl(callbackUrl);
+ List subscribeFormDTOList = new ArrayList<>();
+ subscribeFormDTOList.add(event);
+ Map param = new HashMap<>();
+ param.put("token", token);
+ param.put("mqSubscribeList", subscribeFormDTOList);
+ String jsonStrParam = JSON.toJSONString(param);
+ Result result = HttpClientManager.getInstance().sendPostByHttps(mqServer, JSON.toJSONString(param));
+ logger.error("subscriber==jsonStrParam:{}=====result:{}" ,jsonStrParam, JSON.toJSONString(result));
+ }
+}
diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/MqPointCallbackController.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/MqPointCallbackController.java
new file mode 100644
index 0000000000..aeaca6e25d
--- /dev/null
+++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/MqPointCallbackController.java
@@ -0,0 +1,45 @@
+package com.epmet.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.epmet.commons.tools.dto.form.mq.ReceiveMqMsg;
+import com.epmet.commons.tools.utils.ConvertUtils;
+import dto.form.SendPointFormDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * desc: 积分相关消息回调controller
+ *
+ * @date: 2020/7/21 9:04
+ * @author: jianjun liu
+ * email:liujianjun@git.elinkit.com.cn
+ */
+@Slf4j
+@RestController
+@RequestMapping("mqCallback")
+public class MqPointCallbackController {
+ private Logger logger = LogManager.getLogger(MqPointCallbackController.class);
+
+ /**
+ * desc:爱心活动积分发放
+ *
+ * @param mqMsg
+ * @return
+ */
+ @RequestMapping("activeSendPoint")
+ public String activeSendPoint(ReceiveMqMsg mqMsg) {
+ log.debug("activeSendPoint receive mqMsg:{}", JSON.toJSONString(mqMsg));
+ if (mqMsg == null || StringUtils.isBlank(mqMsg.getMsg())) {
+ log.warn("activeSendPoint mqMsg is empty");
+ return "success";
+ }
+ SendPointFormDTO formDTO = ConvertUtils.sourceToTarget(mqMsg.getMsg(), SendPointFormDTO.class);
+ log.info("activeSendPoint consumer success,formDTO:{}", JSON.toJSONString(formDTO));
+ return "success";
+ }
+}
+
diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/epmet_point.sql b/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/epmet_point.sql
index af08a35db6..91e47c87ad 100644
--- a/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/epmet_point.sql
+++ b/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/epmet_point.sql
@@ -1,15 +1,15 @@
CREATE TABLE point_rule(
ID VARCHAR(64) NOT NULL COMMENT '主键' ,
CUSTOMER_ID VARCHAR(64) COMMENT '客户ID' ,
+ RULE_NAME VARCHAR(32) COMMENT '规则名称 与事件名称保持一致即可' ,
+ RULE_DESC VARCHAR(32) COMMENT '规则说明 事件说明' ,
EVENT_CODE VARCHAR(32) COMMENT '事件CODE 来自事件表' ,
EVENT_NAME VARCHAR(32) COMMENT '事件名称 来自事件表' ,
- RULE_DESC VARCHAR(32) COMMENT '积分说明 事件说明' ,
OPERATE_TYPE VARCHAR(32) COMMENT '操作类型 加积分:add;减积分:subtract' ,
UP_LIMIT INT COMMENT '积分上限' ,
- untitled VARCHAR(32) COMMENT '积分上限描述' ,
+ UP_LIMIT_DESC VARCHAR(64) COMMENT '积分上限描述' ,
POINT_NUM INT DEFAULT 0 COMMENT '获得积分值' ,
POINT_UNIT VARCHAR(32) COMMENT '获得积分单位 次:time;分钟:minute;小时:hour' ,
- REMARK VARCHAR(128) COMMENT '备注 备注说明' ,
ENABLED_FLAG VARCHAR(1) COMMENT '是否启用 0-否,1-是' ,
DEL_FLAG VARCHAR(1) COMMENT '删除标识 0-否,1-是' ,
REVISION INT COMMENT '乐观锁' ,
@@ -18,7 +18,7 @@ CREATE TABLE point_rule(
UPDATED_BY VARCHAR(32) COMMENT '更新人' ,
UPDATED_TIME DATETIME COMMENT '更新时间' ,
PRIMARY KEY (ID)
-) COMMENT = '积分规则表';;
+) COMMENT = '积分规则表';
CREATE TABLE sys_operate_log(
ID VARCHAR(64) NOT NULL COMMENT '主键' ,