- 首先我将包管理放在根目录管理。
- message-api用于管理微信,钉钉通用部分,比如定义通用方法,微信,钉钉都需要实现发送信息功能,那么关于接口的定义就是放在message-api中的。还有就是关于消息的抽象的定义也是在message-api中完成的。包括一些工具类放在message-api完成。
- message-demo是针对钉钉,微信的测试用例。在demo中搭建好测试环境。编写测试用例。
- 剩下的就是dingding-message-root和wechat-message-root两个模块了。顾名思义就是钉钉微信的处理业务。两个模块结构是一样的,内部会支持message-api定义的骨架的基础上进行定制开发。比如wechat-message-root中会开发微信特有的上传图文的功能。如果我们想使用该功能的话就不能仅仅用公共的MessageService 。 而是需要使用更加明确的WechatMessageService
- 再者,我们使用spring框架基本上是覆盖很广。所以每个message-root还需要在细分。即wechat-message-root下细分为spring-wechat-starter和wechat-core 。 前者是对spring的开箱即用的支持,后者才是真正对接微信公众号的服务功能。
- 可以看到service.impl中主要都是实现message-api模块中定义好的接口。在实现主接口的基础上需要扩展封住的功能会在wechat-core中进行扩展开发。
- 因为钉钉,微信都实现message-api模块的接口,且内部都有spring的开箱即用功能,而spring容器中beanName是唯一的。而且为了我们自己能确定使用具体的模块的be an ,我们需要在注册的时候制定我们beanName,这样我们在使用的时候在通过名称查找。
- 比如我这样定义了一个bean
@Bean("wechatMessageService")
public MessageService wechatMessageService(TokenService tokenService) {
WechatMessageServiceImpl wechatMessageService = new WechatMessageServiceImpl();
wechatMessageService.setTokenService(tokenService);
return wechatMessageService;
}
- 那么我在使用的时候需要这样配置
@Autowired
@Qualifier("wechatMessageService")
MessageService messageService;
- 这样我们在使用的时候在两者公共的功能时,只需要通过对应的service完成就可以了。比如群发功能。这个时候如果我们微信钉钉都需要实现,那么我们可以通过这样引入service
@Autowired
List<MessageService> messageServiceList ;
- 执行的时候我们只需要遍历执行就可以了
- 系统对接其实并没啥技术含量,只要我们根据官网文档一步一步操作就可以了。我们就是调用api 。 真正的高度时在平台的实现。比如我们的接口调用的权限基于o a u t h2完成的登陆鉴权。这些在maltcloud中我们都有去实现。后面有机会会结合实战去解读下oauth2和如何设计完成接口权限调度
- 除了微信的对接外,常见的还有支付宝的支付功能。这也是在掉接口核心的永远都是平台的功能。如果有需要我们后面在看看支付宝的接入