-- 代理模式改造升级脚本
-- 适用范围：
-- 1. 将会员资料补充代理级别字段。
-- 2. 为历史会员回填默认代理级别为二级代理。
-- 3. 规范异常代理级别值，保证新代码可直接使用。
--
-- 执行建议：
-- 1. 执行前先备份数据库。
-- 2. 在业务低峰期执行。
-- 3. 执行完成后再发布本次 Java / UI / member-web 代码。

SET @current_schema = DATABASE();

-- 1) 如果 xxk_member_profile.agent_level 不存在，则新增字段
SET @has_agent_level = (
    SELECT COUNT(1)
    FROM information_schema.COLUMNS
    WHERE TABLE_SCHEMA = @current_schema
      AND TABLE_NAME = 'xxk_member_profile'
      AND COLUMN_NAME = 'agent_level'
);

SET @ddl_sql = IF(
    @has_agent_level = 0,
    'ALTER TABLE `xxk_member_profile`
        ADD COLUMN `agent_level` TINYINT NOT NULL DEFAULT 2 COMMENT ''代理级别(1一级代理 2二级代理)'' AFTER `invite_code`',
    'SELECT ''xxk_member_profile.agent_level already exists'' AS message'
);

PREPARE stmt FROM @ddl_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- 2) 历史数据回填：
-- 空值、0、其他非法值一律收敛成二级代理
UPDATE `xxk_member_profile`
SET `agent_level` = 2
WHERE `agent_level` IS NULL
   OR `agent_level` NOT IN (1, 2);


UPDATE `sys_menu` SET `name` = '代理返佣流水' WHERE `id` = 1200


ALTER TABLE `xxk_distribution_config`
    ADD COLUMN IF NOT EXISTS `withdraw_threshold` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '提现门槛金额' AFTER `second_level_rate`,
    ADD COLUMN IF NOT EXISTS `withdraw_fee_rate` decimal(10,4) NOT NULL DEFAULT 0.0000 COMMENT '提现手续费比例' AFTER `withdraw_threshold`;
