-- ============================================================ -- 小程序订阅消息:模板配置 + 授权记录 -- yz_platform_wechat_mini_template 订阅消息模板(按小程序 + 场景码) -- yz_platform_wechat_mini_subscribe 用户授权记录(一次性订阅的剩余发送次数) -- -- 模板 ID 需要在小程序后台「功能 → 订阅消息 → 公共模板库」选用后填入平台端。 -- fields 为 JSON:微信模板字段键 → 语义变量名,例如 -- {"thing1":"title","phrase2":"content","time3":"time"} -- -- 幂等脚本:重复执行不会产生重复数据。 -- 执行:mysql -h -P -u -p < create_wechat_mini_template.sql -- ============================================================ CREATE TABLE IF NOT EXISTS yz_platform_wechat_mini_template ( id bigint unsigned NOT NULL AUTO_INCREMENT, app_id varchar(64) NOT NULL COMMENT '小程序 AppID', code varchar(64) NOT NULL COMMENT '场景码 notice/approval/schedule...', template_id varchar(128) NOT NULL DEFAULT '' COMMENT '微信订阅消息模板 ID', title varchar(255) NOT NULL DEFAULT '' COMMENT '场景名称', page varchar(255) NOT NULL DEFAULT '' COMMENT '点击消息跳转的小程序页面', fields text NULL COMMENT 'JSON:微信字段键 → 语义变量名映射', enabled tinyint NOT NULL DEFAULT 1 COMMENT '1=启用 0=停用', remark varchar(255) NOT NULL DEFAULT '' COMMENT '备注', create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time datetime NULL COMMENT '更新时间', delete_time datetime NULL COMMENT '软删时间', PRIMARY KEY (id), UNIQUE KEY uk_mini_tpl_app_code (app_id, code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小程序订阅消息模板'; CREATE TABLE IF NOT EXISTS yz_platform_wechat_mini_subscribe ( id bigint unsigned NOT NULL AUTO_INCREMENT, identity_id bigint unsigned NOT NULL COMMENT '身份 ID(yz_auth_identity.id)', app_id varchar(64) NOT NULL COMMENT '小程序 AppID', template_id varchar(128) NOT NULL COMMENT '微信订阅消息模板 ID', remain int NOT NULL DEFAULT 0 COMMENT '剩余可发送次数(一次性订阅)', create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time datetime NULL COMMENT '更新时间', PRIMARY KEY (id), UNIQUE KEY uk_mini_sub_identity_tpl (identity_id, app_id, template_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小程序订阅消息授权记录'; -- 结果校验 SELECT id, app_id, code, template_id, title, page, enabled FROM yz_platform_wechat_mini_template WHERE delete_time IS NULL;