-- =========================================== -- 通知发送记录表 -- 用于记录各类通知消息的发送记录,实现防重机制 -- 确保同一任务同一人同一通知类型只发送一次 -- =========================================== DROP TABLE IF EXISTS `sys_notify_send_log`; CREATE TABLE `sys_notify_send_log` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `notify_task_id` bigint DEFAULT NULL COMMENT '关联的通知任务ID', `task_id` bigint NOT NULL COMMENT '任务ID', `user_id` bigint NOT NULL COMMENT '接收用户ID', `user_name` varchar(64) DEFAULT NULL COMMENT '接收用户姓名', `notify_type` varchar(32) NOT NULL COMMENT '通知类型:TASK_ASSIGN-任务分配, STATUS_CHANGE-状态变更, TASK_CREATE-任务创建', `channel` varchar(32) NOT NULL COMMENT '通知渠道:WECHAT-微信订阅消息, SMS-短信, APP_PUSH-APP推送, SITE_MSG-站内消息', `send_content` text, `send_status` char(1) DEFAULT '0' COMMENT '发送状态:0-待发送, 1-发送成功, 2-发送失败', `send_time` datetime DEFAULT NULL COMMENT '发送时间', `send_result` varchar(500) DEFAULT NULL COMMENT '发送结果/错误信息', `retry_count` int DEFAULT '0' COMMENT '重试次数', `create_time` datetime NOT NULL COMMENT '创建时间', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `response_msg` text COMMENT '响应消息', PRIMARY KEY (`id`), UNIQUE KEY `uk_task_user_type_channel` (`task_id`,`user_id`,`notify_type`,`channel`) COMMENT '同一任务同一用户同一类型同一渠道只能有一条记录', KEY `idx_task_id` (`task_id`), KEY `idx_user_id` (`user_id`), KEY `idx_notify_type` (`notify_type`), KEY `idx_send_status` (`send_status`), KEY `idx_create_time` (`create_time`), KEY `idx_notify_task_id` (`notify_task_id`) ) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='通知发送记录表'; -- =========================================== -- 使用说明: -- 1. 在发送通知前,先检查是否已存在相同记录 -- 2. 如果不存在,则插入记录并发送通知 -- 3. 发送成功后更新 send_status 为 1 -- 4. 发送失败后更新 send_status 为 2,并记录错误信息 -- 5. 可以通过定时任务重试发送失败的记录 -- -- 通知类型说明: -- TASK_ASSIGN - 任务分配通知(新任务推送给执行人) -- STATUS_CHANGE - 任务状态变更通知 -- TASK_CREATE - 任务创建成功通知 -- -- 通知渠道说明: -- WECHAT - 微信小程序订阅消息 -- SMS - 短信通知 -- APP_PUSH - APP推送通知 -- SITE_MSG - 系统站内消息 -- ===========================================