-- ============================================
-- 新代理系统数据表创建脚本
-- 说明：创建新代理系统的所有数据表
-- ============================================

-- ============================================
-- 1. 代理基本信息表
-- ============================================
CREATE TABLE `agent` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `level` tinyint NOT NULL DEFAULT 1 COMMENT '代理等级：1=普通，2=黄金，3=钻石',
  `region` varchar(50) DEFAULT NULL COMMENT '区域（可选）',
  `mobile` varchar(50) NOT NULL DEFAULT '' COMMENT '手机号（加密）',
  `wechat_id` varchar(100) DEFAULT NULL COMMENT '微信号',
  `team_leader_id` bigint DEFAULT NULL COMMENT '团队首领ID（钻石代理的ID，普通/黄金代理指向其团队首领）',
  `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`),
  UNIQUE KEY `uk_user_id` (`user_id`),
  KEY `idx_mobile` (`mobile`),
  KEY `idx_level` (`level`),
  KEY `idx_team_leader_id` (`team_leader_id`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理基本信息表';

-- ============================================
-- 2. 代理钱包表（注意：agent_audit 表已废弃，新系统通过邀请码直接成为代理，无需审核）
-- ============================================
-- ============================================
CREATE TABLE `agent_wallet` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `agent_id` bigint NOT NULL COMMENT '代理ID',
  `balance` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '可用余额',
  `frozen_balance` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '冻结余额',
  `total_earnings` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '累计收益',
  `withdrawn_amount` decimal(10,2) NOT NULL DEFAULT 0.00 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`),
  UNIQUE KEY `uk_agent_id` (`agent_id`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理钱包表';

-- ============================================
-- 4. 代理上下级关系表（支持脱离关系）
-- ============================================
CREATE TABLE `agent_relation` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `parent_id` bigint NOT NULL COMMENT '上级代理ID',
  `child_id` bigint NOT NULL COMMENT '下级代理ID',
  `relation_type` tinyint NOT NULL DEFAULT 1 COMMENT '关系类型：1=直接关系，2=已脱离（历史记录）',
  `detach_reason` varchar(100) DEFAULT NULL COMMENT '脱离原因：upgrade=升级脱离',
  `detach_time` datetime 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`),
  UNIQUE KEY `uk_parent_child_type` (`parent_id`, `child_id`, `relation_type`),
  KEY `idx_parent_id` (`parent_id`),
  KEY `idx_child_id` (`child_id`),
  KEY `idx_relation_type` (`relation_type`),
  KEY `idx_parent_relation` (`parent_id`, `relation_type`) COMMENT '复合索引：查询有效下级',
  KEY `idx_child_relation` (`child_id`, `relation_type`) COMMENT '复合索引：查询有效上级',
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理上下级关系表';

