-- ============================================================
-- 推荐客户模块 SQL
-- 包: app
-- 创建时间: 2026-04-16
-- ============================================================

-- 1. 推荐记录表
CREATE TABLE `app_lead_referral` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `referral_code` VARCHAR(32) DEFAULT NULL COMMENT '推荐码（推荐人分享给客户的码）',
  `referrer_id` INT DEFAULT NULL COMMENT '推荐人用户ID（NULL=匿名推荐）',
  `referrer_name` VARCHAR(64) DEFAULT NULL COMMENT '推荐人姓名',
  `referrer_phone` VARCHAR(20) DEFAULT NULL COMMENT '推荐人手机号',

  `customer_name` VARCHAR(64) NOT NULL COMMENT '客户姓名',
  `customer_phone` VARCHAR(20) NOT NULL COMMENT '客户手机号',
  `customer_company` VARCHAR(255) DEFAULT NULL COMMENT '客户公司名称',
  `requirement` TEXT DEFAULT NULL COMMENT '客户需求描述',
  `appointment_time` DATETIME DEFAULT NULL COMMENT '预约联系时间',
  `remarks` VARCHAR(500) DEFAULT NULL COMMENT '推荐人备注',

  `referral_fee` DECIMAL(10,2) DEFAULT '0.00' COMMENT '推荐费（元）',
  `referral_status` TINYINT NOT NULL DEFAULT '0' COMMENT '推荐状态: 0=待确认, 1=有效, 2=无效/作废, 3=已结算',
  `invalid_reason` VARCHAR(255) DEFAULT NULL COMMENT '作废原因',
  `invalid_time` DATETIME DEFAULT NULL COMMENT '作废时间',
  `confirmed_time` DATETIME DEFAULT NULL COMMENT '确认有效时间',
  `settled_time` DATETIME DEFAULT NULL COMMENT '结算时间',

  `tenant_id` INT DEFAULT NULL COMMENT '租户ID',
  `create_by` INT DEFAULT NULL COMMENT '创建人ID',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` INT DEFAULT NULL COMMENT '更新人ID',
  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` TINYINT NOT NULL DEFAULT '0' COMMENT '删除标记: 0=未删, 1=已删',
  PRIMARY KEY (`id`),
  KEY `idx_referrer_id` (`referrer_id`),
  KEY `idx_customer_phone` (`customer_phone`),
  KEY `idx_referral_status` (`referral_status`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐记录表';

-- 2. 推荐人信息表
CREATE TABLE `app_referrer_info` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` INT NOT NULL COMMENT '用户ID',
  `referral_code` VARCHAR(32) NOT NULL COMMENT '推荐码（唯一）',
  `total_referrals` INT NOT NULL DEFAULT '0' COMMENT '累计推荐人数',
  `valid_referrals` INT NOT NULL DEFAULT '0' COMMENT '有效推荐数',
  `settled_count` INT NOT NULL DEFAULT '0' COMMENT '已结算数',
  `total_earned` DECIMAL(10,2) NOT NULL DEFAULT '0.00' COMMENT '累计获得推荐费（元）',
  `pending_amount` DECIMAL(10,2) NOT NULL DEFAULT '0.00' COMMENT '待结算金额（元）',

  `tenant_id` INT DEFAULT NULL COMMENT '租户ID',
  `create_by` INT DEFAULT NULL COMMENT '创建人ID',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` INT DEFAULT NULL COMMENT '更新人ID',
  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` TINYINT NOT NULL DEFAULT '0' COMMENT '删除标记: 0=未删, 1=已删',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_user_id` (`user_id`),
  UNIQUE KEY `uk_referral_code` (`referral_code`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐人信息表';

-- 3. 推荐费结算记录表
CREATE TABLE `app_referral_settlement` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `referral_id` BIGINT NOT NULL COMMENT '关联推荐记录ID',
  `referrer_id` INT NOT NULL COMMENT '推荐人用户ID',
  `amount` DECIMAL(10,2) NOT NULL COMMENT '结算金额（元）',
  `settlement_no` VARCHAR(32) DEFAULT NULL COMMENT '结算单号',
  `remarks` VARCHAR(500) DEFAULT NULL COMMENT '结算备注',

  `tenant_id` INT DEFAULT NULL COMMENT '租户ID',
  `create_by` INT DEFAULT NULL COMMENT '结算操作人ID',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '结算时间',
  `deleted` TINYINT NOT NULL DEFAULT '0' COMMENT '删除标记: 0=未删, 1=已删',
  PRIMARY KEY (`id`),
  KEY `idx_referral_id` (`referral_id`),
  KEY `idx_referrer_id` (`referrer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐费结算记录表';
