diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/WarrantController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/WarrantController.java new file mode 100644 index 0000000000..b28c047c8e --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/WarrantController.java @@ -0,0 +1,39 @@ +package com.epmet.controller; + +import com.epmet.exception.AesException; +import com.epmet.service.WarrantService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.BufferedReader; +import java.io.IOException; + +/** + * @Author zxc + * @CreateTime 2020/7/10 10:41 + */ +@Slf4j +@RestController +@RequestMapping("warrant") +public class WarrantController { + + @Autowired + private WarrantService warrantService; + + @RequestMapping(value ="/{AppId}/callback") + public void acceptMessageAndEvent(HttpServletRequest request, @PathVariable("APPID") String appid, + HttpServletResponse response)throws IOException, DocumentException, AesException { + warrantService.acceptMessageAndEvent(request, appid, response); + } + +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/WarrantService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/WarrantService.java new file mode 100644 index 0000000000..8475322c5b --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/WarrantService.java @@ -0,0 +1,19 @@ +package com.epmet.service; + +import com.epmet.exception.AesException; +import org.dom4j.DocumentException; +import org.springframework.web.bind.annotation.PathVariable; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * @Author zxc + * @CreateTime 2020/7/10 11:03 + */ +public interface WarrantService { + + void acceptMessageAndEvent(HttpServletRequest request,String appid,HttpServletResponse response)throws IOException, DocumentException, AesException; + +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/WarrantServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/WarrantServiceImpl.java new file mode 100644 index 0000000000..1f9306de89 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/WarrantServiceImpl.java @@ -0,0 +1,51 @@ +package com.epmet.service.impl; + +import com.epmet.exception.AesException; +import com.epmet.service.WarrantService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.BufferedReader; +import java.io.IOException; + +/** + * @Author zxc + * @CreateTime 2020/7/10 11:03 + */ +@Slf4j +@Service +public class WarrantServiceImpl implements WarrantService { + @Override + public void acceptMessageAndEvent(HttpServletRequest request, String appid, HttpServletResponse response)throws IOException, DocumentException, AesException { + String msgSignature = request.getParameter("msg_signature"); + log.info("第三方平台全网发布-------------{appid}/callback-----------验证开始。。。。msg_signature=" + msgSignature); + if (!StringUtils.isNotBlank(msgSignature)) { + return;// 微信推送给第三方开放平台的消息一定是加过密的,无消息加密无法解密消息 + } + StringBuilder sb =new StringBuilder(); + BufferedReader in = request.getReader(); + String line; + while ((line = in.readLine()) !=null) { + sb.append(line); + } + in.close(); + + String xml = sb.toString(); + Document doc = DocumentHelper.parseText(xml); + Element rootElt = doc.getRootElement(); + String toUserName = rootElt.elementText("ToUserName"); + + //微信全网测试账号 +// if (StringUtils.equalsIgnoreCase(toUserName, APPID)) { + log.info("全网发布接入检测消息反馈开始---------------APPID=" + appid +"------------------------toUserName=" + toUserName); +// checkWeixinAllNetworkCheck(request, response, xml); +// } + } +}