# 20180605直播订阅设计文档## 需求观众扫描二维码订阅(关注公众号),用户直播前发送直播通知模板消息。具体模块有:* 增加 配置模板消息页面* 新建/修改频道增加 设置开播提醒* 观看页增加 订阅按钮* 增加权限控制:标准版及以上/填写过深度定制微信公众号## 方案结构图完成整个直播订阅流程,如下图所示:
## 涉及角色和职责### 前端...### 后端完成模板消息的配置,发送模板消息## 方案设计### 前端文档...### 后端文档#### 数据结构**user_wx_config**| 字段名 | 字段类型 | 备注 || --- | --- | --- || id | int | PK || uin | int | 用户id || act_live_template_id | string | 发送频道开播模板id || status | tinyint | 是否启用 |**activity_detail** 新增 ```live_notify```、```live_notify_time```、```live_notified```三个字段| 字段名 | 字段类型 | 备注 || --- | --- | --- || id | int | PK || act_id | int | 频道id || content | text | || wxa_publish_qr | string | 小程序推流二维码链接|| live_notify | tinyint | 是否启用开播提醒|| live_notify_time | int | 提前xxx分钟|| live_notify_status | tinyint | 通知状态,0:未通知 1:正在通知 2:通知完成|#### 后端接口1. 新增 直播订阅设置接口2. 修改 频道新建/编辑接口#### 其他逻辑发送模板消息,给所有粉丝发送。获取公众号全部粉丝,每次获取 10000 个,获取后发送模板消息。```GoLangnext_openid = ""do { 1. 获取10000个粉丝, next_openid = $next_opend_id 2. 向这10000个粉丝发送模板消息} while(next_openid !="")```PHP的定时任务作为 TaskManager:1. 找到需要群发的频道(```live_notify_status```为 0)2. 请求Golang进行群发,需要传给Golang 公众号信息,(actid,appid,appSecret,accessToken),收到请求后设置```live_notify_status```为13. GoLang获取粉丝,并发送消息4. 完成后 设置 ```live_notify_status```为2问题:1. accessToken有效期只有 7200s,GoLang在处理时候,需要判断处理时间是否大于7000s,若大于则去请求新的accessToken,PHP提供获取accessToken接口。