-- ============================================
-- 代理佣金冻结任务表
-- 说明：用于记录需要解冻的佣金冻结任务，保证异步任务的一致性和持久化
-- ============================================

CREATE TABLE `agent_freeze_task` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `agent_id` bigint NOT NULL COMMENT '代理ID',
    `order_id` bigint NOT NULL COMMENT '订单ID',
    `commission_id` bigint NOT NULL COMMENT '佣金记录ID',
    `freeze_amount` decimal(10, 2) NOT NULL COMMENT '冻结金额',
    `order_price` decimal(10, 2) NOT NULL COMMENT '订单单价',
    `freeze_ratio` decimal(5, 4) NOT NULL DEFAULT 0.1000 COMMENT '冻结比例（例如：0.1000表示10%）',
    `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1=待解冻，2=已解冻，3=已取消',
    `freeze_time` datetime NOT NULL COMMENT '冻结时间',
    `unfreeze_time` datetime NOT NULL COMMENT '解冻时间（冻结时间+1个月）',
    `actual_unfreeze_time` datetime DEFAULT NULL COMMENT '实际解冻时间',
    `remark` varchar(255) DEFAULT NULL COMMENT '备注',
    `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 '版本号（乐观锁）',
    PRIMARY KEY (`id`),
    KEY `idx_agent_id` (`agent_id`),
    KEY `idx_order_id` (`order_id`),
    KEY `idx_commission_id` (`commission_id`),
    KEY `idx_status` (`status`),
    KEY `idx_unfreeze_time` (`unfreeze_time`),
    KEY `idx_agent_status` (`agent_id`, `status`),
    KEY `idx_create_time` (`create_time`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '代理佣金冻结任务表';