Files
biz-api-cloud-zax/db/20260814_add_app_message_push.sql

306 lines
24 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 商户业务消息中心、多推送供应商适配和业务 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';