diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxAuthorizerInfoMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxAuthorizerInfoMapper.java index 022a2ae..a33fcfe 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxAuthorizerInfoMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxAuthorizerInfoMapper.java @@ -13,7 +13,7 @@ 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 91% 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 74875ff..c3b2bd3 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; @@ -40,10 +40,13 @@ public class SubscribeHandler extends AbstractHandler { authQ.setAuthorizerAppid(appId); WxAuthorizerInfo authorizerInfo = wxAuthorizerInfoMapper.findWeChatMp(authQ); + if(authorizerInfo == null) { + return null; + } // 获取微信用户基本信息 try { WxMpUser userWxInfo = weixinService.getUserService() - .userInfo(wxMessage.getFromUser()); + .userInfo(wxMessage.getFromUser()); if (userWxInfo != null) { this.logger.info(userWxInfo.toString()); userService.saveOrUpdateMpUser(userWxInfo, authorizerInfo); @@ -53,8 +56,7 @@ public class SubscribeHandler extends AbstractHandler { this.logger.info("该公众号没有获取用户信息权限!"); } } - - + /* WxMpXmlOutMessage responseResult = null; try { responseResult = this.handleSpecial(wxMessage); @@ -71,6 +73,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 90% 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 03750c3..82268dc 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; @@ -37,14 +38,15 @@ public class UnsubscribeHandler extends AbstractHandler { WxAuthorizerInfo authQ = new WxAuthorizerInfo(); authQ.setAuthorizerAppid(appId); WxAuthorizerInfo authorizerInfo = wxAuthorizerInfoMapper.findWeChatMp(authQ); - + if(authorizerInfo == null) { + return null; + } WxMpUser mpUser = new WxMpUser(); mpUser.setOpenId(wxMessage.getFromUser()); mpUser.setSubscribe(false); mpUser.setSubscribeTime(wxMessage.getCreateTime()); userService.saveOrUpdateMpUser(mpUser, authorizerInfo); - return null; } 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..8987ab4 100644 --- a/mlWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java +++ b/mlWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java @@ -6,7 +6,6 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.enums.*; -import com.iformall.mp.manager.WxMpManager; import com.iformall.service.*; import com.iformall.service.wechat.FmOpenService; import io.swagger.annotations.Api; @@ -15,7 +14,6 @@ import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; -import me.chanjar.weixin.mp.bean.result.WxMpUser; import me.chanjar.weixin.open.bean.message.WxOpenXmlMessage; import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult; import me.chanjar.weixin.open.bean.result.WxOpenPlatformResult; @@ -35,7 +33,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.nio.charset.Charset; -import java.text.SimpleDateFormat; import java.util.Date; @Controller @@ -44,9 +41,6 @@ import java.util.Date; public class WechatCalllbackController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); - @Autowired - private String fmAuditEmails; - @Autowired protected FmOpenService openService; @@ -56,21 +50,6 @@ public class WechatCalllbackController extends BaseController { @Autowired private WxAuthorizerInfoService authorizerInfoService; - @Autowired - private WxWeappAuditStatusService weappAuditStatusService; - - @Autowired - private WxAppinfoService appinfoService; - - @Autowired - private WxCUserService userService; - - @Autowired - private MailService mailService; - - @Autowired - private WxMpManager mpManager; - @PostMapping(value = "/notify") @ApiOperation("接收ticket回调") @ResponseBody @@ -219,108 +198,14 @@ public class WechatCalllbackController extends BaseController { } // 实际 消息 处理 - handleCallbackMessage(appId, response, inMessage); - } - - /** - * 实际回调消息处理 - * @param appId - * @param response - * @param inMessage - * @throws IOException - */ - private void handleCallbackMessage(String appId, - HttpServletResponse response, - WxMpXmlMessage inMessage) throws IOException { - WxAuthorizerInfo authorizerInfo = authorizerInfoService.getByAppId(appId); - - PrintWriter printWriter = response.getWriter(); - - // 小程序 消息 处理 - if(authorizerInfo != null && (authorizerInfo.getType() <= EnumAppType.C.getCode())) { - /**判断消息类型,调用对应的方法*/ - handleWeappCallbackMessage(appId, inMessage); - wechatWriteSuccess(printWriter); - return; - } else { - handleMPCallbackMessage(appId, inMessage, authorizerInfo); + //handleCallbackMessage(appId, response, inMessage); + WxMpXmlOutMessage outMessage = openService.getWxOpenMessageRouter().route(inMessage, appId); + if(outMessage == null) { + PrintWriter printWriter = response.getWriter(); wechatWriteSuccess(printWriter); - return; - /* - // 公众号 - try { - WxMpXmlOutMessage outMessage = mpManager.getRouter(appId).route(inMessage); - getThreadCount( 1 ); - if (outMessage == null) { - this.logger.info("2 return: success"); - wechatWriteSuccess(printWriter); - return; - } - // logger.info("组装回复" + outMessage.toXml()); - // out = outMessage.toEncryptedXml(mpService.getWxMpConfigStorage()); - // logger.info("组装回复消息-->"+out); - } catch (Exception e) { - logger.error("路由消息时出现异常!", e); - } - */ - } - } - - /** - * 处理小程序回调消息 - * @param appId - * @param inMessage - */ - private void handleWeappCallbackMessage(String appId, WxMpXmlMessage inMessage) { - switch (inMessage.getMsgType()) { - case "event": { - switch (inMessage.getEvent()) { - case "weapp_audit_success": { // 审核成功 - updateAuditStatus(appId, true, ""); - break; - } - case "weapp_audit_fail": { // 审核失败 - updateAuditStatus(appId, false, inMessage.getReason()); - break; - } - default: - break; - } - return; - } - default: - return; - } - } - - /** - * 处理公众号回调消息 - * @param appId - * @param inMessage - * @param authorizerInfo - */ - private void handleMPCallbackMessage(String appId, WxMpXmlMessage inMessage, WxAuthorizerInfo authorizerInfo) { - switch (inMessage.getMsgType()) { - case "event": { - switch (inMessage.getEvent()) { - case "subscribe": { // 关注 - handleEventSubscribe(appId, inMessage, authorizerInfo); - break; - } - case "unsubscribe": { // 取消关注 - handleEventUnsubscribe(appId, inMessage, authorizerInfo); - break; - } - default: { - break; - } - } - return; - } - default: { - return; - } } + PrintWriter printWriter = response.getWriter(); + wechatWriteSuccess(printWriter); } private void wechatWriteSuccess(PrintWriter printWriter) { @@ -329,49 +214,6 @@ public class WechatCalllbackController extends BaseController { printWriter.close(); } - /** - * 新关注消息处理 - * @param appId - * @param inMessage - * @param authorizerInfo - */ - private void handleEventSubscribe(String appId, WxMpXmlMessage inMessage, WxAuthorizerInfo authorizerInfo) { - this.logger.info("新关注用户 OPENID: " + inMessage.getFromUser() + ", AppId: " + appId); - - // 获取微信用户基本信息 - try { - WxMpUser userWxInfo = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId).getUserService() - .userInfo(inMessage.getFromUser()); - if (userWxInfo != null) { - this.logger.info(userWxInfo.toString()); - userService.saveOrUpdateMpUser(userWxInfo, authorizerInfo); - } - } catch (WxErrorException e) { - if (e.getError().getErrorCode() == 48001) { - this.logger.info("该公众号没有获取用户信息权限!"); - } - } - } - - - /** - * 取消关注消息处理 - * @param appId - * @param inMessage - * @param authorizerInfo - */ - private void handleEventUnsubscribe(String appId, WxMpXmlMessage inMessage, WxAuthorizerInfo authorizerInfo) { - String openId = inMessage.getFromUser(); - this.logger.info("取消关注用户 OPENID: " + openId + ", AppId: " + appId); - - WxMpUser mpUser = new WxMpUser(); - mpUser.setOpenId(inMessage.getFromUser()); - mpUser.setSubscribe(false); - mpUser.setSubscribeTime(inMessage.getCreateTime()); - - userService.saveOrUpdateMpUser(mpUser, authorizerInfo); - } - /** * 测试账号特殊处理 * @param appId @@ -436,56 +278,6 @@ public class WechatCalllbackController extends BaseController { } - 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()); - } - } @GetMapping(value = "/createOpenPlatform") @ApiOperation("创建微信开放平台") 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;