xiaoyong931011
2023-07-15 962adfda22354192f98231771423593ade145e00
src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.pay.util;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import org.dom4j.io.SAXReader;
import javax.servlet.http.HttpServletRequest;
@@ -11,6 +12,9 @@
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.util.*;
@@ -21,7 +25,12 @@
 *
 * @author shenshao
 */
@Service(value="wechatEventUtil")
public class WechatEventUtil {
    @Autowired
    private AgentProducer agentProducer;
    private static Logger log = LoggerFactory.getLogger(WechatEventUtil.class);
@@ -31,7 +40,7 @@
     * @param req 请求
     * @return 校验结果
     */
    public static String verification(HttpServletRequest req, String wechatToken) {
    public String verification(HttpServletRequest req, String wechatToken) {
        // 接收微信服务器发送请求时传递过来的参数
        String signature = req.getParameter("signature");
        String timestamp = req.getParameter("timestamp");
@@ -57,7 +66,7 @@
     * @param req
     * @return
     */
    public static String messageEvent(HttpServletRequest req) {
    public String messageEvent(HttpServletRequest req) {
        String result = null;
        Map<String, String> map = xmlToMap(req);
        String fromUserName = map.get("FromUserName");
@@ -68,8 +77,23 @@
        log.info("事件处理:event:{}、msgType:{}、toUserName:{}、fromUserName:{}", eventType, msgType, toUserName, fromUserName);
        if ("event".equals(msgType)) {
            if ("subscribe".equals(eventType)) {
                result = imgTextMsg(toUserName, fromUserName, "新用户注册", "仅限上海地区手机号用户", "图片地址", "点击后跳转的路径");
                result = imgTextMsg(toUserName, fromUserName, "新用户注册", "欢迎光临【药王谷铺子】,点击总下角【药王谷铺子】-【商城】。", "图片地址", "点击后跳转的路径");
                log.info("新增关注事件:toUserName{}、fromUserName{}", toUserName, fromUserName);
                StringBuffer stringBuffer = new StringBuffer();
                if(map.containsKey("EventKey")){
                    /**
                     * 扫带参数二维码
                     */
                    String eventKey = map.get("EventKey");
                    stringBuffer.append(eventKey);
                    stringBuffer.append("-");
                    stringBuffer.append(fromUserName);
                    agentProducer.sendMemberSubScanMsg(stringBuffer.toString());
                }
                /**
                 * 普通关注事件
                 */
                agentProducer.sendMemberSubMsg(fromUserName);
            } else if ("unsubscribe".equals(eventType)) {
                log.info("取消关注事件:toUserName{}、fromUserName{}", toUserName, fromUserName);
            }