import type { PageParam } from '@/api/index';

/**
 * 邀请记录表
 */
export interface InviteRecord {
  // 主键ID
  id?: number;
  // 邀请人ID
  inviterId?: number;
  // 被邀请人ID
  inviteeId?: number;
  // 邀请人姓名
  inviterName?: string;
  // 被邀请人姓名
  inviteeName?: string;
  // 邀请来源 (qrcode, link, share等)
  source?: string;
  // 场景值
  scene?: string;
  // 邀请状态: pending-待注册, registered-已注册, activated-已激活
  status?: 'pending' | 'registered' | 'activated';
  // 邀请时间
  inviteTime?: string;
  // 注册时间
  registerTime?: string;
  // 激活时间
  activateTime?: string;
  // 备注
  comments?: string;
  // 是否删除, 0否, 1是
  deleted?: number;
  // 租户id
  tenantId?: number;
  // 创建时间
  createTime?: string;
  // 修改时间
  updateTime?: string;
}

/**
 * 邀请统计表
 */
export interface InviteStats {
  // 主键ID
  id?: number;
  // 邀请人ID
  inviterId?: number;
  // 统计日期
  statDate?: string;
  // 总邀请数
  totalInvites?: number;
  // 成功注册数
  successfulRegistrations?: number;
  // 激活用户数
  activatedUsers?: number;
  // 转化率
  conversionRate?: number;
  // 今日邀请数
  todayInvites?: number;
  // 本周邀请数
  weeklyInvites?: number;
  // 本月邀请数
  monthlyInvites?: number;
  // 租户id
  tenantId?: number;
  // 创建时间
  createTime?: string;
  // 修改时间
  updateTime?: string;
}

/**
 * 邀请来源统计表
 */
export interface InviteSourceStats {
  // 主键ID
  id?: number;
  // 邀请人ID
  inviterId?: number;
  // 来源类型
  source?: string;
  // 来源名称
  sourceName?: string;
  // 邀请数量
  inviteCount?: number;
  // 成功数量
  successCount?: number;
  // 转化率
  conversionRate?: number;
  // 统计日期
  statDate?: string;
  // 租户id
  tenantId?: number;
  // 创建时间
  createTime?: string;
  // 修改时间
  updateTime?: string;
}

/**
 * 小程序码记录表
 */
export interface MiniProgramCode {
  // 主键ID
  id?: number;
  // 邀请人ID
  inviterId?: number;
  // 场景值
  scene?: string;
  // 小程序码URL
  codeUrl?: string;
  // 页面路径
  pagePath?: string;
  // 二维码宽度
  width?: number;
  // 环境版本
  envVersion?: string;
  // 过期时间
  expireTime?: string;
  // 使用次数
  useCount?: number;
  // 最后使用时间
  lastUseTime?: string;
  // 状态: active-有效, expired-过期, disabled-禁用
  status?: 'active' | 'expired' | 'disabled';
  // 租户id
  tenantId?: number;
  // 创建时间
  createTime?: string;
  // 修改时间
  updateTime?: string;
}

/**
 * 邀请记录搜索条件
 */
export interface InviteRecordParam extends PageParam {
  // 邀请人ID
  inviterId?: number;
  // 被邀请人ID
  inviteeId?: number;
  // 邀请状态
  status?: string;
  // 邀请来源
  source?: string;
  // 开始时间
  startTime?: string;
  // 结束时间
  endTime?: string;
  // 关键词搜索
  keywords?: string;
}

/**
 * 邀请统计搜索条件
 */
export interface InviteStatsParam extends PageParam {
  // 邀请人ID
  inviterId?: number;
  // 统计开始日期
  startDate?: string;
  // 统计结束日期
  endDate?: string;
}

/**
 * 邀请来源统计搜索条件
 */
export interface InviteSourceStatsParam extends PageParam {
  // 邀请人ID
  inviterId?: number;
  // 来源类型
  source?: string;
  // 统计开始日期
  startDate?: string;
  // 统计结束日期
  endDate?: string;
}

/**
 * 小程序码搜索条件
 */
export interface MiniProgramCodeParam extends PageParam {
  // 邀请人ID
  inviterId?: number;
  // 状态
  status?: string;
  // 场景值
  scene?: string;
}

/**
 * 邀请排行榜数据
 */
export interface InviteRanking {
  // 邀请人ID
  inviterId?: number;
  // 邀请人姓名
  inviterName?: string;
  // 邀请人头像
  inviterAvatar?: string;
  // 邀请数量
  inviteCount?: number;
  // 成功数量
  successCount?: number;
  // 转化率
  conversionRate?: number;
  // 排名
  rank?: number;
  // 奖励金额
  rewardAmount?: number;
}

/**
 * 邀请奖励配置
 */
export interface InviteRewardConfig {
  // 主键ID
  id?: number;
  // 奖励类型: register-注册奖励, activate-激活奖励, order-订单奖励
  rewardType?: string;
  // 奖励名称
  rewardName?: string;
  // 奖励金额
  rewardAmount?: number;
  // 奖励积分
  rewardPoints?: number;
  // 奖励优惠券ID
  couponId?: number;
  // 是否启用
  enabled?: boolean;
  // 生效时间
  effectTime?: string;
  // 失效时间
  expireTime?: string;
  // 备注
  comments?: string;
  // 租户id
  tenantId?: number;
  // 创建时间
  createTime?: string;
  // 修改时间
  updateTime?: string;
}

/**
 * 邀请奖励记录
 */
export interface InviteRewardRecord {
  // 主键ID
  id?: number;
  // 邀请记录ID
  inviteRecordId?: number;
  // 邀请人ID
  inviterId?: number;
  // 被邀请人ID
  inviteeId?: number;
  // 奖励类型
  rewardType?: string;
  // 奖励金额
  rewardAmount?: number;
  // 奖励积分
  rewardPoints?: number;
  // 优惠券ID
  couponId?: number;
  // 发放状态: pending-待发放, issued-已发放, failed-发放失败
  status?: 'pending' | 'issued' | 'failed';
  // 发放时间
  issueTime?: string;
  // 失败原因
  failReason?: string;
  // 租户id
  tenantId?: number;
  // 创建时间
  createTime?: string;
  // 修改时间
  updateTime?: string;
}
