123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package com.bofeng.wx;
- import com.bofeng.support.WeChatProperties;
- import lombok.val;
- import me.chanjar.weixin.common.api.WxConsts;
- import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
- import me.chanjar.weixin.mp.api.WxMpMessageRouter;
- import me.chanjar.weixin.mp.api.WxMpQrcodeService;
- import me.chanjar.weixin.mp.api.WxMpService;
- import me.chanjar.weixin.mp.api.impl.WxMpQrcodeServiceImpl;
- import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.context.properties.EnableConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- @Configuration
- @EnableConfigurationProperties(WeChatProperties.class)
- public class WxAutoConfiguration {
- private final WeChatProperties weChatProperties;
- private final LogHandler logHandler;
- private final NullHandler nullHandler;
- private final MenuHandler menuHandler;
- private final MsgHandler msgHandler;
- private final UnsubscribeHandler unsubscribeHandler;
- private final SubscribeHandler subscribeHandler;
- private final ScanHandler scanHandler;
- @Autowired
- public WxAutoConfiguration(WeChatProperties weChatProperties,
- LogHandler logHandler,
- NullHandler nullHandler,
- MenuHandler menuHandler,
- MsgHandler msgHandler,
- UnsubscribeHandler unsubscribeHandler,
- SubscribeHandler subscribeHandler,
- ScanHandler scanHandler) {
- this.weChatProperties = weChatProperties;
- this.logHandler = logHandler;
- this.nullHandler = nullHandler;
- this.menuHandler = menuHandler;
- this.msgHandler = msgHandler;
- this.unsubscribeHandler = unsubscribeHandler;
- this.subscribeHandler = subscribeHandler;
- this.scanHandler = scanHandler;
- }
- @Bean
- public WxMpService wxMpService() {
- WxMpInMemoryConfigStorage configStorage = new WxMpInMemoryConfigStorage();
- configStorage.setAppId(weChatProperties.getAppID());
- configStorage.setSecret(weChatProperties.getAppsecret());
- configStorage.setToken(weChatProperties.getToken());
- configStorage.setAesKey(weChatProperties.getAesKey());
- val service = new WxMpServiceImpl();
- service.setWxMpConfigStorage(configStorage);
- return service;
- }
- @Bean
- public WxMpQrcodeService wxMpQrcodeService(WxMpService wxMpService) {
- return new WxMpQrcodeServiceImpl(wxMpService);
- }
- @Bean
- public WxMpMessageRouter wxMpMessageRouter(WxMpService wxMpService) {
- final WxMpMessageRouter newRouter = new WxMpMessageRouter(wxMpService);
- // 记录所有事件的日志 (异步执行)
- newRouter.rule().handler(this.logHandler).next();
- // 关注事件
- newRouter.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
- .event(WxConsts.EventType.SUBSCRIBE).handler(this.subscribeHandler)
- .end();
- // 取消关注事件
- newRouter.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
- .event(WxConsts.EventType.UNSUBSCRIBE)
- .handler(this.unsubscribeHandler).end();
- // 扫码事件
- newRouter.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
- .event(WxConsts.EventType.SCAN).handler(this.scanHandler).end();
- // 自定义菜单事件
- newRouter.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
- .event(WxConsts.MenuButtonType.CLICK).handler(this.menuHandler).end();
- // 点击菜单连接事件
- newRouter.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
- .event(WxConsts.MenuButtonType.VIEW).handler(this.nullHandler).end();
- // 默认
- newRouter.rule().async(false).handler(this.msgHandler).end();
- return newRouter;
- }
- }
|