-- ============================================
-- 支付宝from消息回调记录表 - 创建表
-- ============================================
-- 说明：用于记录和存储支付宝from消息回调的所有记录
-- 执行时间：2025-XX-XX
-- ============================================

CREATE TABLE `alipay_from_callback` (
  `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` datetime DEFAULT NULL COMMENT '删除时间',
  `del_state` tinyint NOT NULL DEFAULT '0' COMMENT '删除状态：0=未删除，1=已删除',
  `version` bigint NOT NULL DEFAULT '0' COMMENT '版本号（乐观锁）',

/* 业务字段 */
`msg_method` varchar(100) NOT NULL COMMENT '消息类型，如：alipay.merchant.tradecomplain.changed, alipay.security.risk.complaints.merchants.notify',
  `app_id` varchar(50) NOT NULL COMMENT '应用ID',
  `notify_id` varchar(100) DEFAULT NULL COMMENT '通知ID（支付宝返回的）',
  `biz_content` text NOT NULL COMMENT '业务内容（JSON字符串，存储完整的biz_content）',
  `status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '处理状态：pending=待处理，processed=已处理，failed=处理失败',
  `error_message` text DEFAULT NULL COMMENT '错误信息（如果处理失败）',
  
  PRIMARY KEY (`id`),
  KEY `idx_msg_method` (`msg_method`) COMMENT '优化按消息类型查询',
  KEY `idx_app_id` (`app_id`) COMMENT '优化按应用ID查询',
  KEY `idx_notify_id` (`notify_id`) COMMENT '优化按通知ID查询（用于去重）',
  KEY `idx_status` (`status`) COMMENT '优化按处理状态查询',
  KEY `idx_create_time` (`create_time`) COMMENT '优化按创建时间查询'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='支付宝from消息回调记录表';

-- ============================================
-- 说明：
-- 1. 此表用于记录所有支付宝from消息回调的原始数据
-- 2. biz_content 存储完整的JSON字符串，便于后续查看和调试
-- 3. status 字段用于标记回调的处理状态
-- 4. notify_id 可用于去重，避免重复处理同一条回调
-- 5. 支持软删除（del_state）
-- 6. 由于回调类型多样，不解析biz_content，统一存储JSON字符串
-- ============================================