-- 企业微信「客户联系」事件流水表 -- 用途: -- 1) 记录每一次 change_external_contact 推送,用于"今天进来多少人(=add_external_contact 次数)"等精确统计; -- 2) 独立于 zyt_qywx_external_contact(会被软删/UPSERT 覆盖),保证统计零误差; -- 3) 企微对非 2xx 响应最多重试 3 次,(change_type, user_id, external_userid, event_time) 唯一键保证幂等。 CREATE TABLE IF NOT EXISTS `zyt_qywx_external_contact_event` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `change_type` varchar(32) NOT NULL DEFAULT '' COMMENT 'change_external_contact 下的子类型,如 add_external_contact/del_external_contact/del_follow_user/transfer_fail 等', `user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '企业员工 userid(可能为空)', `external_userid` varchar(64) NOT NULL DEFAULT '' COMMENT '外部联系人 external_userid(可能为空,如渠道活码尚未产生客户)', `state` varchar(128) NOT NULL DEFAULT '' COMMENT '企微 State(推广渠道自定义参数),用于分渠道统计', `fail_reason` varchar(64) NOT NULL DEFAULT '' COMMENT 'transfer_fail 等事件的失败原因', `welcome_code` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '是否带欢迎码(1=带;不落 code 原文以免泄漏)', `event_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '企微 CreateTime(事件发生时间戳,秒)', `create_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '本地入库时间(秒)', `raw` text DEFAULT NULL COMMENT '事件原文 JSON(调试用,可定期清理)', PRIMARY KEY (`id`), UNIQUE KEY `uk_change_user_ext_time` (`change_type`, `user_id`, `external_userid`, `event_time`), KEY `idx_change_time` (`change_type`, `event_time`), KEY `idx_event_time` (`event_time`), KEY `idx_state` (`state`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业微信外部联系人事件流水(用于进入计数)';