对接微信消息

复制代码
package com.qmtt.controller;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.qmtt.config.QmttConfig;
import com.qmtt.mapper.LessonFormMapper;
import com.qmtt.tools.HttpUtil;
import com.qmtt.tools.JsonUtils;

@RestController
@RequestMapping("/api/contact")
public class ContactController {

    private static final Logger log = LoggerFactory.getLogger(ContactController.class);

    @Autowired
    QmttConfig config;
    @Autowired
    LessonFormMapper lessonFormDao;

    @RequestMapping("/receiveMsg")
    public Object receiveMsg(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String method = request.getMethod();
        if (method.equals("GET")) {
            Map map = request.getParameterMap();
            log.info(JsonUtils.obj2json(map));
            return request.getParameter("echostr");
        }
        if (method.equals("POST")) {
            BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));
            String line = null;
            StringBuilder sb = new StringBuilder();
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
            String jsonStr = sb.toString();
            log.info(jsonStr);
            Map map = JsonUtils.json2map(jsonStr);
            String openid = map.get("FromUserName").toString();
            String sessionFrom = "";
            if (map.containsKey("SessionFrom")) {
                sessionFrom = map.get("SessionFrom").toString();
            }
            String orderNo = sessionFrom;
            new Thread() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(2000);
                        String token = lessonFormDao.getWxToken();
                        if (token == null) {
                            log.info("微信token不存在,不发消息");
                            return;
                        }
                        String url = String.format(config.getCustomUrl(), token);
                        Map msgMap = new HashMap<String, Object>();
                        msgMap.put("touser", openid);
                        msgMap.put("msgtype", "text");
                        Map textMap = new HashMap<String, Object>();
                        textMap.put("content", "订单信息" + orderNo);
                        msgMap.put("text", textMap);
                        String json = JsonUtils.toJsonString(msgMap);
                        HttpUtil.postJson(url, json);
                    } catch (Exception e) {
                        log.error("线程异常", e);
                    }
                }
            }.start();
            return "success";
        }
        return "";
    }
}
复制代码

 

posted @   wujf  阅读(215)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示