前言

现在软件开发不仅要面对前端碎片化,还要面对后端碎片化。针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad

在这里,咱们重点要解决的是后端碎片化。比如要开发一个业务系统,既需要与微信、企业微信整合,又需要与钉钉整合,该如何设计整个架构呢?

其实,不论是微信、企业微信,还是钉钉,面向实际业务层面的API都不复杂,复杂的是各自独立的账号体系如何与业务系统打通的问题。当账号接口对接完成,后续的业务开发就很顺畅了

CabloyJS设计了一套用户系统身份认证系统完全分离的机制,从而可以实现一个用户可以绑定多种登录方式。而且,这些不同的登录方式都是通过Provider的组件方式动态插入系统的。所以,剩下的工作就是按照Provider的方式来分别对接微信、企业微信和钉钉了

相关文章参考

  • Cabloy-通用的身份认证机制
  • Cabloy-微信
  • Cabloy-企业微信
  • Cabloy-钉钉

Cabloy-企业微信是什么

Cabloy-企业微信是基于CabloyJS全栈业务开发框架开发的企业微信接口模块,当前整合了自建应用企业微信小程序的接口,达到开箱即用的使用效果。在Cabloy-企业微信的基础上,可以很方便的开发各类企业微信业务系统

核心目标

企业微信开发最复杂的就是账号体系对接,比如:

  1. 企业通讯录同步:部门、成员
  2. 消息推送系统中,对用户进行认证
  3. 通过网页登录,对用户进行认证
  4. 通过微信小程序登录,对用户进行认证

一旦完成了这些场景下的账号体系对接,真正的业务开发就很简单了

因此,Cabloy-企业微信模块的核心目标,就是自动完成这些场景下的账号体系对接,我们所需要做的就是提供一些配置参数,然后就可以愉快的开启业务逻辑的开发了

两大亮点

基于CabloyJS全栈业务开发框架本身提供的特性,使得Cabloy-企业微信模块具有以下两个显著的亮点:

1. PC、Mobile自适应

许多企业微信应用存在这样一个问题:在Mobile端只能使用一部分功能,其他更多功能则需要登录PC系统进行操作

而CabloyJS框架下的Cabloy-企业微信允许所有的业务功能同时支持PC和Mobile使用。同时又能保证以下两点:

  1. 通过角色权限系统,控制不同用户使用不同功能
  2. 前端页面采用异步加载策略,从而适应大型项目的开发
  • Mobile端效果

  • PC端效果

2. 数据孤岛

企业从不同服务提供商采购不同的企业微信应用,必然导致数据孤岛的出现,而且这些数据散存在不同服务商的后台,缺乏数据联动与共享机制

而CabloyJS框架本身就是基于业务模块构建的。企业自建的模块或者使用第三方的模块,都汇集在一个CabloyJS项目之中,并进行私有部署,从而从根本上解决了数据孤岛的问题,不仅能实现数据联动与共享,也可以更灵活的进行数据采集、处理和分析

归根结底一句话,数据和程序都掌握在自己的手中

特性

基于CabloyJS全栈框架提供的便利性和灵活性,Cabloy-企业微信主要有如下特性:

1. 一站式整合

当前整合了企业微信自建应用企业微信小程序的接口,具体如下:

场景 名称 说明
自建应用 消息推送系统 自动完成接口对接,并对用户进行认证
自建应用 网页登录 自动跳转微信登录,并对用户进行认证
自建应用 网页JSSDK 自动注入JSSDK,并自动完成配置
小程序 后台登录接口 自动完成接口对接,并对用户进行认证
小程序 前端SDK 提供SDK,便于企业微信小程序前端直接访问CabloyJS后端API

2. 开箱即用

只需配置好企业微信账号参数,所有接口自动完成对接

3. 多小程序支持

企业微信可以关联多个企业微信小程序,因此,模块也提供了多小程序支持

4. 多租户/多站点支持

通过CabloyJS提供的多实例特性,可以实现多租户/多站点支持,比如为不同的企业提供企业微信服务。请参见:EggBornJS:多实例

5. PC、Mobile自适应

如上所述

新建CabloyJS项目

在进行后续模块的安装之前,您必须先创建一个CabloyJS项目

请务必参照文档步骤配置MySQL数据库连接参数

请参见:指南:快速开始

安装企业微信模块

安装企业微信模块a-wxwork

$ npm i egg-born-module-a-wxwork

安装企业微信测试模块(可选)

企业微信测试模块用于演示如何在模块a-wxwork的基础上进行具体的业务开发(同时包含企业微信小程序的demo程序)。有两种方式来使用企业微信测试模块

1. 安装到node_modules

