订阅消息设计
### 问题
- 获取类目下的所有模版,杂个存储
- 每个小程序下的模版标题id是否一样---同一个分类下标题名称相同,模版标题id是相同的
### 做法,两种方案
- 1、小程服务类目相同,以及推送模版一样,系统维护一套模版,这样模版标题id就相同,同一种情景下为小程序同步模版是相同的。
- 2、第个小程序都自己的分类
1)先获取分类
2)获取分类下的公共标题
3)每个标题下的参数获取
4)用户自己可视化对应参数(我们系统中也需要为每种标题提供可应字段,如订单支付成功,系统能提供什么字段)
### 消息订阅的发送需要用户先订阅,即在移动端需要弹出界面提醒用户是否接受
### 表结构
#### 模版列表
|列名|类型|说明|
|-|-|-|
|provider_id|int|为-1时,为整个系统模版|
|tid|int|微信模版标题id|
|title|string|微信模版标题|
|wx_template_id|string|微信模版id|
|is_sync|bool|是否同步|
|type|int|模版类型,2 为一次性订阅,3 为长期订阅|
|skip_content|string|跳转链接模版|
|create_time|datetime|添加时间|
#### 微信模版参数
|列名|类型|说明|
|-|-|-|
|provider_id|int|为-1时,为整个系统模版|
|tid|int|微信模版标题id|
|kid|int|微信模版参数id,模版id为0时,为url链接参数|
|type|string|模版参数类型(thing,number,letter,symbol )|
|name|string|模版参数中文名称|
|replaced|string|参数,替换成什么参数|
#### 发送记录表
|列名|类型|说明|
|-|-|-|
|user_id|int|user_id|
|open_id|string|接收者open_id|
|tid|int|微信模版标题id|
|title|string|标题|
|content|string|发送内容|
|create_time|datetime|添加时间|
### 商户小程序
|列名|类型|说明|
|-|-|-|
|app_id|string|小程序或公众号appid|
|secret|string|小程序或公众号secret|
|app_type|string|类型小程序或公众号|
|access_token|string|凭证|
|expire|string|过期时间|
|provider_id|int|商户id|
### 消息订阅列表
|列名|类型|说明|
|-|-|-|
|app_id|string|小程序appid|
|open_id|string|用户openid|
|template_id|string|微信模版消息id|
|is_used|int|使用状态|
### 更新说明
- 登录小程序--》开发管理--消息推送配置
> EncodingAESKey 一定要是base64能解密的,可以使用:YXNkZmdoamtscG9pdXl0cmV3cXp4Y3Zibm0xMjM0NTY
- 在表wec_official中配置小程序
- 执行订阅初始化SQL脚本
```sql
INSERT INTO `wec_template` (`title_id`, `title`, `template_id`, `synced`, `template_type`, `link`, `reorder`, `status`, `creator_id`, `create_time`, `provider`, `provider_id`, `modify_id`, `modify_time`, `remark`, `key_word`) VALUES (3578, '订单发送成功', NULL, NULL, NULL, 'pagesA/tabbar/order/orderdetails', NULL, 1, 0, '2022-06-15 11:34:05', NULL, -1, 0, '2022-06-16 11:27:08', NULL, 'OrderPaySuccess');
INSERT INTO `wec_parameter` (`title_id`, `param_id`, `param_type`, `name`, `variable`, `reorder`, `status`, `creator_id`, `create_time`, `provider`, `provider_id`, `modify_id`, `modify_time`, `remark`) VALUES (3578, 0, 'sn', '订单编号', 'oddNumber', 0, 1, 0, '2022-06-15 11:34:05', -1, -1, 0, '2022-06-15 11:39:53', NULL);
INSERT INTO `wec_parameter` (`title_id`, `param_id`, `param_type`, `name`, `variable`, `reorder`, `status`, `creator_id`, `create_time`, `provider`, `provider_id`, `modify_id`, `modify_time`, `remark`) VALUES (3578, 1, 'thing', '商品信息', 'productName', 1, 1, 0, '2022-06-15 11:34:05', -1, -1, 0, '2022-06-15 11:39:53', NULL);
INSERT INTO `wec_parameter` (`title_id`, `param_id`, `param_type`, `name`, `variable`, `reorder`, `status`, `creator_id`, `create_time`, `provider`, `provider_id`, `modify_id`, `modify_time`, `remark`) VALUES (3578, 2, 'amount', '支付金额', 'payables', 2, 1, 0, '2022-06-15 11:34:05', -1, -1, 0, '2022-06-15 11:39:53', NULL);
INSERT INTO `wec_parameter` (`title_id`, `param_id`, `param_type`, `name`, `variable`, `reorder`, `status`, `creator_id`, `create_time`, `provider`, `provider_id`, `modify_id`, `modify_time`, `remark`) VALUES (3578, 3, 'character_string', '订单编号', 'oddNumber', 3, 1, 0, '2022-06-15 11:34:05', -1, -1, 0, '2022-06-15 11:39:53', NULL);
INSERT INTO `wec_parameter` (`title_id`, `param_id`, `param_type`, `name`, `variable`, `reorder`, `status`, `creator_id`, `create_time`, `provider`, `provider_id`, `modify_id`, `modify_time`, `remark`) VALUES (3578, 4, 'time', '支付时间', 'createTime', 4, 1, 0, '2022-06-15 11:34:05', -1, -1, 0, '2022-06-15 11:39:53', NULL);
```