| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- -- =====================================================================
- -- 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);
|