如果仅仅是预览效果,可以直接安装到{project}/node_modules

$ npm i egg-born-module-test-wxwork

2. 安装到src/module

可以将测试模块安装到{projecct}/src/module,然后在此模块的基础上进行自定义开发

$ mv {project}/node_modules/egg-born-module-test-wxwork src/module/test-wxwork

配置企业微信参数

直接在项目配置文件中配置自建应用小程序的参数

src/backend/config/config.default.js

// modulesconfig.modules = {'a-wxwork': {account: {wxwork: {corpid: 'ww1fe9daaaa045aaaa',apps: {selfBuilt: {agentid: '1000008',secret: 'JLz3NL6PbFaaaabp64_RJpxaaaa7xROrgxraaaa-XXs',token: 'zNjSn7aaaaoJNk',encodingAESKey: 'DHc6kaaaa6BuGdnD6NRHtohqbCaaaaMDfgHtoaaaaUV',message: {reply: {default: 'You are welcome!',},},},contacts: {secret: 'jwvLlaaaa-1Zfa4KaaaaL193-6Y5ChURkEDaaaa630Y',token: 'X1g3Dooaaaa1WwWYlzaaaaB5OiN',encodingAESKey: 'qJKICJaaaaC1DfM3Td5lr54H8Pla499EgJ9aaaaxGzg',},},// minisminis: {default: {secret: 'jwaaaacRK-1Zfa4K01aaaa93-6Y5ChURkEDaaaa630Y',appID: 'wx823df0aaaab9659f',appSecret: 'c2e4442daaaaa5e4073cf49381baaaa9',},},},},},
};
名称 说明
apps 配置所有微信应用的参数,包括:企业微信内置应用、第三方应用,以及自建应用。如需访问其他应用提供的API接口,直接在apps添加新的配置即可
apps.selfBuilt 自建应用
apps.contacts 企业微信内置应用 - 通讯录应用
minis 支持多个微信小程序。为了实际开发上的便利,我们默认提供一个default小程序。如果需要开发其他微信小程序,直接在minis添加新的配置即可

运行

启动后端服务

$ npm run dev:backend

启动前端服务

$ npm run dev:front

nginx配置

由于企业微信应用一定要绑定域名。为了支持开发调试,可以有不同的策略。如果我们想在服务器上配置开发环境,然后通过nginx把前端服务和后端服务反向代理给前端,请参见:nginx配置

如何访问系统

1. 进入后台管理页面

  • 网址:http://yourdomain.com/
  • 用户名:root
  • 密码:123456

2. 同步通讯录

只有加入到企业微信通讯录中的用户才可以访问自建应用企业微信小程序。因此,我们需要先进行通讯录同步操作

当第一次同步完部门和成员后,以后所有的变更(增、删、改)都会自动进行同步

依次进入:首页->设置->企业微信->通讯录管理

3. 企业微信Mobile网页

企业微信中直接访问首页,系统会自动进行企业微信登录

  • 首页:http://yourdomain.com/

4. 企业微信Web登录

浏览器中直接访问首页,登录页面会自动显示企业微信登录按钮,点击按钮,即可显示二微信,通过手机企业微信扫描,自动完成登录

  • 首页:http://yourdomain.com/

需要进入企业微信的管理后台,进入自建应用,在开发者接口启用企业微信授权登录授权回调域设置为
yourdomain.com

企业微信小程序

测试模块test-wxwork已经包含了一个企业微信小程序的demo程序,使用步骤如下:

  1. 微信开发者工具中直接导入demo程序,目录路径:{project}/src/module/test-wxwork/front/demo/miniprogram

  2. 修改小程序中的appid,文件路径:{project}/src/module/test-wxwork/front/demo/miniprogram/project.config.json

  3. 修改初始化参数:

{project}/src/module/test-wxwork/front/demo/miniprogram/app.js

// 初始化cabloy
const cabloyOptions = {base: {scene: 'default',locale: 'en-us',},api: {baseURL: 'http://yourdomain.com',},
};
this.cabloy = Cabloy(this, cabloyOptions);

默认对应的是default小程序,如果要开发其他小程序,只需修改如下参数

名称 说明
base.scene 小程序场景名,默认为default
base.locale 前端默认使用的语言
api.baseURL 后端服务的API地址

相关链接

  • 官网: https://cabloy.com/
  • GitHub: https://github.com/zhennann/cabloy

