[toc]
## 一、概述
### 1.1 背景
* 目前MC微信公众号管理采取1对N的方式,但实际限制公众号每一种type只能对应一个公众号,即一个微信公众号和一个来活渠道的订阅号。
* 实际企业由于运营需要,需要对接多个公众号,即针对微信公众号,公司是1:N的
### 1.2 目的
* 支持企业用户对于企业内多微信公众号的使用、管理、运营需求
### 1.3 目标
* 企业下不同组织构架对公众号及其相关使用的不同数据权限处理;
* 对于运营人员公众号运营数据的可视化显示
* 业务目标:支持多内容公众号接入,以及对应数据展现。
* 性能目标:能较为流畅查看公众号数据以及公众号相关数据
* 系统目标:将企业账户与内容公众号关系由1:1变为1:N,增加受众来源公众号数据。
***
## 二、需求概览
### 2.1 改动范围
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112472768244.jpg)
* SCRM
* 增加受众数据和来源公众号关联;
* 受众详情里面增加来源公众号的显示;
* 受众分组自动规则,增加来源公众号:
*控件属性:文本框联想搜索枚举,最终选定为枚举,默认下拉limit 100【取账号来源公众号】
运算符号,等于,不等于,为空,不为空*
* MC-系统设置-公众号设置
* 公众号信息,前端界面将内容公众号和渠道公众号分为两个category;
* 内容公众号,支持多公众号,不再做唯一约束
* 在内容公众号中增加搜索功能
* 绑定后,拉取公众号粉丝
* 定时拉取公众号粉丝
* 手动拉取公众号粉丝
* 跟组织构架关联,建立数据权限
* 受众
* 受众详情增加来源公众号的显示
* 受众默认来源公众号为未知
* 受众列表的数据权限
* 受众批量操作增加来源公众号的更改
* 受众列表增加来源公众号搜索
* 增加列表中来源公众号的显示
* 数据权限:
* 影响范围:受众列表(包括批量操作)
* 营销自动化中,简单分支以及微信事件(微信消息控件+开始条件中的微信事件)
* 营销罗盘:公众号数据查看
* 微信事件数据
* 增加受众关注和取消关注行为的获取
*这个行为的获取可以参照 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454*
> 来源公众号和受众关系为多对多,但目前这期不做多来源公众号受众的计算整合【即作为1对N】,但设计时请考虑此问题。
* ~~跟Fibo 的同步问题~~
* ~~将新增的受众数据同步至Fibo~~
*~~目前来看,MC这边的受众数据会多于Fibo,多的点集中于:1.手动创建的受众(包含导入的受众);2.通过粉丝列表拉取的数据;3.通过后期的关注、非关注行为获取的粉丝类手中数据~~*
* 组织构架
* 在部门中设置跟公众号的关系
* 部门中不论主管还是普通员工,都可以看到关联的公众号的受众数据以及营销自动化中的公众号选择
***
### 2.2 系统总览
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15094379271835.jpg)
***
## 三、具体需求
### 3.1 列表页
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15093555677505.jpg)
**原型改动:拉取粉丝下期进行**
* 原内禀规则不变;
* 交互规则:
* 校验Appid,公众号名称唯一约束;
* 其他交互规则维持原交互规则
* 单一公众号不能授权给多个企业账户
**因为这期要做数据可视化,有几个接口,在公众号授权的时候需要增加几个授权:
1.用户管理权限(用户分析数据接口);
2.群发与通知权限(图文分析数据接口);**
***
### 3.2 设定权限提示
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15113417245629.jpg)
绑定成功后,设定组织构架与公众号的数据关系。
* 设定时的规则:
|与本部门关系|默认是否有权限|是否可通过本部门账号修改|调整时是否可见|
|---|---|---|---|
|上级部门|有权限|不可更改|修改时不可见|
|本部门|有权限|不可更改|修改时不可见|
|本部门下级部门|有权限|可更改|修改时可见|
|平级其他部门|无权限|不可更改|修改时不可见|
|不属于本部门的下级部门|无权限|不可更改|修改时不可见|
* 影响范围:
* 受众列表:只能查看有数据权限的公众号粉丝和未知来源公众号粉丝。
* 营销自动化里面,简单分支,以及微信消息,只能选择有数据权限的公众号
* 营销罗盘中的数据看板,只能看有权限公众号的数据
### ~~3.3 拉取粉丝提示~~
~~设定权限后,增加是否拉取粉丝数据的提示~~
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15095194289318.jpg)
~~粉丝数据的获取可以参照 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454~~
~~拉取(自动和手动)的时候记录一下最后拉取的粉丝数据的openid,以作为下次请求的begin_openid~~
***
### 3.4 组织构架
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112547872017.jpg)
*在组织构架中增加公众号权限的维护*
在组织构架上方的按钮中增加一个按钮,’调整公众号权限‘
点击跳转到公众号设置页
***
### 3.5 关于粉丝数据拉取的说明
```sequence
title: 首次绑定内容公众号,粉丝数据
赢销云->>微信open:发送粉丝列表数据请求
微信open->>赢销云:返回粉丝列表数据请求
赢销云->>受众DB:创建受众数据
```
接口参照:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140840
*这个接口,需要使用token,然后用上次拉取的最后一个受众的openid 作为拉取的开始id,如果为空,default拉取所有列表,所以 拉取过一次之后需要记录最后一个openid,以作为下次的开始拉取的开始id*
***
### 3.6 客户列表文件导入
客服列表-文件导入
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112528955742.jpg)
### 3.7 客户详情页面
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112525200848.jpg)
* 左侧属性页面增加公众号的显示
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112529792022.jpg)
* 创建时间,增加2种类型:
* 关注公众号,用户关注公众号之后进入;
* ~~绑定公众号时获得,即用户绑定此内容公众号时,一次性拉取的受众数据~~
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112525034059.jpg)
* 客户时间轴:
* 增加对受众关注、取关两个行为的数据显示,拉取逻辑为微信推送,具体接口可参考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454
* 将原先活动和内容在前端组织显示在一起;
* 左侧增加时间轴(这个看下设计有没有有更好的方案);
***
### 3.8 营销自动化客服消息和模板消息组件
* 在组建里面显示选择要发送的公众号,default为创建时间最近的,combox下拉按照创建时间降序排列;
* ~~发送模板消息中需要过滤消息 公众号类型为服务号,过滤订阅号;~~
* 在客服消息中,增加一个文案提示,提示内容:由于微信官方限制,只有在48小时内与公众号有互动的受众可以收到客服消息。
***
### 3.9 受众分组-自动规则条件
增加自动规则中的规则项目,增加来源公众号,条件为等于,不等于,
控件类型为combox下拉,default为创建时间最近的,combox下拉按照创建时间降序排列;
***
### 3.10 漏斗分析-条件中增加来源公众号
增加自动规则中的规则项目,增加来源公众号,条件为等于,不等于,
控件类型为combox下拉,default为创建时间最近的,combox下拉按照创建时间降序排列;
***
### 3.11 营销罗盘
* 营销罗盘增加一个新的二级Category:公众号数据
* 下辖2个三级Category:
* 数据总览
* 粉丝数据
* 互动数据
* 另外 请求接口返回的数据,存储一份,因为:
* 微信有请求接口次数的限制;
* 很多数据为字符串,存储一份对于接口压力和前端渲染可视化的压力会笑一下。
* 补充,全局的按钮规则:
* 最近7天:begin_date=today()-7 end_date= today()-1
* 最近30天:begin_date=today()-30 end_date= today()-1
***
#### 公众号数据总览
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15107343334962.jpg)
总览里面的数据用到的接口:
*公众号运营总览*
* 粉丝新增数据
* 接口:https://api.weixin.qq.com/datacube/getusersummary?access_token=ACCESS_TOKEN
* 数据:对应ref_date集合下,sum(new_user)
* 粉丝净增
* 接口:https://api.weixin.qq.com/datacube/getusersummary?access_token=ACCESS_TOKEN
* 对应ref_date集合下,sum(new_user-cancel_user)
* 图文阅读量
* 接口:https://api.weixin.qq.com/datacube/getuserread?access_token=ACCESS_TOKEN
* 数据:对应ref_date集合下,sum(int_page_read_user)
*图文总体数据概览*
* 阅读人数前五:
* 接口:https://api.weixin.qq.com/datacube/getarticlesummary?access_token=ACCESS_TOKEN
* 数据:对应ref_date集合下,sum(int_page_read_user)
* 阅读原文人数前五:
* 接口:https://api.weixin.qq.com/datacube/getarticlesummary?access_token=ACCESS_TOKEN
* 数据:对应ref_date集合下,sum(ori_page_read_user)
* 分享人数前五:
* 接口:https://api.weixin.qq.com/datacube/getarticlesummary?access_token=ACCESS_TOKEN
* 数据:对应ref_date集合下,sum(share_user)
* 收藏人数前五:
* 接口:https://api.weixin.qq.com/datacube/getarticlesummary?access_token=ACCESS_TOKEN
* 数据:对应ref_date集合下,sum(add_to_fav_user)
对应的公众号需要通过msgid去找对应的公众号。
***
刷新为整体刷新所有数据,刷新所用到的接口:
*点击刷新,请求:
接口1:https://api.weixin.qq.com/datacube/getusercumulate?access_token=ACCESS_TOKEN
入参:begin_date=today() end_date=today()
实际作用为刷新今天的数据
接口2:https://api.weixin.qq.com/datacube/getusersummary?access_token=ACCESS_TOKEN
入参:begin_date=today() end_date=today()
实际作用为刷新今天的数据
接口3:https://api.weixin.qq.com/datacube/getarticlesummary?access_token=ACCESS_TOKEN
入参:begin_date=today() end_date=today()
实际作用为刷新今天的数据*
刷新的时候看一下性能,如果时间过长,给两个提示框
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15094221666852.jpg)
查看全部数据,分别跳转到两个页面:
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15107343828238.jpg)
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15107344029323.jpg)
***
#### 粉丝数据
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15113362407382.jpg)
一共三套数据可视化
筛选项为公众号,默认创建时间最近的公众号
点击“以列表形式查看”跳转对应的表格
目前粉丝总数量,https://api.weixin.qq.com/datacube/getusercumulate?access_token=ACCESS_TOKEN
ref_date=today()的cumulate_user
***
##### 每日粉丝数据变化
*可视化*
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112533000034.jpg)
* 概述
* 类型:折线图
* 横坐标:日期(日),默认近七天
* 纵坐标:人数(分正负)
* 调用接口:https://api.weixin.qq.com/datacube/getusersummary?access_token=ACCESS_TOKEN
***
* 折线数据类别:
* 新增粉丝,调用https://api.weixin.qq.com/datacube/getusersummary?access_token=ACCESS_TOKEN 接口,对应ref_date下,new_user数量(不区分类型);
* 粉丝流失,调用https://api.weixin.qq.com/datacube/getusersummary?access_token=ACCESS_TOKEN 接口,对应ref_date下,cancel_user数量(不区分类型);
* 粉丝净增,为对应ref_date下,new_user和cancel_user的差;
***
* 交互:
* 点击以列表形式查看,打开列表页面;
* 下方勾选默认全选,反选,disable掉页面对应的折线;
* 点击最近30天,切换为最近30天(begin_date= today()-30,end_date=today()-1【即昨天】)
* 在对应的图上位置悬停,显示折线数据(只显示下方勾选的数据)
* 右上角的menu bar,悬停显示list,点击将当前统计图生成jpg格式下载
***
* 注意:
https://api.weixin.qq.com/datacube/getusersummary?access_token=ACCESS_TOKEN
这个接口有点奇怪,他是一个查一定时间区间内,每日粉丝增减的接口,入参只有token,begin_date,end_date 三个参数,出参为ref_date(对应日期,每天),user_source(新增粉丝的渠道),new_user(新增粉丝数量),cancel_user(取关数量),但是user_source和cancel_user是放在一个字符串上的,不知道取消关注和关注类型为什么放在一起,这个到时候可能注意下。
接口文档地址::https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141082
***
*列表*
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112534392182.jpg)
**每个分页显示几行,这个看鹏飞有没有什么建议**
***
##### 公众号取消/关注概览
*可视化*
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15094192536643.jpg)
* 概述
* 类型:折线图
* 横坐标:时间段,一小时为间隔
* 纵坐标:人数
* 调用接口:这个微信没有写接口名称,他是需要提供一个url,将微信事件推送至此URL;
***
* 折线数据类别:
* 关注:取对应ref_date下,关注 消息数量的总数;
* 取消关注:取对应ref_date下,取消关注 消息数量的总数;
* 默认昨天
***
* 交互:
* 点击以列表形式查看,打开列表页面;
* 下方勾选默认全选,反选,disable掉页面对应的折线;
* 在对应的图上位置悬停,显示折线数据(只显示下方勾选的数据)
* 右上角的menu bar,悬停显示list,点击将当前统计图生成jpg格式下载
***
*列表*
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112540316896.jpg)
***
##### 粉丝来源渠道概览
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112541132592.jpg)
* 概述
* 类型:饼图
* 数据:总人数
* 调用接口:https://api.weixin.qq.com/datacube/getusersummary?access_token=ACCESS_TOKEN
***
* 数据:
* 数据为不同类型下对应所选日期范围内的,new_user的总数;
* 关于类型user_source:0代表其他合计 1代表公众号搜索 17代表名片分享 30代表扫描二维码 43代表图文页右上角菜单 51代表支付后关注(在支付完成页) 57代表图文页内公众号名称 75代表公众号文章广告 78代表朋友圈广告
***
* 交互:
* 点击以列表形式查看,打开列表页面;
* 下方勾选默认全选,反选,改变页面对应的饼块,前端需要重新渲染饼状图;
* 在对应的图上位置悬停,显示数据
* 右上角的menu bar,悬停显示list,点击将当前统计图生成jpg格式下载
***
*列表*
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112542333757.jpg)
***
#### 图文消息数据
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112542678917.jpg)
只有一个查看详细数据,查看的是总数据,只用微信的一个接口:
https://api.weixin.qq.com/datacube/getarticlesummary?access_token=ACCESS_TOKEN
这个数据要每日定时拉一次,存储数据
##### 图文数据总体概览:
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112542897930.jpg)
按照所选的公众号、日期限制条件显示数据;
筛选日期default:
begin_date=today()-7 end_date= today()-1【最近7天】
最近30天按钮
begin_date=today()-30 end_date= today()-1【最近30天】
***
##### 以图文为视角
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112543092045.jpg)
* 概述
* 类型:折线图
* 横坐标:日期(日),默认近七天
* 纵坐标:人数
* 调用接口:https://api.weixin.qq.com/datacube/getarticlesummary?access_token=ACCESS_TOKEN
* 默认:最近7填数据,图文默认为Today()-1那天阅读人数最大的图文
***
* 折线数据类别:
* 阅读人数:取对应ref_date,msgid下,int_page_read_user值
* 阅读原文人数:取对应ref_date,msgid下,ori_page_read_user值
* 分享人数:取对应ref_date,msgid下,share_user值
* 收藏人数:取对应ref_date,msgid下,add_to_fav_user值
***
* 交互:
* 下方勾选默认全选,反选,disable掉页面对应的折线;
* 在对应的图上位置悬停,显示折线数据(只显示下方勾选的数据)
* 右上角的menu bar,悬停显示list,点击将当前统计图生成jpg格式下载
***
##### 查看详细数据
![](http://ov105vcs6.bkt.clouddn.com/2017-11-22-15112543964275.jpg)
***