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 '主键' ,