/**
 * 分销模块类型定义
 * 核心功能：分享链接追踪、30天绑定规则、自动提现
 */

// 分销绑定记录 - 记录每次分享链接点击的绑定关系
export interface DistributionBinding {
  id: string;
  referrerId: string;           // 分享者ID
  referrerCode: string;         // 分享码
  visitorId: string;            // 访客ID（可以是临时ID或用户ID）
  visitorPhone?: string;        // 访客手机号
  visitorNickname?: string;     // 访客昵称
  
  // 绑定时间管理
  bindingTime: string;          // 绑定时间 ISO格式
  expireTime: string;           // 过期时间（绑定时间+30天）
  
  // 绑定状态
  status: 'active' | 'converted' | 'expired' | 'cancelled';
  
  // 转化信息
  convertedAt?: string;         // 转化时间
  orderId?: string;             // 关联订单ID
  orderAmount?: number;         // 订单金额
  commission?: number;          // 佣金金额
  
  // 来源追踪
  source: 'link' | 'miniprogram' | 'poster' | 'qrcode';
  sourceDetail?: string;        // 来源详情，如：朋友圈、微信群等
  
  // 设备信息（可选）
  deviceInfo?: {
    userAgent?: string;
    ip?: string;
    platform?: string;
  };
  
  createdAt: string;
  updatedAt: string;
}

// 分销商信息
export interface Distributor {
  id: string;
  userId: string;
  nickname: string;
  phone: string;
  referralCode: string;
  
  // 统计数据
  totalClicks: number;          // 总点击数
  totalBindings: number;        // 总绑定数
  activeBindings: number;       // 有效绑定数
  convertedBindings: number;    // 已转化数
  expiredBindings: number;      // 已过期数
  
  // 收益数据
  totalEarnings: number;        // 总收益
  pendingEarnings: number;      // 待结算收益
  withdrawnEarnings: number;    // 已提现收益
  
  // 提现配置
  autoWithdraw: boolean;        // 是否开启自动提现
  autoWithdrawThreshold: number; // 自动提现阈值
  autoWithdrawAccount?: WithdrawAccount; // 自动提现账户
  
  // 分销等级
  level: 'normal' | 'silver' | 'gold' | 'diamond';
  commissionRate: number;       // 佣金比例（0-100）
  
  status: 'active' | 'frozen' | 'disabled';
  createdAt: string;
  updatedAt: string;
}

// 提现账户信息
export interface WithdrawAccount {
  type: 'wechat' | 'alipay';
  account: string;              // 账号
  name: string;                 // 真实姓名
  verified: boolean;            // 是否已验证
  verifiedAt?: string;
}

// 提现记录
export interface WithdrawRecord {
  id: string;
  distributorId: string;
  userId: string;
  userName: string;
  
  amount: number;               // 提现金额
  fee: number;                  // 手续费
  actualAmount: number;         // 实际到账金额
  
  method: 'wechat' | 'alipay';
  account: string;
  accountName: string;
  
  // 打款信息
  status: 'pending' | 'processing' | 'completed' | 'failed' | 'rejected';
  isAuto: boolean;              // 是否自动打款
  
  // 支付渠道返回信息
  paymentNo?: string;           // 支付流水号
  paymentTime?: string;         // 打款时间
  paymentError?: string;        // 打款失败原因
  
  // 审核信息
  reviewedBy?: string;
  reviewNote?: string;
  reviewedAt?: string;
  
  createdAt: string;
  completedAt?: string;
}

// 分销点击记录（用于追踪每次链接点击）
export interface ClickRecord {
  id: string;
  referralCode: string;
  referrerId: string;
  
  // 访客信息
  visitorId: string;            // 设备指纹或用户ID
  isNewVisitor: boolean;        // 是否新访客
  
  // 来源信息
  source: 'link' | 'miniprogram' | 'poster' | 'qrcode';
  sourceUrl?: string;
  referer?: string;
  
  // 设备信息
  deviceInfo?: {
    userAgent?: string;
    ip?: string;
    platform?: string;
    screenSize?: string;
  };
  
  // 后续行为
  registered: boolean;          // 是否注册
  registeredAt?: string;
  purchased: boolean;           // 是否购买
  purchasedAt?: string;
  
  clickTime: string;
  createdAt: string;
}

// 分销配置
export interface DistributionConfig {
  // 绑定规则
  bindingDays: number;          // 绑定有效期（天），默认30
  bindingPriority: 'first' | 'last'; // 绑定优先级：first=首次绑定，last=最后绑定
  
  // 佣金规则
  defaultCommissionRate: number; // 默认佣金比例
  levelRates: {
    normal: number;
    silver: number;
    gold: number;
    diamond: number;
  };
  
  // 提现规则
  minWithdrawAmount: number;    // 最低提现金额
  withdrawFeeRate: number;      // 提现手续费比例
  autoWithdrawEnabled: boolean; // 是否允许自动提现
  autoWithdrawTime: string;     // 自动提现时间（如：每天10:00）
  
  // 提醒规则
  expireRemindDays: number;     // 过期前N天提醒
  
  // 状态
  enabled: boolean;
}

// 过期提醒记录
export interface ExpireReminder {
  id: string;
  bindingId: string;
  distributorId: string;
  
  bindingInfo: {
    visitorNickname?: string;
    visitorPhone?: string;
    bindingTime: string;
    expireTime: string;
  };
  
  reminderType: 'expiring_soon' | 'expired';
  daysRemaining?: number;
  
  // 提醒状态
  isRead: boolean;
  readAt?: string;
  
  createdAt: string;
}

// 分销统计概览
export interface DistributionOverview {
  // 今日数据
  todayClicks: number;
  todayBindings: number;
  todayConversions: number;
  todayEarnings: number;
  
  // 本月数据
  monthClicks: number;
  monthBindings: number;
  monthConversions: number;
  monthEarnings: number;
  
  // 总计数据
  totalClicks: number;
  totalBindings: number;
  totalConversions: number;
  totalEarnings: number;
  
  // 即将过期数据
  expiringBindings: number;     // 7天内即将过期的绑定数
  expiredToday: number;         // 今日过期数
  
  // 提现数据
  pendingWithdrawals: number;   // 待处理提现申请数
  pendingWithdrawAmount: number; // 待处理提现金额
  
  // 转化率
  conversionRate: number;       // 点击转化率
  
  lastUpdated: string;
}

// API响应类型
export interface DistributionAPIResponse<T = unknown> {
  success: boolean;
  data?: T;
  error?: string;
  message?: string;
}

// 分销排行榜条目
export interface DistributionRankItem {
  rank: number;
  distributorId: string;
  nickname: string;
  avatar?: string;
  totalEarnings: number;
  totalConversions: number;
  level: string;
}
