消息通知、站内信与推送专题

本文整理 DGJ2.0 站内信、系统消息、APP 推送、活动通知、对账通知和任务消息。通知链路通常不改变主业务状态,但影响用户感知和后续操作。

业务目标

  • 业务状态变化后通知服务站或客户。
  • 支持站内信、APP 推送、微信/IM/机器人消息。
  • 支持活动开始结束、对账单发送、销售/出库/退货通知。
  • 支持消息任务和定时发送。

入口文件

  • 消息任务:application/controllers/tasks/Message.php
  • APP 推送日志相关任务:application/controllers/tasks/*
  • MQ 生产:application/Services/Mq/MqSer.php
  • 对账发送:application/Services/Statement/SendService.php
  • IM 通知:application/controllers/tasks/ImCenterNotify.php
  • 活动通知:application/controllers/tasks/ClientActivity.php

核心表

| 表 | 用途 | | --- | --- | | t_sys_message | 消息主表 | | t_sys_message_text | 消息内容 | | t_sys_message_cron | 定时消息 | | t_app_push_log | APP 推送日志 | | t_bs_statement_send_record_v2 | 对账单发送记录 |

常见事件

  • 销售出库通知 APP:APP_SA_ORDER_OUT
  • 销售配送状态变更:APP_SA_ORDER_STATUS
  • 关闭销售单:APP_SA_ORDER_CLOSE
  • 销售结单:APP_SA_ORDER_CUT_OFF
  • 退货入库:APP_APPLY_RETURN_FINISH
  • 退货审核通过:APP_APPLY_RETURN_CHECKED
  • 优惠券发放:APP_COUPON_SEND
  • 活动开始/结束:ACTIVITY_STARTACTIVITY_END

主流程

flowchart TD
  A["业务状态变化"] --> B["构造消息内容"]
  B --> C["写消息/推送日志或发送 MQ"]
  C --> D["APP/IM/微信/机器人消费"]
  D --> E["用户收到通知"]

异常流程

  • 业务成功但没通知:查是否调用 MqSer 或消息任务。
  • 推送失败:查 t_app_push_log、设备 token、下游返回。
  • 重复通知:查业务幂等和消息发送记录。
  • 对账消息失败:查发送记录、客户微信绑定、发送任务。

常用 rg 命令

rg -n "MESSAGE|MESSAGE_TEXT|MESSAGE_CRON|APP_PUSH_LOG" application/config/tables.php application
rg -n "APP_SA_ORDER_OUT|APP_APPLY_RETURN_FINISH|APP_COUPON_SEND|ACTIVITY_START|ACTIVITY_END" application/KzData/Enums application/Services
rg -n "send.*Msg|push|Message|SendService|sendMsg|sendMsgBatch" application/controllers application/Services

改动风险和回归清单

  • 销售、出库、退货、活动、优惠券、对账通知。
  • APP 推送、站内信、IM、微信发送。
  • 重复发送、失败重试、发送记录。
  • 用户设备、客户绑定关系和权限范围。