-- ============================================
-- 代理提现功能数据库迁移
-- 执行日期: 2025-01-XX
-- ============================================

-- 1. 修改 agent 表，增加冻结金额和累计提现字段
ALTER TABLE `agent_wallet`
ADD COLUMN `frozen_amount` decimal(10, 2) NOT NULL DEFAULT '0.00' COMMENT '冻结金额' AFTER `balance`,
ADD COLUMN `total_withdraw` decimal(10, 2) NOT NULL DEFAULT '0.00' COMMENT '累计提现金额' AFTER `frozen_amount`;

-- 2. 创建代理提现记录表（符合项目规范）
CREATE TABLE `agent_withdraw` (
  `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 '版本号',

/* 业务字段开始 */

/* 代理信息 */
`agent_id` CHAR(36) NOT NULL COMMENT '代理ID（关联agent表的id）',
`agent_mobile` varchar(20) DEFAULT NULL COMMENT '代理手机号（冗余）',
`agent_code` bigint(20) DEFAULT NULL COMMENT '代理编码（冗余）',

/* 提现金额信息 */
`withdraw_amount` decimal(10, 2) NOT NULL COMMENT '提现金额',
`tax_amount` decimal(10, 2) NOT NULL DEFAULT '0.00' COMMENT '税费金额',
`actual_amount` decimal(10, 2) NOT NULL DEFAULT '0.00' COMMENT '实际到账金额（税后）',
`frozen_amount` decimal(10, 2) NOT NULL COMMENT '冻结金额（与提现金额相同）',

/* 银行卡信息 */
`account_name` varchar(100) NOT NULL COMMENT '收款人姓名',
`bank_card_number` varchar(50) NOT NULL COMMENT '银行卡号（明文，仅用于显示）',
`bank_card_number_encrypted` varchar(255) DEFAULT NULL COMMENT '加密的银行卡号',
`bank_branch` varchar(200) DEFAULT NULL COMMENT '开户支行',

/* 审核信息 */
`status` tinyint NOT NULL DEFAULT '0' COMMENT '状态：0=待审核，1=已通过，2=已拒绝',
  `audit_user_id` CHAR(36) DEFAULT NULL COMMENT '审核人ID',
  `audit_time` datetime DEFAULT NULL COMMENT '审核时间',
  `audit_remark` varchar(500) DEFAULT NULL COMMENT '审核备注（拒绝时必填）',
  /* 业务字段结束 */

  PRIMARY KEY (`id`),
  /* 索引定义 */
  KEY `idx_agent_id` (`agent_id`) COMMENT '优化代理查询',
  KEY `idx_status` (`status`) COMMENT '优化状态筛选',
  KEY `idx_create_time` (`create_time`) COMMENT '优化时间排序',
  KEY `idx_del_state` (`del_state`) COMMENT '优化删除状态查询'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理提现记录表';