diff --git a/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/config/SwaggerConfig.java b/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/config/SwaggerConfig.java index 6064c11..4455c0a 100644 --- a/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/config/SwaggerConfig.java +++ b/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/config/SwaggerConfig.java @@ -1,4 +1,5 @@ package cn.skcks.docking.wx.services.mp.config; + import io.swagger.v3.oas.models.info.Contact; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; diff --git a/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/service/app/MpAppService.java b/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/service/app/MpAppService.java index a7ea96c..a12fab3 100644 --- a/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/service/app/MpAppService.java +++ b/platform-services/wx-mp-service/src/main/java/cn/skcks/docking/wx/services/mp/service/app/MpAppService.java @@ -68,61 +68,72 @@ public class MpAppService { }); } - public void service(HttpServletRequest request, HttpServletResponse response, String appId, SignatureVo signatureVo) throws IOException { - response.setContentType("text/html;charset=utf-8"); - response.setStatus(HttpServletResponse.SC_OK); +/** + * 处理微信公众号消息请求的服务方法 + * + * @param request HTTP请求对象 + * @param response HTTP响应对象 + * @param appId 应用ID + * @param signatureVo 签名验证信息 + * @throws IOException 如果处理过程中发生IO异常 + */ +public void service(HttpServletRequest request, HttpServletResponse response, String appId, SignatureVo signatureVo) throws IOException { + // 设置响应内容类型和状态码 + response.setContentType("text/html;charset=utf-8"); + response.setStatus(HttpServletResponse.SC_OK); - WxMpService wxMpService = serviceMap.get(appId); - if(ObjectUtils.anyNull(appId, signatureVo, wxMpService)){ - response.getWriter().println("非法请求"); - return; - } + // 从服务映射中获取WxMpService实例 + WxMpService wxMpService = serviceMap.get(appId); + if (ObjectUtils.anyNull(appId, signatureVo, wxMpService)) { + // 如果参数为空,返回非法请求响应 + response.getWriter().println("非法请求"); + return; + } - if(!wxMpService.checkSignature(signatureVo.getTimestamp(), signatureVo.getNonce(), signatureVo.getSignature())){ - response.getWriter().println("非法请求"); - return; - } + // 验证签名是否合法 + if (!wxMpService.checkSignature(signatureVo.getTimestamp(), signatureVo.getNonce(), signatureVo.getSignature())) { + // 如果签名不合法,返回非法请求响应 + response.getWriter().println("非法请求"); + return; + } + // 处理微信服务器的验证请求 + String echostr = request.getParameter("echostr"); + if (StringUtils.isNotBlank(echostr)) { + // 返回echostr以通过微信服务器的验证 + response.getWriter().println(echostr); + return; + } - // 签名验证请求 - String echostr = request.getParameter("echostr"); - if(StringUtils.isNotBlank(echostr)){ - response.getWriter().println(echostr); - return; - } + // 获取加密类型,默认为"raw" + String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) ? "raw" : request.getParameter("encrypt_type"); - String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) ? - "raw" : - request.getParameter("encrypt_type"); - WxMpXmlMessage inMessage = messageHandlerService.handleMessage(request, wxMpService, signatureVo); - if(inMessage == null) { - response.getWriter().println("不可识别的加密类型"); + // 处理消息并获取解析后的WxMpXmlMessage对象 + WxMpXmlMessage inMessage = messageHandlerService.handleMessage(request, wxMpService, signatureVo); + if (inMessage == null) { + // 如果无法识别的加密类型,返回不可识别的消息响应 + response.getWriter().println("不可识别的加密类型"); + } else { + // 记录接收到的消息内容 + log.debug("\n[↓] 接收消息: \n{}", inMessage); + + // 构建自动回复的消息 + 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 { - log.debug("\n[↓] 接收消息: \n{}", 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())); - } + response.getWriter().write(outMessage.toEncryptedXml(wxMpService.getWxMpConfigStorage())); } } +} + /** * 获取所有公众号列表