-- ============================================
-- 5. 代理推广链接表
-- ============================================
CREATE TABLE `agent_link` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `agent_id` bigint NOT NULL COMMENT '代理ID',
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `product_id` bigint NOT NULL COMMENT '产品ID',
  `link_identifier` varchar(200) NOT NULL COMMENT '推广链接标识（加密）',
  `set_price` decimal(10,2) NOT NULL COMMENT '代理设定价格',
  `actual_base_price` decimal(10,2) NOT 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`),
  UNIQUE KEY `uk_link_identifier` (`link_identifier`),
  UNIQUE KEY `uk_agent_product_price` (`agent_id`, `product_id`, `set_price`, `del_state`) COMMENT '唯一约束：同一代理、同一产品、同一价格只能有一个有效链接',
  KEY `idx_agent_id` (`agent_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_product_id` (`product_id`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理推广链接表';

-- ============================================
-- 6. 代理订单关联表
-- ============================================
CREATE TABLE `agent_order` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `agent_id` bigint NOT NULL COMMENT '代理ID',
  `order_id` bigint NOT NULL COMMENT '订单ID',
  `product_id` bigint NOT NULL COMMENT '产品ID',
  `order_amount` decimal(10,2) NOT NULL COMMENT '订单金额（用户实际支付金额，冗余字段）',
  `set_price` decimal(10,2) NOT NULL COMMENT '代理设定价格',
  `actual_base_price` decimal(10,2) NOT NULL COMMENT '实际底价（基础底价+等级加成）',
  `price_cost` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '提价成本（(设定价格-提价标准阈值)×提价手续费比例）',
  `agent_profit` decimal(10,2) NOT NULL COMMENT '代理收益（设定价格-实际底价-提价成本）',
  `process_status` tinyint NOT NULL DEFAULT 0 COMMENT '处理状态：0=待处理，1=处理成功，2=处理失败',
  `process_time` datetime DEFAULT NULL COMMENT '处理时间',
  `process_remark` varchar(500) 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`),
  UNIQUE KEY `uk_order_id` (`order_id`),
  KEY `idx_agent_id` (`agent_id`),
  KEY `idx_product_id` (`product_id`),
  KEY `idx_process_status` (`process_status`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理订单关联表';

-- ============================================
-- 7. 代理佣金记录表
-- ============================================
CREATE TABLE `agent_commission` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `agent_id` bigint NOT NULL COMMENT '代理ID',
  `order_id` bigint NOT NULL COMMENT '订单ID',
  `product_id` bigint NOT NULL COMMENT '产品ID',
  `amount` decimal(10,2) NOT NULL COMMENT '佣金金额',
  `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1=已发放，2=已冻结，3=已取消',
  `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_product_id` (`product_id`),
  KEY `idx_status` (`status`),
  KEY `idx_agent_status` (`agent_id`, `status`) COMMENT '复合索引：查询代理的佣金记录',
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理佣金记录表';

-- ============================================
-- 8. 代理返佣记录表（等级加成返佣）
-- ============================================
CREATE TABLE `agent_rebate` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `agent_id` bigint NOT NULL COMMENT '获得返佣的代理ID',
  `source_agent_id` bigint NOT NULL COMMENT '来源代理ID（推广订单的代理）',
  `order_id` bigint NOT NULL COMMENT '订单ID',
  `product_id` bigint NOT NULL COMMENT '产品ID',
  `rebate_type` tinyint NOT NULL COMMENT '返佣类型：1=直接上级返佣，2=钻石上级返佣，3=黄金上级返佣',
  `level_bonus` decimal(10,2) NOT NULL COMMENT '等级加成金额（来源代理的等级加成）',
  `rebate_amount` decimal(10,2) NOT NULL COMMENT '返佣金额',
  `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1=已发放，2=已冻结，3=已取消',
  `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_source_agent_id` (`source_agent_id`),
  KEY `idx_order_id` (`order_id`),
  KEY `idx_product_id` (`product_id`),
  KEY `idx_rebate_type` (`rebate_type`),
  KEY `idx_status` (`status`),
  KEY `idx_order_rebate_type` (`order_id`, `rebate_type`) COMMENT '复合索引：查询订单的返佣明细',
  KEY `idx_agent_status` (`agent_id`, `status`) COMMENT '复合索引：查询代理的返佣记录',
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理返佣记录表（等级加成返佣）';

-- ============================================
-- 9. 代理升级记录表
-- ============================================
CREATE TABLE `agent_upgrade` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `agent_id` bigint NOT NULL COMMENT '被升级的代理ID',
  `from_level` tinyint NOT NULL COMMENT '原等级：1=普通，2=黄金，3=钻石',
  `to_level` tinyint NOT NULL COMMENT '目标等级：1=普通，2=黄金，3=钻石',
  `upgrade_type` tinyint NOT NULL COMMENT '升级类型：1=自主付费，2=钻石升级下级',
  `upgrade_fee` decimal(10,2) DEFAULT 0.00 COMMENT '升级费用',
  `rebate_amount` decimal(10,2) DEFAULT 0.00 COMMENT '返佣金额（给原直接上级）',
  `rebate_agent_id` bigint DEFAULT NULL COMMENT '返佣代理ID（原直接上级）',
  `operator_agent_id` bigint DEFAULT NULL COMMENT '操作代理ID（如果是钻石升级下级，记录操作者）',
  `order_no` varchar(100) DEFAULT NULL COMMENT '支付订单号（如果是自主付费）',
  `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1=待处理，2=已完成，3=已失败',
  `remark` varchar(500) 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_rebate_agent_id` (`rebate_agent_id`),
  KEY `idx_operator_agent_id` (`operator_agent_id`),
  KEY `idx_upgrade_type` (`upgrade_type`),
  KEY `idx_status` (`status`),
  KEY `idx_agent_status` (`agent_id`, `status`) COMMENT '复合索引：查询代理的升级记录',
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理升级记录表';

-- ============================================
-- 10. 代理提现表
-- ============================================
CREATE TABLE `agent_withdrawal` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `agent_id` bigint NOT NULL COMMENT '代理ID',
  `withdraw_no` varchar(100) NOT NULL COMMENT '提现单号',
  `payee_account` varchar(100) NOT NULL COMMENT '收款账户',
  `payee_name` varchar(50) NOT NULL COMMENT '收款人姓名',
  `amount` decimal(10,2) NOT NULL COMMENT '提现金额',
  `actual_amount` decimal(10,2) NOT NULL COMMENT '实际到账金额（扣除税费后）',
  `tax_amount` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '税费金额',
  `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态：1=处理中，2=成功，3=失败',
  `remark` varchar(500) 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`),
  UNIQUE KEY `uk_withdraw_no` (`withdraw_no`),
  KEY `idx_agent_id` (`agent_id`),
  KEY `idx_status` (`status`),
  KEY `idx_agent_status` (`agent_id`, `status`) COMMENT '复合索引：查询代理的提现记录',
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理提现表';

