From b12f001815ce7f022e5b07fcd70a13f68cc36af5 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 25 Apr 2019 23:43:03 +0800 Subject: [PATCH] =?UTF-8?q?[event=E5=A4=84=E7=90=86][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=86=8D=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/WxAuthorizerInfoMapper.java | 2 + .../service/wechat/FmOpenService.java | 110 +++++++++++++++++- .../wechat/builder/AbstractBuilder.java | 17 +++ .../service/wechat/builder/ImageBuilder.java | 24 ++++ .../service/wechat/builder/TextBuilder.java | 25 ++++ .../wechat}/handler/AbstractHandler.java | 2 +- .../wechat}/handler/KfSessionHandler.java | 3 +- .../wechat}/handler/LocationHandler.java | 4 +- .../service/wechat}/handler/LogHandler.java | 4 +- .../service/wechat}/handler/MenuHandler.java | 3 +- .../service/wechat}/handler/MsgHandler.java | 4 +- .../service/wechat}/handler/NullHandler.java | 2 +- .../service/wechat}/handler/ScanHandler.java | 4 +- .../handler/StoreCheckNotifyHandler.java | 3 +- .../wechat}/handler/SubscribeHandler.java | 7 +- .../wechat}/handler/UnsubscribeHandler.java | 3 +- .../wechat/handler/WeappAuditHandler.java | 104 +++++++++++++++++ .../service/wechat}/utils/JsonUtils.java | 2 +- .../mapper/WxAuthorizerInfoMapper.xml | 7 ++ .../controller/WechatCalllbackController.java | 9 +- .../com/iformall/mp/manager/WxMpManager.java | 2 +- 21 files changed, 321 insertions(+), 20 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/service/wechat/builder/AbstractBuilder.java create mode 100644 mallinkService/src/main/java/com/iformall/service/wechat/builder/ImageBuilder.java create mode 100644 mallinkService/src/main/java/com/iformall/service/wechat/builder/TextBuilder.java rename {mlWechatOpen/src/main/java/com/iformall/mp => mallinkService/src/main/java/com/iformall/service/wechat}/handler/AbstractHandler.java (87%) rename {mlWechatOpen/src/main/java/com/iformall/mp => mallinkService/src/main/java/com/iformall/service/wechat}/handler/KfSessionHandler.java (87%) rename {mlWechatOpen/src/main/java/com/iformall/mp => mallinkService/src/main/java/com/iformall/service/wechat}/handler/LocationHandler.java (93%) rename {mlWechatOpen/src/main/java/com/iformall/mp => mallinkService/src/main/java/com/iformall/service/wechat}/handler/LogHandler.java (88%) rename {mlWechatOpen/src/main/java/com/iformall/mp => mallinkService/src/main/java/com/iformall/service/wechat}/handler/MenuHandler.java (91%) rename {mlWechatOpen/src/main/java/com/iformall/mp => mallinkService/src/main/java/com/iformall/service/wechat}/handler/MsgHandler.java (94%) rename {mlWechatOpen/src/main/java/com/iformall/mp => mallinkService/src/main/java/com/iformall/service/wechat}/handler/NullHandler.java (93%) rename {mlWechatOpen/src/main/java/com/iformall/mp => mallinkService/src/main/java/com/iformall/service/wechat}/handler/ScanHandler.java (54%) rename {mlWechatOpen/src/main/java/com/iformall/mp => mallinkService/src/main/java/com/iformall/service/wechat}/handler/StoreCheckNotifyHandler.java (88%) rename {mlWechatOpen/src/main/java/com/iformall/mp => mallinkService/src/main/java/com/iformall/service/wechat}/handler/SubscribeHandler.java (95%) rename {mlWechatOpen/src/main/java/com/iformall/mp => mallinkService/src/main/java/com/iformall/service/wechat}/handler/UnsubscribeHandler.java (94%) create mode 100644 mallinkService/src/main/java/com/iformall/service/wechat/handler/WeappAuditHandler.java rename {mlWechatOpen/src/main/java/com/iformall/mp => mallinkService/src/main/java/com/iformall/service/wechat}/utils/JsonUtils.java (88%) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxAuthorizerInfoMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxAuthorizerInfoMapper.java index ffe24d6..a33fcfe 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxAuthorizerInfoMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxAuthorizerInfoMapper.java @@ -13,6 +13,8 @@ public interface WxAuthorizerInfoMapper extends CommonMapper { - logger.info("\n接收到 {} 公众号请求消息,内容:{}", wxMpService.getWxMpConfigStorage().getAppId(), wxMpXmlMessage); + String appId = wxMpService.getWxMpConfigStorage().getAppId(); + WxAuthorizerInfo authorizerInfo = authorizerInfoMapper.findByAppid(appId); + String appType; + if(authorizerInfo.getType() <= EnumAppType.C.getCode()) { + appType = "小程序"; + } else { + appType = "公众号"; + } + logger.info("\n接收到{}{}请求消息,内容:{}", appId, appType, wxMpXmlMessage); return null; }).next(); + + // 接收客服会话管理事件 + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.EVENT) + .event(WxMpEventConstants.CustomerService.KF_CREATE_SESSION) + .handler(this.kfSessionHandler).end(); + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.EVENT) + .event(WxMpEventConstants.CustomerService.KF_CLOSE_SESSION) + .handler(this.kfSessionHandler).end(); + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.EVENT) + .event(WxMpEventConstants.CustomerService.KF_SWITCH_SESSION) + .handler(this.kfSessionHandler).end(); + + // 门店审核事件 + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.EVENT) + .event(WxMpEventConstants.POI_CHECK_NOTIFY) + .handler(this.storeCheckNotifyHandler).end(); + + // 自定义菜单事件 + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.EVENT) + .event(WxConsts.MenuButtonType.CLICK) + .handler(this.menuHandler).end(); + + // 点击菜单连接事件 + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.EVENT) + .event(WxConsts.MenuButtonType.VIEW) + .handler(this.nullHandler).end(); + + // 关注事件 + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.EVENT) + .event(WxConsts.EventType.SUBSCRIBE) + .handler(this.subscribeHandler).end(); + + // 取消关注事件 + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.EVENT) + .event(WxConsts.EventType.UNSUBSCRIBE) + .handler(this.unsubscribeHandler).end(); + + // 上报地理位置事件 + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.EVENT) + .event(WxConsts.EventType.LOCATION) + .handler(this.locationHandler).end(); + + // 接收地理位置消息 + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.LOCATION) + .handler(this.locationHandler).end(); + + // 扫码事件 + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.EVENT) + .event(WxConsts.EventType.SCAN) + .handler(this.nullHandler).end(); + + // 小程序 审核通过 + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.EVENT) + .event(WxConsts.EventType.WEAPP_AUDIT_SUCCESS) + .handler(this.weappAuditHandler).end(); + // 小程序 审核失败 + wxOpenMessageRouter.rule().async(false) + .msgType(WxConsts.XmlMsgType.EVENT) + .event(WxConsts.EventType.WEAPP_AUDIT_FAIL) + .handler(this.weappAuditHandler).end(); + + // 默认 + wxOpenMessageRouter.rule().async(false).handler(this.msgHandler).end(); } public WxOpenMessageRouter getWxOpenMessageRouter() { diff --git a/mallinkService/src/main/java/com/iformall/service/wechat/builder/AbstractBuilder.java b/mallinkService/src/main/java/com/iformall/service/wechat/builder/AbstractBuilder.java new file mode 100644 index 0000000..0ae7f9f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/wechat/builder/AbstractBuilder.java @@ -0,0 +1,17 @@ +package com.iformall.service.wechat.builder; + +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Stormeye + */ +public abstract class AbstractBuilder { + protected final Logger logger = LoggerFactory.getLogger(getClass()); + + public abstract WxMpXmlOutMessage build(String content, + WxMpXmlMessage wxMessage, WxMpService service); +} diff --git a/mallinkService/src/main/java/com/iformall/service/wechat/builder/ImageBuilder.java b/mallinkService/src/main/java/com/iformall/service/wechat/builder/ImageBuilder.java new file mode 100644 index 0000000..3e5113c --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/wechat/builder/ImageBuilder.java @@ -0,0 +1,24 @@ +package com.iformall.service.wechat.builder; + +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutImageMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +public class ImageBuilder extends AbstractBuilder { + + @Override + public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage, + WxMpService service) { + + WxMpXmlOutImageMessage m = WxMpXmlOutMessage.IMAGE().mediaId(content) + .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser()) + .build(); + + return m; + } + +} diff --git a/mallinkService/src/main/java/com/iformall/service/wechat/builder/TextBuilder.java b/mallinkService/src/main/java/com/iformall/service/wechat/builder/TextBuilder.java new file mode 100644 index 0000000..c0d7f47 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/wechat/builder/TextBuilder.java @@ -0,0 +1,25 @@ +package com.iformall.service.wechat.builder; + +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +public class TextBuilder extends AbstractBuilder { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Override + public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage, + WxMpService service) { + WxMpXmlOutTextMessage m = WxMpXmlOutMessage.TEXT().content(content) + .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser()) + .build(); + return m; + } + +} diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/handler/AbstractHandler.java b/mallinkService/src/main/java/com/iformall/service/wechat/handler/AbstractHandler.java similarity index 87% rename from mlWechatOpen/src/main/java/com/iformall/mp/handler/AbstractHandler.java rename to mallinkService/src/main/java/com/iformall/service/wechat/handler/AbstractHandler.java index ee1f64b..b3538c3 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/handler/AbstractHandler.java +++ b/mallinkService/src/main/java/com/iformall/service/wechat/handler/AbstractHandler.java @@ -1,4 +1,4 @@ -package com.iformall.mp.handler; +package com.iformall.service.wechat.handler; import me.chanjar.weixin.mp.api.WxMpMessageHandler; import org.slf4j.Logger; diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/handler/KfSessionHandler.java b/mallinkService/src/main/java/com/iformall/service/wechat/handler/KfSessionHandler.java similarity index 87% rename from mlWechatOpen/src/main/java/com/iformall/mp/handler/KfSessionHandler.java rename to mallinkService/src/main/java/com/iformall/service/wechat/handler/KfSessionHandler.java index df34455..9b0cc04 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/handler/KfSessionHandler.java +++ b/mallinkService/src/main/java/com/iformall/service/wechat/handler/KfSessionHandler.java @@ -1,5 +1,6 @@ -package com.iformall.mp.handler; +package com.iformall.service.wechat.handler; +import com.iformall.service.wechat.handler.AbstractHandler; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/handler/LocationHandler.java b/mallinkService/src/main/java/com/iformall/service/wechat/handler/LocationHandler.java similarity index 93% rename from mlWechatOpen/src/main/java/com/iformall/mp/handler/LocationHandler.java rename to mallinkService/src/main/java/com/iformall/service/wechat/handler/LocationHandler.java index 2b96ade..66448a5 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/handler/LocationHandler.java +++ b/mallinkService/src/main/java/com/iformall/service/wechat/handler/LocationHandler.java @@ -1,6 +1,6 @@ -package com.iformall.mp.handler; +package com.iformall.service.wechat.handler; -import com.iformall.mp.builder.TextBuilder; +import com.iformall.service.wechat.builder.TextBuilder; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/handler/LogHandler.java b/mallinkService/src/main/java/com/iformall/service/wechat/handler/LogHandler.java similarity index 88% rename from mlWechatOpen/src/main/java/com/iformall/mp/handler/LogHandler.java rename to mallinkService/src/main/java/com/iformall/service/wechat/handler/LogHandler.java index 794e6f9..e5db3c1 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/handler/LogHandler.java +++ b/mallinkService/src/main/java/com/iformall/service/wechat/handler/LogHandler.java @@ -1,6 +1,6 @@ -package com.iformall.mp.handler; +package com.iformall.service.wechat.handler; -import com.iformall.mp.utils.JsonUtils; +import com.iformall.service.wechat.utils.JsonUtils; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/handler/MenuHandler.java b/mallinkService/src/main/java/com/iformall/service/wechat/handler/MenuHandler.java similarity index 91% rename from mlWechatOpen/src/main/java/com/iformall/mp/handler/MenuHandler.java rename to mallinkService/src/main/java/com/iformall/service/wechat/handler/MenuHandler.java index 880c94e..770bd55 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/handler/MenuHandler.java +++ b/mallinkService/src/main/java/com/iformall/service/wechat/handler/MenuHandler.java @@ -1,5 +1,6 @@ -package com.iformall.mp.handler; +package com.iformall.service.wechat.handler; +import com.iformall.service.wechat.handler.AbstractHandler; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/handler/MsgHandler.java b/mallinkService/src/main/java/com/iformall/service/wechat/handler/MsgHandler.java similarity index 94% rename from mlWechatOpen/src/main/java/com/iformall/mp/handler/MsgHandler.java rename to mallinkService/src/main/java/com/iformall/service/wechat/handler/MsgHandler.java index e775e1d..6e1a31b 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/handler/MsgHandler.java +++ b/mallinkService/src/main/java/com/iformall/service/wechat/handler/MsgHandler.java @@ -1,6 +1,6 @@ -package com.iformall.mp.handler; +package com.iformall.service.wechat.handler; -import com.iformall.mp.builder.TextBuilder; +import com.iformall.service.wechat.builder.TextBuilder; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/handler/NullHandler.java b/mallinkService/src/main/java/com/iformall/service/wechat/handler/NullHandler.java similarity index 93% rename from mlWechatOpen/src/main/java/com/iformall/mp/handler/NullHandler.java rename to mallinkService/src/main/java/com/iformall/service/wechat/handler/NullHandler.java index ea8d029..fc2482a 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/handler/NullHandler.java +++ b/mallinkService/src/main/java/com/iformall/service/wechat/handler/NullHandler.java @@ -1,4 +1,4 @@ -package com.iformall.mp.handler; +package com.iformall.service.wechat.handler; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/handler/ScanHandler.java b/mallinkService/src/main/java/com/iformall/service/wechat/handler/ScanHandler.java similarity index 54% rename from mlWechatOpen/src/main/java/com/iformall/mp/handler/ScanHandler.java rename to mallinkService/src/main/java/com/iformall/service/wechat/handler/ScanHandler.java index 251c47b..77763d1 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/handler/ScanHandler.java +++ b/mallinkService/src/main/java/com/iformall/service/wechat/handler/ScanHandler.java @@ -1,4 +1,6 @@ -package com.iformall.mp.handler; +package com.iformall.service.wechat.handler; + +import com.iformall.service.wechat.handler.AbstractHandler; /** * @author Binary Wang(https://github.com/binarywang) diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/handler/StoreCheckNotifyHandler.java b/mallinkService/src/main/java/com/iformall/service/wechat/handler/StoreCheckNotifyHandler.java similarity index 88% rename from mlWechatOpen/src/main/java/com/iformall/mp/handler/StoreCheckNotifyHandler.java rename to mallinkService/src/main/java/com/iformall/service/wechat/handler/StoreCheckNotifyHandler.java index 4bee501..289c033 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/handler/StoreCheckNotifyHandler.java +++ b/mallinkService/src/main/java/com/iformall/service/wechat/handler/StoreCheckNotifyHandler.java @@ -1,5 +1,6 @@ -package com.iformall.mp.handler; +package com.iformall.service.wechat.handler; +import com.iformall.service.wechat.handler.AbstractHandler; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/handler/SubscribeHandler.java b/mallinkService/src/main/java/com/iformall/service/wechat/handler/SubscribeHandler.java similarity index 95% rename from mlWechatOpen/src/main/java/com/iformall/mp/handler/SubscribeHandler.java rename to mallinkService/src/main/java/com/iformall/service/wechat/handler/SubscribeHandler.java index b763d4f..43ca420 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/handler/SubscribeHandler.java +++ b/mallinkService/src/main/java/com/iformall/service/wechat/handler/SubscribeHandler.java @@ -1,9 +1,9 @@ -package com.iformall.mp.handler; +package com.iformall.service.wechat.handler; import com.iformall.domain.po.WxAuthorizerInfo; import com.iformall.mapper.WxAuthorizerInfoMapper; -import com.iformall.mp.builder.TextBuilder; import com.iformall.service.WxCUserService; +import com.iformall.service.wechat.handler.AbstractHandler; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; @@ -53,7 +53,7 @@ public class SubscribeHandler extends AbstractHandler { } } - + /* WxMpXmlOutMessage responseResult = null; try { responseResult = this.handleSpecial(wxMessage); @@ -70,6 +70,7 @@ public class SubscribeHandler extends AbstractHandler { } catch (Exception e) { this.logger.error(e.getMessage(), e); } + */ return null; } diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/handler/UnsubscribeHandler.java b/mallinkService/src/main/java/com/iformall/service/wechat/handler/UnsubscribeHandler.java similarity index 94% rename from mlWechatOpen/src/main/java/com/iformall/mp/handler/UnsubscribeHandler.java rename to mallinkService/src/main/java/com/iformall/service/wechat/handler/UnsubscribeHandler.java index b9202e9..a16c922 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/handler/UnsubscribeHandler.java +++ b/mallinkService/src/main/java/com/iformall/service/wechat/handler/UnsubscribeHandler.java @@ -1,8 +1,9 @@ -package com.iformall.mp.handler; +package com.iformall.service.wechat.handler; import com.iformall.domain.po.WxAuthorizerInfo; import com.iformall.mapper.WxAuthorizerInfoMapper; import com.iformall.service.WxCUserService; +import com.iformall.service.wechat.handler.AbstractHandler; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; diff --git a/mallinkService/src/main/java/com/iformall/service/wechat/handler/WeappAuditHandler.java b/mallinkService/src/main/java/com/iformall/service/wechat/handler/WeappAuditHandler.java new file mode 100644 index 0000000..e98c9bc --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/wechat/handler/WeappAuditHandler.java @@ -0,0 +1,104 @@ +package com.iformall.service.wechat.handler; + +import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxWeappAuditStatus; +import com.iformall.enums.EnumAppType; +import com.iformall.enums.EnumWeappAuditStatus; +import com.iformall.service.MailService; +import com.iformall.service.WxAppinfoService; +import com.iformall.service.WxWeappAuditStatusService; +import me.chanjar.weixin.common.api.WxConsts; +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * @author Binary Wang(https://github.com/binarywang) + */ +@Component +public class WeappAuditHandler extends AbstractHandler { + + @Autowired + private WxWeappAuditStatusService weappAuditStatusService; + + @Autowired + private WxAppinfoService appinfoService; + + @Autowired + private String fmAuditEmails; + + @Autowired + private MailService mailService; + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, + Map context, WxMpService wxMpService, + WxSessionManager sessionManager) { + String appId = wxMpService.getWxMpConfigStorage().getAppId(); + if(wxMessage.getEvent().equalsIgnoreCase(WxConsts.EventType.WEAPP_AUDIT_SUCCESS)) { + updateAuditStatus(appId, true, null); + } else if(wxMessage.getEvent().equalsIgnoreCase(WxConsts.EventType.WEAPP_AUDIT_SUCCESS)) { + updateAuditStatus(appId, false, wxMessage.getReason()); + } + return null; + } + + private void updateAuditStatus(String appId, boolean success, String reason) { + WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(appId); + if (auditStatus != null) { + if (success) { + auditStatus.setAuditStatus(EnumWeappAuditStatus.SUCCESS.getCode()); + auditStatus.setAuditErrCode(""); + } else { + auditStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode()); + auditStatus.setAuditErrCode(reason); + } + auditStatus.setAuditTime(new Date()); + weappAuditStatusService.updateStatus(auditStatus); + } + + // 发邮件 + WxAppinfo appinfo = appinfoService.getByAppId(appId); + if (appinfo != null) { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 + + StringBuilder titleSB = new StringBuilder(); + if (appinfo.getType().equals(EnumAppType.C.getCode())) { + titleSB.append("C端小程序"); + } else if (appinfo.getType().equals(EnumAppType.B.getCode())) { + titleSB.append("B端小程序"); + } else if (appinfo.getType().equals(EnumAppType.MP_S.getCode())) { + titleSB.append("公众号-服务号"); + } else if (appinfo.getType().equals(EnumAppType.MP_P.getCode())) { + titleSB.append("公众号-订阅号"); + } + titleSB.append(appinfo.getName()); + if (success) { + titleSB.append("审核通过"); + } else { + titleSB.append("审核未通过"); + } + + StringBuilder sb = new StringBuilder(); + sb.append(df.format(new Date())).append("\n"); + if (success) { + sb.append("审核通过\n"); + } else { + sb.append("审核未通过\n").append("原因").append(reason); + } + + String[] receivers = fmAuditEmails.split(","); + + //发送邮件 + mailService.sendSimpleMail(receivers, titleSB.toString(), sb.toString()); + } + } + +} diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/utils/JsonUtils.java b/mallinkService/src/main/java/com/iformall/service/wechat/utils/JsonUtils.java similarity index 88% rename from mlWechatOpen/src/main/java/com/iformall/mp/utils/JsonUtils.java rename to mallinkService/src/main/java/com/iformall/service/wechat/utils/JsonUtils.java index 11918ee..ee16354 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/utils/JsonUtils.java +++ b/mallinkService/src/main/java/com/iformall/service/wechat/utils/JsonUtils.java @@ -1,4 +1,4 @@ -package com.iformall.mp.utils; +package com.iformall.service.wechat.utils; import com.google.gson.Gson; import com.google.gson.GsonBuilder; diff --git a/mallinkService/src/main/resources/mapper/WxAuthorizerInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxAuthorizerInfoMapper.xml index e5b181b..29d06fe 100644 --- a/mallinkService/src/main/resources/mapper/WxAuthorizerInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxAuthorizerInfoMapper.xml @@ -162,6 +162,13 @@ where `authorizer_appid` = #{authorizerAppid} + + diff --git a/mlWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java b/mlWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java index 7a6fdcf..5faa1bc 100644 --- a/mlWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java +++ b/mlWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java @@ -219,7 +219,14 @@ public class WechatCalllbackController extends BaseController { } // 实际 消息 处理 - handleCallbackMessage(appId, response, inMessage); + //handleCallbackMessage(appId, response, inMessage); + WxMpXmlOutMessage outMessage = openService.getWxOpenMessageRouter().route(inMessage, appId); + if(outMessage == null) { + PrintWriter printWriter = response.getWriter(); + wechatWriteSuccess(printWriter); + } + PrintWriter printWriter = response.getWriter(); + wechatWriteSuccess(printWriter); } /** diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/manager/WxMpManager.java b/mlWechatOpen/src/main/java/com/iformall/mp/manager/WxMpManager.java index bbcdf70..7de9728 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/manager/WxMpManager.java +++ b/mlWechatOpen/src/main/java/com/iformall/mp/manager/WxMpManager.java @@ -1,7 +1,7 @@ package com.iformall.mp.manager; -import com.iformall.mp.handler.*; import com.iformall.service.wechat.FmOpenService; +import com.iformall.service.wechat.handler.*; import me.chanjar.weixin.mp.api.WxMpMessageRouter; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.constant.WxMpEventConstants;