feat(sms): 新增节点短信提醒(审核未通过/被租用需辅助/上架未成交)
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
-- +goose Up
|
||||
|
||||
-- 节点短信:业务节点触发触达的短信发送队列。
|
||||
-- 业务事务内只写 pending 记录(与站内信 notification.Append 同点),
|
||||
-- 由后台任务 smsdispatch 异步发送,短信失败不回滚业务、也不阻塞接口。
|
||||
-- 唯一索引保证「同一业务对象 + 同一节点 + 同一接收人」只发一次,
|
||||
-- 同时充当节点级幂等去重(上架三天未成交提醒不会重复轰炸号主)。
|
||||
CREATE TABLE IF NOT EXISTS sms_messages (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
user_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '接收用户 ID',
|
||||
phone VARCHAR(32) NOT NULL DEFAULT '' COMMENT '接收手机号快照',
|
||||
node VARCHAR(64) NOT NULL COMMENT '业务节点标识,如 listing_review_rejected',
|
||||
biz_type VARCHAR(32) NOT NULL DEFAULT '' COMMENT '业务类型: listing/order/pickup 等',
|
||||
biz_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '业务对象 ID',
|
||||
distribution_site_id BIGINT UNSIGNED NULL COMMENT '归属分销站点 ID,NULL 表示主站',
|
||||
template_code VARCHAR(64) NOT NULL DEFAULT '' COMMENT '实际使用的模板 CODE 快照',
|
||||
template_params JSON NULL COMMENT '模板变量快照',
|
||||
sign_name VARCHAR(64) NOT NULL DEFAULT '' COMMENT '实际使用的短信签名快照',
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'pending' COMMENT 'pending/sent/failed/skipped',
|
||||
skip_reason VARCHAR(128) NOT NULL DEFAULT '' COMMENT '未发送原因(节点未启用/未配置模板等)',
|
||||
retry_count INT NOT NULL DEFAULT 0 COMMENT '已重试次数',
|
||||
last_error VARCHAR(512) NOT NULL DEFAULT '' COMMENT '最后一次发送失败原因',
|
||||
sent_at DATETIME NULL COMMENT '发送成功时间',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_sms_messages_node_biz_user (node, biz_type, biz_id, user_id),
|
||||
KEY idx_sms_messages_status_id (status, id),
|
||||
KEY idx_sms_messages_site_id (distribution_site_id, id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='节点短信发送队列';
|
||||
|
||||
-- +goose Down
|
||||
|
||||
DROP TABLE IF EXISTS sms_messages;
|
||||
Reference in New Issue
Block a user