消息处理机制调整
This commit is contained in:
parent
52c019627e
commit
0b09e75eb7
@ -1,5 +1,7 @@
|
|||||||
package cn.skcks.docking.wx.services.mp.service.app;
|
package cn.skcks.docking.wx.services.mp.service.app;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.skcks.docking.wx.common.json.JsonUtils;
|
||||||
import cn.skcks.docking.wx.common.page.PageWrapper;
|
import cn.skcks.docking.wx.common.page.PageWrapper;
|
||||||
import cn.skcks.docking.wx.orm.entity.MpApp;
|
import cn.skcks.docking.wx.orm.entity.MpApp;
|
||||||
import cn.skcks.docking.wx.orm.mapper.MpAppMapper;
|
import cn.skcks.docking.wx.orm.mapper.MpAppMapper;
|
||||||
@ -9,7 +11,6 @@ import cn.skcks.docking.wx.services.mp.service.message.handler.MessageHandlerSer
|
|||||||
import cn.skcks.docking.wx.services.mp.vo.verify.SignatureVo;
|
import cn.skcks.docking.wx.services.mp.vo.verify.SignatureVo;
|
||||||
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import io.micrometer.common.util.StringUtils;
|
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
@ -18,10 +19,13 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import me.chanjar.weixin.mp.api.WxMpService;
|
import me.chanjar.weixin.mp.api.WxMpService;
|
||||||
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
|
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
|
||||||
|
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
|
||||||
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
|
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
|
||||||
|
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
|
||||||
import me.chanjar.weixin.mp.config.WxMpConfigStorage;
|
import me.chanjar.weixin.mp.config.WxMpConfigStorage;
|
||||||
import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl;
|
import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -50,7 +54,7 @@ public class MpAppService {
|
|||||||
|
|
||||||
new ForkJoinPool(Runtime.getRuntime().availableProcessors()).execute(() -> {
|
new ForkJoinPool(Runtime.getRuntime().availableProcessors()).execute(() -> {
|
||||||
mpApps.parallelStream().forEach(mpApp -> {
|
mpApps.parallelStream().forEach(mpApp -> {
|
||||||
WxMpRedisConfigImpl config = new WxMpRedisConfigImpl(wxRedisOps, "wx_mp_");
|
WxMpRedisConfigImpl config = new WxMpRedisConfigImpl(wxRedisOps, "wx_mp");
|
||||||
config.setAppId(mpApp.getAppId());
|
config.setAppId(mpApp.getAppId());
|
||||||
config.setSecret(mpApp.getAppSecret());
|
config.setSecret(mpApp.getAppSecret());
|
||||||
config.setToken(mpApp.getToken());
|
config.setToken(mpApp.getToken());
|
||||||
@ -87,65 +91,37 @@ public class MpAppService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) ?
|
||||||
|
"raw" :
|
||||||
|
request.getParameter("encrypt_type");
|
||||||
WxMpXmlMessage inMessage = messageHandlerService.handleMessage(request, wxMpService, signatureVo);
|
WxMpXmlMessage inMessage = messageHandlerService.handleMessage(request, wxMpService, signatureVo);
|
||||||
if(inMessage == null) {
|
if(inMessage == null) {
|
||||||
response.getWriter().println("不可识别的加密类型");
|
response.getWriter().println("不可识别的加密类型");
|
||||||
} else {
|
} else {
|
||||||
log.debug("\n[↓] 接收消息: \n{}", inMessage);
|
log.debug("\n[↓] 接收消息: \n{}", inMessage);
|
||||||
response.getWriter().write("");
|
|
||||||
|
|
||||||
mpKeFuService.reply(response, wxMpService, inMessage);
|
// 客服消息
|
||||||
|
// response.getWriter().write("");
|
||||||
|
//mpKeFuService.reply(response, wxMpService, inMessage);
|
||||||
|
// WxMpKefuMessage outMessage = WxMpKefuMessage.TEXT()
|
||||||
|
// .toUser(inMessage.getFromUser())
|
||||||
|
// .content(DateUtil.now())
|
||||||
|
// .build();
|
||||||
|
// wxMpService.getKefuService().sendKefuMessage(outMessage);
|
||||||
|
|
||||||
|
// 自动回复
|
||||||
|
WxMpXmlOutMessage outMessage = WxMpXmlOutMessage.TEXT()
|
||||||
|
.toUser(inMessage.getFromUser())
|
||||||
|
.fromUser(inMessage.getToUser())
|
||||||
|
.content(DateUtil.now())
|
||||||
|
.build();
|
||||||
|
log.debug("\n[↑] 响应消息: \n{}", JsonUtils.toCompressJson(outMessage));
|
||||||
|
if(StringUtils.equalsIgnoreCase(encryptType, "raw")) {
|
||||||
|
response.getWriter().write(outMessage.toXml());
|
||||||
|
} else {
|
||||||
|
response.getWriter().write(outMessage.toEncryptedXml(wxMpService.getWxMpConfigStorage()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) ?
|
|
||||||
// "raw" :
|
|
||||||
// request.getParameter("encrypt_type");
|
|
||||||
//
|
|
||||||
// if ("raw".equals(encryptType)) {
|
|
||||||
// // 明文传输的消息
|
|
||||||
// // WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(request.getInputStream());
|
|
||||||
// // WxMpXmlOutMessage outMessage = wxMpMessageRouter.route(inMessage);
|
|
||||||
// // if(outMessage == null) {
|
|
||||||
// // //为null,说明路由配置有问题,需要注意
|
|
||||||
// // response.getWriter().write("");
|
|
||||||
// // }
|
|
||||||
// // response.getWriter().write(outMessage.toXml());
|
|
||||||
//
|
|
||||||
// log.debug("\n[↓] 接收消息: \n{}", inMessage);
|
|
||||||
//
|
|
||||||
// // WxMpXmlOutMessage outMessage = WxMpXmlOutMessage.TEXT()
|
|
||||||
// // .toUser(inMessage.getFromUser())
|
|
||||||
// // .fromUser(inMessage.getToUser())
|
|
||||||
// // .content(DateUtil.now())
|
|
||||||
// // .build();
|
|
||||||
// //
|
|
||||||
// // log.debug("\n[↑] 响应消息: \n{}", outMessage);
|
|
||||||
//
|
|
||||||
// // response.getWriter().write(outMessage.toXml());
|
|
||||||
// response.getWriter().write("");
|
|
||||||
//
|
|
||||||
// mpKeFuService.reply(response, wxMpService, inMessage);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// if ("aes".equals(encryptType)) {
|
|
||||||
// WxMpConfigStorage wxMpConfigStorage = wxMpService.getWxMpConfigStorage();
|
|
||||||
//
|
|
||||||
// // 是aes加密的消息
|
|
||||||
// String msgSignature = request.getParameter("msg_signature");
|
|
||||||
// WxMpXmlMessage inMessage = WxMpXmlMessage.fromEncryptedXml(request.getInputStream(), wxMpConfigStorage, signatureVo.getTimestamp(), signatureVo.getNonce(), msgSignature);
|
|
||||||
// // WxMpXmlOutMessage outMessage = wxMpMessageRouter.route(inMessage);
|
|
||||||
// // if(outMessage == null) {
|
|
||||||
// // //为null,说明路由配置有问题,需要注意
|
|
||||||
// // response.getWriter().write("");
|
|
||||||
// // }
|
|
||||||
// // response.getWriter().write(outMessage.toEncryptedXml(wxMpConfigStorage));
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// response.getWriter().println("不可识别的加密类型");
|
|
||||||
// return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cn.skcks.docking.wx.services.mp.service.kefu;
|
package cn.skcks.docking.wx.services.mp.service.kefu;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.skcks.docking.wx.common.json.JsonUtils;
|
||||||
import cn.skcks.docking.wx.services.mp.service.app.MpAppService;
|
import cn.skcks.docking.wx.services.mp.service.app.MpAppService;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@ -26,6 +27,6 @@ public class MpKeFuService {
|
|||||||
.build();
|
.build();
|
||||||
wxMpService.getKefuService().sendKefuMessage(outMessage);
|
wxMpService.getKefuService().sendKefuMessage(outMessage);
|
||||||
|
|
||||||
log.debug("\n[↑] 响应消息: \n{}", outMessage);
|
log.debug("\n[↑] 响应消息: \n{}", JsonUtils.toCompressJson(outMessage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user