-- 商户业务消息中心、多推送供应商适配和业务 Transactional Outbox。 -- 本脚本只新增独立表及表内索引,不修改 wallet_transaction、third_push_conf、third_push_record、 -- third_push_record_user 或其他既有表,不回填历史消息,也不创建跨库外键。 -- 每个接收人持久化一条消息快照。本人消息和关系消息共用收件箱,但通过 recipient_type 明确来源。 CREATE TABLE `pjcloudx_thirdparty`.`third_app_message` ( `id` bigint(20) NOT NULL COMMENT '消息主键,由应用使用雪花算法生成', `event_id` varchar(128) NOT NULL COMMENT '跨服务业务事件幂等ID,由来源Outbox稳定生成', `event_code` varchar(64) NOT NULL COMMENT '固定业务事件编码,例如WALLET_PAYMENT或MEAL_VERIFIED', `recipient_user_id` bigint(20) NOT NULL COMMENT '消息接收用户ID,App只能查询当前登录用户的数据', `subject_user_id` bigint(20) NOT NULL COMMENT '事件主体用户ID,本人消息与接收人相同,关系消息为被监护人', `recipient_type` varchar(16) NOT NULL COMMENT '接收类型,OWNER本人或RELATION关系人', `relation_id` bigint(20) DEFAULT NULL COMMENT '生成关系消息时命中的关系记录ID,本人消息为空', `relation_code` varchar(64) DEFAULT NULL COMMENT '关系类型编码快照,本人消息为空', `relation_name` varchar(64) DEFAULT NULL COMMENT '关系类型名称快照,本人消息为空', `subject_user_name` varchar(128) DEFAULT NULL COMMENT '事件主体用户姓名快照,用于关系消息展示', `source_service` varchar(32) NOT NULL COMMENT '来源服务编码,首期为WALLET或HARDWARE', `source_biz_type` varchar(64) NOT NULL COMMENT '来源业务类型快照,例如钱包业务类型或预约核销', `source_biz_id` varchar(128) NOT NULL COMMENT '来源业务ID快照,例如钱包biz_id或硬件订单ID', `source_mch_id` bigint(20) DEFAULT NULL COMMENT '事件来源商户ID快照,无法解析时为空且仅生成本人收件箱', `source_mch_name` varchar(128) DEFAULT NULL COMMENT '事件来源商户名称快照,避免历史消息随商户改名变化', `title` varchar(128) NOT NULL COMMENT '服务端固定模板渲染后的消息标题', `content` varchar(2000) NOT NULL COMMENT '服务端固定模板渲染后的消息正文', `payload_json` text DEFAULT NULL COMMENT '消息详情快照JSON,仅保存展示所需的非敏感字段', `deep_link_path` varchar(256) DEFAULT NULL COMMENT 'App内部跳转路径,首期统一进入消息详情页', `deep_link_params_json` varchar(1000) DEFAULT NULL COMMENT 'App内部跳转参数JSON,不保存鉴权信息', `read_status` char(1) NOT NULL DEFAULT '0' COMMENT '已读状态,0未读,1已读', `read_time` datetime DEFAULT NULL COMMENT '用户首次标记已读时间,未读时为空', `occurred_time` datetime NOT NULL COMMENT '业务事件实际发生时间,不使用异步投递完成时间替代', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人,系统事件统一为system', `create_time` datetime DEFAULT NULL COMMENT '消息创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '最近更新时间', `del_flag` char(1) DEFAULT '0' COMMENT '逻辑删除标记,0有效,1删除;用户端不提供删除操作', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_third_app_message_event_user` (`tenant_id`, `event_id`, `recipient_user_id`), KEY `idx_third_app_message_inbox` (`tenant_id`, `recipient_user_id`, `read_status`, `occurred_time`, `del_flag`), KEY `idx_third_app_message_mch_event` (`tenant_id`, `source_mch_id`, `event_code`, `occurred_time`, `del_flag`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'App业务消息收件箱'; -- 商户按事件独立配置本人Push与关系消息。不存在配置时由业务按两个开关均关闭处理。 CREATE TABLE `pjcloudx_thirdparty`.`third_app_push_policy` ( `id` bigint(20) NOT NULL COMMENT '策略主键,由应用使用雪花算法生成', `mch_id` bigint(20) NOT NULL COMMENT '商户ID,父店和子店互不继承策略', `event_code` varchar(64) NOT NULL COMMENT '固定业务事件编码', `owner_push_enabled` char(1) NOT NULL DEFAULT '0' COMMENT '本人系统Push开关,0关闭,1开启;不影响本人收件箱', `relation_message_enabled` char(1) NOT NULL DEFAULT '0' COMMENT '关系消息开关,0关闭,1开启;关闭时不生成关系收件箱或Push', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `del_flag` char(1) DEFAULT '0' COMMENT '逻辑删除标记,0有效,1删除', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_third_app_push_policy` (`tenant_id`, `mch_id`, `event_code`), KEY `idx_third_app_push_policy_mch` (`tenant_id`, `mch_id`, `del_flag`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商户App业务消息策略'; -- 商户关系消息策略允许的关系类型。关系编码来自UPMS关系类型协议,不在本表复制关系定义。 CREATE TABLE `pjcloudx_thirdparty`.`third_app_push_policy_relation` ( `id` bigint(20) NOT NULL COMMENT '策略关系主键,由应用使用雪花算法生成', `policy_id` bigint(20) NOT NULL COMMENT '商户事件策略ID', `relation_code` varchar(64) NOT NULL COMMENT '允许接收该事件的UPMS关系类型编码', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `del_flag` char(1) DEFAULT '0' COMMENT '逻辑删除标记,0有效,1删除', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_third_app_policy_relation` (`tenant_id`, `policy_id`, `relation_code`), KEY `idx_third_app_policy_relation_code` (`tenant_id`, `relation_code`, `del_flag`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商户App业务消息关系范围'; -- 用户业务Push总开关。没有持久化记录时按开启处理,只有用户修改后才落库。 CREATE TABLE `pjcloudx_thirdparty`.`third_app_user_push_setting` ( `id` bigint(20) NOT NULL COMMENT '设置主键,由应用使用雪花算法生成', `user_id` bigint(20) NOT NULL COMMENT '设置所属用户ID', `push_enabled` char(1) NOT NULL DEFAULT '1' COMMENT '业务系统Push总开关,0关闭,1开启;不影响已生成收件箱消息', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `del_flag` char(1) DEFAULT '0' COMMENT '逻辑删除标记,0有效,1删除', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_third_app_user_push_setting` (`tenant_id`, `user_id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'App用户业务Push总设置'; -- 用户本人事件Push开关。没有持久化记录的事件按开启处理。 CREATE TABLE `pjcloudx_thirdparty`.`third_app_user_event_setting` ( `id` bigint(20) NOT NULL COMMENT '事件设置主键,由应用使用雪花算法生成', `user_id` bigint(20) NOT NULL COMMENT '设置所属用户ID', `event_code` varchar(64) NOT NULL COMMENT '固定业务事件编码', `push_enabled` char(1) NOT NULL DEFAULT '1' COMMENT '本人事件系统Push开关,0关闭,1开启;不影响本人收件箱', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `del_flag` char(1) DEFAULT '0' COMMENT '逻辑删除标记,0有效,1删除', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_third_app_user_event_setting` (`tenant_id`, `user_id`, `event_code`), KEY `idx_third_app_user_event_user` (`tenant_id`, `user_id`, `del_flag`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'App用户本人事件Push设置'; -- 监护人按具体关系记录和事件主动订阅。新关系记录不会继承旧关系订阅。 CREATE TABLE `pjcloudx_thirdparty`.`third_app_relation_subscription` ( `id` bigint(20) NOT NULL COMMENT '订阅主键,由应用使用雪花算法生成', `relation_id` bigint(20) NOT NULL COMMENT 'UPMS具体关系记录ID,关系重建后必须重新订阅', `subscriber_user_id` bigint(20) NOT NULL COMMENT '订阅用户ID,通常为监护人', `subject_user_id` bigint(20) NOT NULL COMMENT '被订阅事件主体用户ID,通常为被监护人', `relation_code` varchar(64) NOT NULL COMMENT '订阅时的关系类型编码快照', `event_code` varchar(64) NOT NULL COMMENT '固定业务事件编码', `enabled` char(1) NOT NULL DEFAULT '0' COMMENT '订阅开关,0关闭时不生成关系收件箱或Push,1开启', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `del_flag` char(1) DEFAULT '0' COMMENT '逻辑删除标记,0有效,1删除', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_third_app_relation_subscription` (`tenant_id`, `relation_id`, `event_code`), KEY `idx_third_app_relation_subscriber` (`tenant_id`, `subscriber_user_id`, `enabled`, `del_flag`), KEY `idx_third_app_relation_subject` (`tenant_id`, `subject_user_id`, `event_code`, `enabled`, `del_flag`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'App关系事件订阅'; -- 供应商无关的设备绑定。同一逻辑设备可以同时保存多个供应商令牌以支持后续故障切换。 CREATE TABLE `pjcloudx_thirdparty`.`third_push_device_binding` ( `id` bigint(20) NOT NULL COMMENT '设备绑定主键,由应用使用雪花算法生成', `user_id` bigint(20) NOT NULL COMMENT '当前绑定用户ID,账号切换时必须解绑旧用户', `client_device_id` varchar(128) NOT NULL COMMENT 'App生成并持久化的逻辑设备ID,同一安装保持稳定', `provider_code` varchar(32) NOT NULL COMMENT '推送供应商编码,首期为JPUSH', `provider_registration_id` varchar(256) NOT NULL COMMENT '供应商设备令牌或Registration ID,属于敏感投递标识', `app_code` varchar(64) NOT NULL COMMENT '客户端应用编码,用于同供应商多应用隔离', `platform` varchar(16) NOT NULL COMMENT '客户端平台,ANDROID或IOS;H5不建立绑定', `enabled` char(1) NOT NULL DEFAULT '1' COMMENT '绑定有效状态,0停用,1有效', `last_active_time` datetime DEFAULT NULL COMMENT 'App最近成功上报绑定或活跃时间', `unbind_time` datetime DEFAULT NULL COMMENT '退出登录、账号切换或令牌失效后的解绑时间', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `del_flag` char(1) DEFAULT '0' COMMENT '逻辑删除标记,0有效,1删除', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_third_push_provider_token` (`provider_code`, `app_code`, `provider_registration_id`), UNIQUE KEY `uk_third_push_user_device_provider` (`tenant_id`, `user_id`, `client_device_id`, `provider_code`), KEY `idx_third_push_device_user` (`tenant_id`, `user_id`, `enabled`, `provider_code`, `del_flag`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '通用推送设备绑定'; -- 一条收件箱消息最多一条系统Push投递任务;被策略跳过也记录原因,便于商户排查。 CREATE TABLE `pjcloudx_thirdparty`.`third_push_delivery` ( `id` bigint(20) NOT NULL COMMENT '投递任务主键,由应用使用雪花算法生成', `message_id` bigint(20) NOT NULL COMMENT 'App业务消息ID,一条消息最多一个系统Push任务', `recipient_user_id` bigint(20) NOT NULL COMMENT '系统Push目标用户ID', `source_mch_id` bigint(20) DEFAULT NULL COMMENT '消息来源商户ID快照,用于PC数据范围查询', `event_code` varchar(64) NOT NULL COMMENT '固定业务事件编码', `status` varchar(16) NOT NULL COMMENT '投递状态,PENDING、PROCESSING、RETRY、SUCCESS、SKIPPED或FAILED', `skip_reason` varchar(64) DEFAULT NULL COMMENT '跳过原因编码,例如MERCHANT_DISABLED、USER_DISABLED或NO_DEVICE', `attempt_count` int(11) NOT NULL DEFAULT 0 COMMENT '已执行供应商调用次数,跨供应商累计,最多8次', `next_retry_time` datetime DEFAULT NULL COMMENT '下次允许重试时间,非RETRY状态为空', `final_provider_code` varchar(32) DEFAULT NULL COMMENT '最终受理消息的供应商编码,未成功时为空', `provider_message_id` varchar(128) DEFAULT NULL COMMENT '供应商返回的消息ID,供应商未返回时为空', `success_time` datetime DEFAULT NULL COMMENT '供应商明确受理时间', `last_error` varchar(2000) DEFAULT NULL COMMENT '最近一次失败诊断,不保存密钥、令牌或完整请求报文', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `del_flag` char(1) DEFAULT '0' COMMENT '逻辑删除标记,0有效,1删除', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_third_push_delivery_message` (`message_id`), KEY `idx_third_push_delivery_scan` (`tenant_id`, `status`, `next_retry_time`, `del_flag`), KEY `idx_third_push_delivery_mch_time` (`tenant_id`, `source_mch_id`, `create_time`, `del_flag`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'App业务消息Push投递任务'; -- 供应商调用尝试日志。主供应商明确失败后切备用供应商时,每次调用分别保存一行。 CREATE TABLE `pjcloudx_thirdparty`.`third_push_delivery_attempt` ( `id` bigint(20) NOT NULL COMMENT '尝试日志主键,由应用使用雪花算法生成', `delivery_id` bigint(20) NOT NULL COMMENT 'Push投递任务ID', `attempt_no` int(11) NOT NULL COMMENT '投递任务内递增的供应商调用序号', `provider_code` varchar(32) NOT NULL COMMENT '本次调用的推送供应商编码', `result_status` varchar(16) NOT NULL COMMENT '调用结果,ACCEPTED、RETRYABLE_FAILED或PERMANENT_FAILED', `provider_message_id` varchar(128) DEFAULT NULL COMMENT '供应商返回的消息ID,未受理时为空', `error_code` varchar(64) DEFAULT NULL COMMENT '供应商错误码或系统错误分类,不保存密钥和令牌', `error_message` varchar(2000) DEFAULT NULL COMMENT '脱敏后的失败诊断信息', `started_time` datetime NOT NULL COMMENT '本次供应商调用开始时间', `finished_time` datetime DEFAULT NULL COMMENT '本次供应商调用完成时间', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `del_flag` char(1) DEFAULT '0' COMMENT '逻辑删除标记,0有效,1删除', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_third_push_delivery_attempt` (`delivery_id`, `attempt_no`), KEY `idx_third_push_attempt_time` (`tenant_id`, `create_time`, `del_flag`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'Push供应商调用尝试日志'; -- 钱包流水与通知事件同事务落库。一条钱包流水仅生成一条Outbox明细,多钱包由event_group_key异步聚合。 CREATE TABLE `pjcloudx_wallet`.`wallet_message_outbox` ( `id` bigint(20) NOT NULL COMMENT 'Outbox主键,同时作为聚合事件ID来源,由应用使用雪花算法生成', `wallet_transaction_id` bigint(20) NOT NULL COMMENT 'wallet_transaction流水ID,保证每条新流水只写一次Outbox', `event_group_key` varchar(256) NOT NULL COMMENT '按租户、用户、业务类型、业务ID和来源商户生成的聚合键', `event_code` varchar(64) NOT NULL COMMENT '映射后的固定消息事件编码', `subject_user_id` bigint(20) NOT NULL COMMENT '钱包所有人用户ID,也是本人消息接收人', `source_mch_id` bigint(20) DEFAULT NULL COMMENT '来源商户ID快照,订单类取实际商户,账户类取当前食堂,无法解析时为空', `source_mch_name` varchar(128) DEFAULT NULL COMMENT '来源商户名称快照,无法解析时为空', `source_scene` varchar(32) NOT NULL DEFAULT 'WALLET' COMMENT '来源场景,WALLET普通钱包变化或ORDER钱包订单', `source_biz_type` varchar(64) NOT NULL COMMENT 'WalletBizEnum持久化编码快照', `source_biz_id` varchar(128) NOT NULL COMMENT '钱包流水biz_id快照', `wallet_id` bigint(20) NOT NULL COMMENT '发生变化的钱包ID', `wallet_name` varchar(128) DEFAULT NULL COMMENT '钱包名称或别名快照,用于多钱包明细展示', `amount` int(11) NOT NULL COMMENT '本次钱包变动金额,单位分,收入为正、支出为负', `balance` int(11) NOT NULL COMMENT '本次变动后的钱包余额,单位分', `occurred_time` datetime NOT NULL COMMENT '钱包流水发生时间', `status` varchar(16) NOT NULL DEFAULT 'PENDING' COMMENT '处理状态,PENDING、PROCESSING、RETRY、SUCCESS或FAILED', `attempt_count` int(11) NOT NULL DEFAULT 0 COMMENT '向Thirdparty提交事件的累计尝试次数,最多8次', `next_retry_time` datetime DEFAULT NULL COMMENT '下次允许重试时间,首次处理和终态为空', `processed_time` datetime DEFAULT NULL COMMENT 'Thirdparty幂等接收成功时间', `last_error` varchar(2000) DEFAULT NULL COMMENT '最近一次失败诊断,不保存敏感凭证', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `del_flag` char(1) DEFAULT '0' COMMENT '逻辑删除标记,0有效,1删除', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_wallet_message_outbox_transaction` (`wallet_transaction_id`), KEY `idx_wallet_message_outbox_group` (`tenant_id`, `event_group_key`, `status`, `create_time`, `del_flag`), KEY `idx_wallet_message_outbox_scan` (`tenant_id`, `status`, `next_retry_time`, `create_time`, `del_flag`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钱包业务消息Transactional Outbox'; -- 用餐核销状态和事件快照同事务落库;订单重复核销或异步重试不会生成重复消息。 CREATE TABLE `pjcloudx_hardware`.`hard_message_outbox` ( `id` bigint(20) NOT NULL COMMENT 'Outbox主键,由应用使用雪花算法生成', `event_code` varchar(64) NOT NULL COMMENT '固定消息事件编码,首期仅MEAL_VERIFIED', `order_id` bigint(20) NOT NULL COMMENT '发生核销的硬件预约订单ID', `subject_user_id` bigint(20) NOT NULL COMMENT '实际用餐用户ID,也是本人消息接收人', `source_mch_id` bigint(20) NOT NULL COMMENT '订单实际所属商户ID', `source_mch_name` varchar(128) DEFAULT NULL COMMENT '订单商户名称快照', `meal_name` varchar(256) DEFAULT NULL COMMENT '餐段、菜谱或核销内容摘要快照', `occurred_time` datetime NOT NULL COMMENT '核销成功时间', `status` varchar(16) NOT NULL DEFAULT 'PENDING' COMMENT '处理状态,PENDING、PROCESSING、RETRY、SUCCESS或FAILED', `attempt_count` int(11) NOT NULL DEFAULT 0 COMMENT '向Thirdparty提交事件的累计尝试次数,最多8次', `next_retry_time` datetime DEFAULT NULL COMMENT '下次允许重试时间,首次处理和终态为空', `processed_time` datetime DEFAULT NULL COMMENT 'Thirdparty幂等接收成功时间', `last_error` varchar(2000) DEFAULT NULL COMMENT '最近一次失败诊断,不保存敏感凭证', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `del_flag` char(1) DEFAULT '0' COMMENT '逻辑删除标记,0有效,1删除', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_hard_message_outbox_order_event` (`tenant_id`, `event_code`, `order_id`), KEY `idx_hard_message_outbox_scan` (`tenant_id`, `status`, `next_retry_time`, `create_time`, `del_flag`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '硬件核销消息Transactional Outbox';