-- ============================================
-- 11. 代理系统配置表
-- ============================================
CREATE TABLE `agent_config` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `config_key` varchar(100) NOT NULL COMMENT '配置键',
  `config_value` varchar(500) NOT NULL COMMENT '配置值',
  `config_type` varchar(50) NOT NULL COMMENT '配置类型：price=价格，bonus=等级加成，upgrade=升级费用，rebate=返佣，tax=税费',
  `description` varchar(500) 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`),
  UNIQUE KEY `uk_config_key` (`config_key`),
  KEY `idx_config_type` (`config_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理系统配置表';

-- ============================================
-- 12. 代理产品配置表（简化版）
-- ============================================
CREATE TABLE `agent_product_config` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `product_id` bigint NOT NULL COMMENT '产品ID',
  `product_name` varchar(100) NOT NULL COMMENT '产品名称',
  `base_price` decimal(10,2) NOT NULL COMMENT '基础底价（BasePrice）',
  `system_max_price` decimal(10,2) NOT NULL COMMENT '系统价格上限（SystemMaxPrice）',
  `price_threshold` decimal(10,2) DEFAULT NULL COMMENT '提价标准阈值（PriceThreshold）',
  `price_fee_rate` decimal(5,4) DEFAULT NULL COMMENT '提价手续费比例（PriceFeeRate）',
  `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`),
  UNIQUE KEY `uk_product_id` (`product_id`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理产品配置表';

-- ============================================
-- 13. 代理实名认证表
-- ============================================
CREATE TABLE `agent_real_name` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `agent_id` bigint NOT NULL COMMENT '代理ID',
  `name` varchar(50) NOT NULL COMMENT '真实姓名',
  `id_card` varchar(50) NOT NULL COMMENT '身份证号（加密）',
  `mobile` varchar(50) NOT NULL COMMENT '手机号（加密）',
  `verify_time` datetime DEFAULT NULL COMMENT '验证时间（三要素验证通过时间，NULL表示未验证）',
  `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`),
  UNIQUE KEY `uk_agent_id` (`agent_id`),
  KEY `idx_verify_time` (`verify_time`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理实名认证表';

-- ============================================
-- 14. 代理提现扣税记录表
-- ============================================
CREATE TABLE `agent_withdrawal_tax` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `agent_id` bigint NOT NULL COMMENT '代理ID',
  `withdrawal_id` bigint NOT NULL COMMENT '提现记录ID',
  `year_month` int NOT NULL COMMENT '年月（格式：YYYYMM）',
  `withdrawal_amount` decimal(10,2) NOT NULL COMMENT '提现金额',
  `taxable_amount` decimal(10,2) NOT NULL COMMENT '应税金额',
  `tax_rate` decimal(5,4) NOT NULL COMMENT '税率',
  `tax_amount` decimal(10,2) NOT NULL COMMENT '税费金额',
  `actual_amount` decimal(10,2) NOT NULL COMMENT '实际到账金额',
  `tax_status` tinyint NOT NULL DEFAULT 1 COMMENT '扣税状态：1=待扣税，2=已扣税，3=扣税失败',
  `tax_time` datetime DEFAULT NULL COMMENT '扣税时间',
  `remark` varchar(500) 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_withdrawal_id` (`withdrawal_id`),
  KEY `idx_year_month` (`year_month`),
  KEY `idx_tax_status` (`tax_status`),
  KEY `idx_agent_year_month` (`agent_id`, `year_month`) COMMENT '复合索引：查询代理的月度扣税记录'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理提现扣税记录表';

-- ============================================
-- 初始化系统配置数据
-- ============================================
INSERT INTO `agent_config` (`config_key`, `config_value`, `config_type`, `description`) VALUES
('base_price', '0.00', 'price', '系统基础底价（BasePrice）'),
('system_max_price', '9999.99', 'price', '系统价格上限（SystemMaxPrice）'),
('price_threshold', '0.00', 'price', '提价标准阈值（PriceThreshold）'),
('price_fee_rate', '0.0000', 'price', '提价手续费比例（PriceFeeRate）'),
('level_bonus_normal', '6.00', 'bonus', '普通代理等级加成（6元）'),
('level_bonus_gold', '3.00', 'bonus', '黄金代理等级加成（3元）'),
('level_bonus_diamond', '0.00', 'bonus', '钻石代理等级加成（0元）'),
('upgrade_fee_normal_to_gold', '199.00', 'upgrade', '普通→黄金升级费用（199元）'),
('upgrade_fee_to_diamond', '980.00', 'upgrade', '升级为钻石费用（980元）'),
('upgrade_rebate_normal_to_gold', '139.00', 'upgrade', '普通→黄金返佣金额（139元）'),
('upgrade_rebate_to_diamond', '680.00', 'upgrade', '升级为钻石返佣金额（680元）'),
('direct_parent_amount_diamond', '6.00', 'rebate', '直接上级是钻石的返佣金额（6元）'),
('direct_parent_amount_gold', '3.00', 'rebate', '直接上级是黄金的返佣金额（3元）'),
('direct_parent_amount_normal', '2.00', 'rebate', '直接上级是普通的返佣金额（2元）'),
('max_gold_rebate_amount', '3.00', 'rebate', '黄金代理最大返佣金额（3元）'),
('tax_rate', '0.0600', 'tax', '提现税率（6%）');

-- ============================================
-- 15. 代理邀请码表
-- ============================================
CREATE TABLE `agent_invite_code` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `code` varchar(50) NOT NULL COMMENT '邀请码（唯一）',
  `agent_id` bigint DEFAULT NULL COMMENT '发放代理ID（NULL表示平台发放的钻石邀请码）',
  `target_level` tinyint NOT NULL DEFAULT 1 COMMENT '目标等级：1=普通，2=黄金，3=钻石',
  `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态：0=未使用，1=已使用，2=已失效（钻石邀请码只能使用一次，普通邀请码可无限使用）',
  `used_user_id` bigint DEFAULT NULL COMMENT '使用用户ID',
  `used_agent_id` bigint DEFAULT NULL COMMENT '使用代理ID',
  `used_time` datetime DEFAULT NULL COMMENT '使用时间',
  `expire_time` datetime DEFAULT NULL COMMENT '过期时间（可选）',
  `remark` varchar(500) 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`),
  UNIQUE KEY `uk_code` (`code`),
  KEY `idx_agent_id` (`agent_id`),
  KEY `idx_status` (`status`),
  KEY `idx_target_level` (`target_level`),
  KEY `idx_used_user_id` (`used_user_id`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='代理邀请码表';

-- ============================================
-- 表创建完成
-- ============================================
-- 执行完成后，请使用goctl生成新的Model代码
-- 参考命令见 generate_agent_models.md 文件

