-- ===================================================================== -- qqflow 企微通知/免登多企业支持:企业 agent_id 与用户 corp_id 维度 -- -- 执行库:qqflow 审批引擎库(qqflowengine) -- -- 背景:每个商户是独立企微企业。qqflow 发通知/免登固定走第一条授权企业 -- (五菱汽车)的 token + 全局 agent-id,导致其他商户的审批人 -- 收不到通知(81013 user & party & tag all invalid)、点进 H5 免登失败。 -- 本次为「企业」补 agent_id(代开发各企业应用 agentid 不同)、 -- 为「用户」补 corp_id(归属企业,发送时按企业路由 token + agentid)。 -- -- 说明: -- · 企业表复用现有 enterprise_wechat_corp(授权回调自动写行),不新建; -- · sys_user.corp_id 为空 → 回退默认授权企业(第一条 = 五菱汽车), -- 存量数据零迁移即可保持原行为; -- · 新企业授权回调(create_auth)会在代码发布后自动写入 agent_id; -- · 脚本幂等:条件式加列 + 条件式回填,可重复执行。 -- ===================================================================== -- 执行前确认当前库:必须是 qqflowengine。 SELECT DATABASE() AS current_database; -- ------------------------------------------------------------------- -- 1) enterprise_wechat_corp 增加 agent_id(代开发应用在该企业内的 agentid) -- ------------------------------------------------------------------- SET @hasCorpAgentId = (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'enterprise_wechat_corp' AND COLUMN_NAME = 'agent_id'); SET @ddlCorpAgentId = IF(@hasCorpAgentId = 0, 'ALTER TABLE `enterprise_wechat_corp` ADD COLUMN `agent_id` INT NULL COMMENT ''代开发应用在该企业内的 agentid(各企业不同);为空回退全局 enterprice-wechat.agent-id'' AFTER `corp_name`', 'SELECT ''skip: agent_id 已存在'' AS upgrade_result'); PREPARE stmt_corp_agent_id FROM @ddlCorpAgentId; EXECUTE stmt_corp_agent_id; DEALLOCATE PREPARE stmt_corp_agent_id; -- ------------------------------------------------------------------- -- 2) sys_user 增加 corp_id(用户归属企微企业) -- ------------------------------------------------------------------- SET @hasUserCorpId = (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sys_user' AND COLUMN_NAME = 'corp_id'); SET @ddlUserCorpId = IF(@hasUserCorpId = 0, 'ALTER TABLE `sys_user` ADD COLUMN `corp_id` VARCHAR(64) NULL COMMENT ''所属企微企业 corp_id;为空回退默认授权企业'' AFTER `wecom_user_id`', 'SELECT ''skip: corp_id 已存在'' AS upgrade_result'); PREPARE stmt_user_corp_id FROM @ddlUserCorpId; EXECUTE stmt_user_corp_id; DEALLOCATE PREPARE stmt_user_corp_id; -- ------------------------------------------------------------------- -- 3) 回填:存量授权企业补 agent_id(全局配置 1000136 即五菱汽车的 agentid) -- ------------------------------------------------------------------- UPDATE enterprise_wechat_corp SET agent_id = 1000136 WHERE corp_id = 'wpU17nDAAANKJiASPpuci_9pBEh2Nnow' AND agent_id IS NULL; -- ------------------------------------------------------------------- -- 4) 回填:存量 qqflow 用户的 corp_id -- 数据来源:wl-scrm 库 qqflow_user_map JOIN wxcp_member -- (2026-10-30 生产实际数据,见校验语句核对) -- ------------------------------------------------------------------- UPDATE sys_user SET corp_id = 'wpU17nDAAANKJiASPpuci_9pBEh2Nnow' -- 五菱汽车 WHERE id = 16 AND corp_id IS NULL; UPDATE sys_user SET corp_id = 'wpU17nDAAAdkW4OnezBiL6LVaPZ95NDQ' -- 五菱新事业 WHERE id = 20 AND corp_id IS NULL; -- ===================================================================== -- 5) 校验 -- ===================================================================== -- 5.1 企业:应至少 1 行,五菱汽车行 agent_id=1000136 SELECT id, corp_id, corp_name, agent_id, permanent_code IS NOT NULL AS has_permanent_code FROM enterprise_wechat_corp ORDER BY id; -- 5.2 用户:id=20(scrm_* 五菱新事业审批人)corp_id 应为 wpU17nDAAAdkW4OnezBiL6LVaPZ95NDQ SELECT id, username, real_name, wecom_user_id, corp_id FROM sys_user WHERE id IN (16, 20);