|
|
|
@@ -2,8 +2,13 @@ package com.iformall.service.wechat; |
|
|
|
|
|
|
|
import com.iformall.config.WechatRedisProperies; |
|
|
|
import com.iformall.config.WechatOpenProperties; |
|
|
|
import com.iformall.domain.po.WxAuthorizerInfo; |
|
|
|
import com.iformall.enums.EnumAppType; |
|
|
|
import com.iformall.mapper.WxAuthorizerInfoMapper; |
|
|
|
import com.iformall.mapper.WxComponentVerifyTicketMapper; |
|
|
|
import com.iformall.service.wechat.handler.*; |
|
|
|
import me.chanjar.weixin.common.api.WxConsts; |
|
|
|
import me.chanjar.weixin.mp.constant.WxMpEventConstants; |
|
|
|
import me.chanjar.weixin.open.api.impl.WxOpenMessageRouter; |
|
|
|
import me.chanjar.weixin.open.api.impl.WxOpenServiceImpl; |
|
|
|
import org.slf4j.Logger; |
|
|
|
@@ -33,6 +38,26 @@ public class FmOpenService extends WxOpenServiceImpl { |
|
|
|
@Autowired |
|
|
|
private WxAuthorizerInfoMapper authorizerInfoMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
protected NullHandler nullHandler; |
|
|
|
@Autowired |
|
|
|
protected KfSessionHandler kfSessionHandler; |
|
|
|
@Autowired |
|
|
|
protected StoreCheckNotifyHandler storeCheckNotifyHandler; |
|
|
|
@Autowired |
|
|
|
protected LocationHandler locationHandler; |
|
|
|
@Autowired |
|
|
|
protected MenuHandler menuHandler; |
|
|
|
@Autowired |
|
|
|
protected MsgHandler msgHandler; |
|
|
|
@Autowired |
|
|
|
protected UnsubscribeHandler unsubscribeHandler; |
|
|
|
@Autowired |
|
|
|
protected SubscribeHandler subscribeHandler; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
protected WeappAuditHandler weappAuditHandler; |
|
|
|
|
|
|
|
private static JedisPool pool; |
|
|
|
private WxOpenMessageRouter wxOpenMessageRouter; |
|
|
|
|
|
|
|
@@ -46,9 +71,92 @@ public class FmOpenService extends WxOpenServiceImpl { |
|
|
|
setWxOpenConfigStorage(configStorage); |
|
|
|
wxOpenMessageRouter = new WxOpenMessageRouter(this); |
|
|
|
wxOpenMessageRouter.rule().handler((wxMpXmlMessage, map, wxMpService, wxSessionManager) -> { |
|
|
|
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() { |
|
|
|
|