diff --git a/epmet-commons/epmet-commons-tools/pom.xml b/epmet-commons/epmet-commons-tools/pom.xml index 4cf33e4c25..01d92799d7 100644 --- a/epmet-commons/epmet-commons-tools/pom.xml +++ b/epmet-commons/epmet-commons-tools/pom.xml @@ -133,10 +133,6 @@ org.apache.httpcomponents httpmime - - org.apache.httpcomponents - httpmime - 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 '主键' ,