Browse Source

添加消息网关 发送消息接收消息(消息未处理)

dev
jianjun 5 years ago
parent
commit
a2086c03cc
  1. 4
      epmet-commons/epmet-commons-tools/pom.xml
  2. 33
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/MqConfig.java
  3. 30
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqBaseMsgDTO.java
  4. 18
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqConfigDTO.java
  5. 19
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqReturnBaseResult.java
  6. 36
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqSubscribeFormDTO.java
  7. 21
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/ReceiveMqMsg.java
  8. 42
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/MqMethodPathEnum.java
  9. 113
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java
  10. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ScanContentUtils.java
  11. 69
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/SendMqMsgUtils.java
  12. 15
      epmet-module/epmet-heart/epmet-heart-server/pom.xml
  13. 31
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/TestController.java
  14. 8
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml
  15. 18
      epmet-module/epmet-point/epmet-point-client/src/main/java/dto/form/SendPointFormDTO.java
  16. 45
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/config/MqSubcribeConfig.java
  17. 45
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/MqPointCallbackController.java
  18. 8
      epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/epmet_point.sql

4
epmet-commons/epmet-commons-tools/pom.xml

@ -133,10 +133,6 @@
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
</dependency>
</dependencies>
<build>

33
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.
* <p>
* https://www.renren.io
* <p>
* 版权所有侵权必究
*/
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;
}

30
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;
}

18
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;
}

19
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;
}

36
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;
}

21
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;
}

42
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;
}
}

113
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<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>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<String> sendPost(String url, Map<String, String> paramsMap) {
public Result<String> sendPost(String url, Map<String, Object> 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<String>().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<String>
* date: 2019/2/21 9:12
*
* @author: jianjun liu
*/
public Result<String> 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
@ -200,18 +256,21 @@ 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<String>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
}
private Result<String> execute(HttpRequestBase httpMethod) {
private Result<String> execute(HttpRequestBase httpMethod, boolean isHttps) {
CloseableHttpResponse response = null;
try {
if (isHttps) {
response = httpsClient.execute(httpMethod);
} else {
response = httpclient.execute(httpMethod);
log.debug("http send response:{}", JSON.toJSONString(response));
}
if (response != null && response.getStatusLine() != null) {
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String result = EntityUtils.toString(response.getEntity());
@ -297,17 +356,29 @@ public class HttpClientManager {
return new Result<Byte[]>().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<TextTaskDTO> list = new ArrayList<>();
list.add(p);
TextScanParamDTO param = new TextScanParamDTO();
param.setTasks(list);
Result<String> 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;
}
}

1
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

69
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<String> 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<String>().error(e.getMsg());
}
msg.setAppId(mqStaticConfig.getAppId());
msg.setRequestUrl(mqStaticConfig.getHost().concat(MqMethodPathEnum.SEND_MSG.getCode()));
msg.setToken(mqStaticConfig.getToken());
try {
Result<String> 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<String>().ok(jsonObject.getString("msgId"));
} else {
log.error("sendMsg fail,resultData:{}", JSON.toJSONString(resultResult));
return new Result<String>().error(EpmetErrorCode.SERVER_ERROR.getCode(), resultResult.getErrMsg());
}
}
Result<String> 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<String>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
}
}
}

15
epmet-module/epmet-heart/epmet-heart-server/pom.xml

@ -120,6 +120,11 @@
<nacos.ip/>
<spring.flyway.enabled>false</spring.flyway.enabled>
<!--亿联云消息网关配置-->
<elink.mq.host>https://epmet-dev.elinkservice.cn/estos/</elink.mq.host>
<elink.mq.sendMsgPath>producerService/producer/sendMsg</elink.mq.sendMsgPath>
<elink.mq.appId>202007161443499985fa2d397436d10356542134c8f008c48</elink.mq.appId>
<elink.mq.token>52d9d9b0e7d0eb5b8b81c205b579e07c</elink.mq.token>
</properties>
</profile>
<profile>
@ -152,6 +157,11 @@
<nacos.ip/>
<spring.flyway.enabled>true</spring.flyway.enabled>
<!--亿联云消息网关配置-->
<elink.mq.host>https://epmet-dev.elinkservice.cn/estos/</elink.mq.host>
<elink.mq.sendMsgPath>producerService/producer/sendMsg</elink.mq.sendMsgPath>
<elink.mq.appId>202007161443499985fa2d397436d10356542134c8f008c48</elink.mq.appId>
<elink.mq.token>52d9d9b0e7d0eb5b8b81c205b579e07c</elink.mq.token>
</properties>
</profile>
<profile>
@ -184,6 +194,11 @@
<nacos.ip/>
<spring.flyway.enabled>true</spring.flyway.enabled>
<!--亿联云消息网关配置-->
<elink.mq.host>https://epmet-dev.elinkservice.cn/estos/</elink.mq.host>
<elink.mq.sendMsgPath>producerService/producer/sendMsg</elink.mq.sendMsgPath>
<elink.mq.appId>202007161443499985fa2d397436d10356542134c8f008c48</elink.mq.appId>
<elink.mq.token>52d9d9b0e7d0eb5b8b81c205b579e07c</elink.mq.token>
</properties>
</profile>
</profiles>

31
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;
@ -26,6 +28,7 @@ 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<>();
@ -34,4 +37,26 @@ public class TestController {
map.put("userId", userId);
return new Result().ok(map);
}
@PostMapping("sendPointMsg")
public Result sendPointEvent(@RequestBody MqBaseMsgDTO mqBaseMsgDTO) {
Result<String> 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<String, String> msgInfo = new HashMap<String, String>(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<String> result = HttpClientManager.getInstance().sendPostByHttps(url, jsonStrParam);
System.out.println("result:" + result + "param:" + jsonStrParam);
}
}

8
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml

@ -117,3 +117,11 @@ ribbon:
pagehelper:
helper-dialect: mysql
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@ #发送消息路径

18
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;
}

45
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<MqSubscribeFormDTO> subscribeFormDTOList = new ArrayList<>();
subscribeFormDTOList.add(event);
Map<String, Object> param = new HashMap<>();
param.put("token", token);
param.put("mqSubscribeList", subscribeFormDTOList);
String jsonStrParam = JSON.toJSONString(param);
Result<String> result = HttpClientManager.getInstance().sendPostByHttps(mqServer, JSON.toJSONString(param));
logger.error("subscriber==jsonStrParam:{}=====result:{}" ,jsonStrParam, JSON.toJSONString(result));
}
}

45
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";
}
}

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

Loading…
Cancel
Save