CabloyJS一站式助力微信、企业微信、钉钉开发 - 企业微信篇相关推荐

  1. 微信小程序使用云开发实现微信支付功能 报错Error: 签名错误,史上最全解决办法,不服留言骂我

    报错背景 微信小程序使用云开发实现微信支付功能,但是报错了 报错信息 报错原因 小程序想要使用微信支付,必须满足下面几个条件的 1,必须是非个人小程序(个人小程序用不了支付) 企业小程序需要认证! 2 ...

  2. CabloyJS一站式助力微信、企业微信、钉钉开发 - 钉钉篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  3. CabloyJS一站式助力微信、企业微信、钉钉开发 - 微信篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  4. 微信现金红包asp源码开发的微信一物一码红包系统,asp微信现金红包源码

    最近接了一个生产万能胶的客户红包开发的要求,他想实现在他所有产品包装上贴一个小标签,上面有二维码可以扫码关注他的公众号,下面是一个刮刮银,刮开后是上串数字码,别人关注他的公众号后就可 以在公众号下面的 ...

  5. 微信公众平台搭建与开发揭秘//////微信公众平台应用开发实战

    微信公众平台搭建与开发揭秘,完整扫描版 [香港回来了,累啊.这个是从http://www.ckook.com/处获得的电子书,自制的就不上传了,免得被人叽歪] <微信公众平台搭建与开发揭秘> ...

  6. android仿微信点击好友,安卓开发仿微信联系人列表-机器人列表视图仿微通道聊天多久最底部滑动...

    楼主你好!根据你的描述,让我给你答案! :新内容加进来,列表视图重新为setSelection后,定位结束后,拉起一个页面放. . 希望你能有所帮助,如果满意,请记得采纳像下拉条为微信好友如何实现 简 ...

  7. 微信小店二次开发_微信小店二次开发功能套餐列表

    本商品包括微信小店二次功能开发套餐. [商品介绍]以下费用均为一次性费用.永久使用. 套餐一: 800元 订单查询:用户查询自己最近30天之内的订单记录. 实时通知:用户付款成功后,实时通知用户订单详 ...

  8. 微信公众号三方平台开发【pre_auth_code篇】

    今天,给大家讲的是进入授权页需要的一个重要参数,预授权码. 预授权码(即pre_auth_code)是在微信公众号给第三方平台授权时,用来安全验证的,有效时间为20分钟(之前文档说的有效期为10分钟, ...

  9. 史上最全教程没有之一,微信小程序使用云开发解决微信支付问题,我走了几天几夜的弯路啊

    我现在用云开发平台,想实现微信支付功能: 微信支付的前提 1.你的小程序开通了支付功能或者,你的小程序关联了商户号 2.你的小程序能开通支付功能,一般都是非个人类型的小程序 准备工作 1.获取小程序的 ...

最新文章

  1. SAP系统的配置传输
  2. 【2】HashMap
  3. VTK:几何对象之RegularPolygonSource
  4. 想自己造无人机吗?Intel推出基于 Linux x86的自助无人机开发板
  5. Spring MVC工作原理 及注解说明
  6. Android之MVP 模式:简单易懂的介绍方式
  7. 德标螺纹规格对照表_抚顺船用外螺纹铜减压阀带NK船检证书
  8. 华为云苏光牛:生态建设是数据库产业发展非常重要的一环
  9. L3-005. 垃圾箱分布-PAT团体程序设计天梯赛GPLT(Dijkstra)
  10. 自动驾驶 从入门到精通 学习资料汇总 Week1~Week7
  11. db9针232接口波特率标准_RS-232串口使用的DB9螺钉,螺纹规格是什么?
  12. origin中文版散点图拟合曲线_Origin9绘图时对一组散点图中的不同部分分别进行线性拟合的方法...
  13. 共享指定文件给指定电脑
  14. 利安德巴赛尔任命Peter Vanacker任首席执行官;纬湃科技斩获长城汽车逆变器大额订单 | 能动...
  15. 在字节跳动实习的真实感受究竟如何?
  16. String 与 char* 相互转换
  17. upc 生命曲线 线段树+lazy
  18. 一次从 APP 逆向到 Getshell 的过程
  19. 如何用移动硬盘备份计算机,怎么自动备份电脑资料到移动硬盘
  20. 2021-08-07 解决安装MacTeX后界面显示法语问题

热门文章

  1. 多个sql文件合并成一个sql文件
  2. Linux C语言中access函数的用法
  3. xcode清理缓存_腾讯柠檬清理,真的比 CleanMyMac 好用么?
  4. SAS中生成哑变量的一段宏代码
  5. 如何确认芯片是被MTK验证过
  6. rutracker怎么进入
  7. 区块链基本介绍(一)
  8. 智能停车场车牌识别系统(一)
  9. python用什么编译器
  10. Android自定义相机不存储照片,转换成Bitmap上传