通用报表通知

目录
  1. 背景
  2. 报表通知开发流程
  3. 消息通知操作界面
  4. 消息推送逻辑
  5. 数据流转
  6. 消息格式

背景

经营消息通常通过业务代码进行取数,并发送消息到指定的地方,不同伙伴写的逻辑分散各处,存在重复工作,逻辑耦合严重,管理困难,故设计通用的报表通知功能,对取数与通知进行解耦。

报表通知开发流程

 ​

graph LR
开始 --> 需求 
需求 --> 是否有现成的表

是否有现成的表-->|是| 报表通知模块配置
是否有现成的表-->|否| 离线计算
离线计算 --> 处理结果存入mysql
处理结果存入mysql --> 报表通知模块配置
报表通知模块配置-->结束
  • 由专业的数据工程师进行数据处理
  • 数据有问题,只需要数据修改离线计算逻辑(也可应用事实计算)
  • 通知配置人员面对的永远是已经经过处理的数据
  • 通知配置人员可通过管理界面进行简单的调试

 

消息通知操作界面

目前的消息推送配置是写在配置文件里,管理跟改动比较麻烦,后续期望能转成如下类似的界面进行管理

img

消息推送逻辑

  • 定时任务每分钟20秒执行一次
  • 获取获取所有需要通知的任务
  • 判断符合当前时间的任务按sql语句进行取数
  • 对到的数据,按照通用的格式进行消息推送
  • 消息推送,可以接入短信、邮件或钉钉、微信等消息机器人

数据流转

sequenceDiagram
participant user
participant admin
participant task
user ->> web : 业务操作
web ->> mysql: 数据存入
mysql ->> bigdata: 业务数据同步到大数据平台
bigdata ->> bigdata: 数据处理
bigdata -->> mysql: 数据处理结果写回mysql
admin ->> web: 配置消息规则
web->> mysql: 消息规则写入mysql
task ->> mysql: 获取消息源数据
mysql ->> task: 返回消息源数据
task ->> task: 根据配置规则组装多个消息
task->> dingtalk: 发送消息到钉钉
  • 业务操作按常规的方式进行存储
  • 大数据同步数据,并将计算结果写入消息数据表
  • 定时任务负责从消息表中获取消息,并推送到指定的接收方

消息格式

  • 查询结果为单条数据
1
2
3
4
今日单量
下单量: 1000
发货量: 800
退单量: 30
  • 查询结果为多条数据
1
2
3
4
5
订单类型	下单量	发货量	退单量
团购 443 355 343
秒杀 133 330 32
换购 544 533 54