export interface MemberLevelConfigVO {
  /**
   * 主键ID
   */
  id: string | number;

  /**
   * 等级名称，如：青铜会员(T0)
   */
  levelName: string;

  /**
   * 等级编码，如：T0, T1, ..., T5
   */
  levelCode: string;

  /**
   * 发布状态：draft=草稿, published=已发布, disabled=已禁用
   */
  status: string;

  /**
   * 会员等级图标URL
   */
  imageUrl: string;

  /**
   * 主赛赠送次数
   */
  mainTournamentGiftCount: number;

  /**
   * 附赛赠送次数
   */
  sideTournamentGiftCount: string | number;

  /**
   * 服务券赠送次数
   */
  serviceVoucherGiftCount: number;

  /**
   * 是否允许被赠送给他人
   */
  allowGift: number;

  /**
   * 晋升条件配置，支持多个条件组合
   */
  promotionConditions: string;

  /**
   * 保级条件配置，逻辑与晋升一致
   */
  retentionConditions: string;

  /**
   *
   */
  createdAt: string;

  /**
   *
   */
  updatedAt: string;

  /**
   *
   */
  deletedAt: string;

  promotionConditions2: Array<{
    type: string;
    count: number;
    timeScope: string;
    description: string;
  }>;
  retentionConditions2: Array<{
    type: string;
    count: number;
    timeScope: string;
    description: string;
  }>;
}

export interface MemberLevelConfigForm extends BaseEntity {
  /**
   * 主键ID
   */
  id?: string | number;

  /**
   * 等级名称，如：青铜会员(T0)
   */
  levelName?: string;

  /**
   * 等级编码，如：T0, T1, ..., T5
   */
  levelCode?: string;

  /**
   * 发布状态：draft=草稿, published=已发布, disabled=已禁用
   */
  status?: string;

  /**
   * 会员等级图标URL
   */
  imageUrl?: string;

  /**
   * 主赛赠送次数
   */
  mainTournamentGiftCount?: number;

  /**
   * 附赛赠送次数
   */
  sideTournamentGiftCount?: string | number;

  /**
   * 服务券赠送次数
   */
  serviceVoucherGiftCount?: number;

  /**
   * 是否允许被赠送给他人
   */
  allowGift?: number;

  /**
   * 晋升条件配置，支持多个条件组合
   */
  promotionConditions?: string;

  /**
   * 保级条件配置，逻辑与晋升一致
   */
  retentionConditions?: string;

  /**
   *
   */
  createdAt?: string;

  /**
   *
   */
  updatedAt?: string;

  /**
   *
   */
  deletedAt?: string;

  // ... 其他字段
  promotionConditions2: Array<{
    type: string;
    count: number;
    timeScope: string;
    description: string;
    logic?: 'and' | 'or'; // 新增字段，表示该条件与前一个的关系
  }>;
  retentionConditions2: Array<{
    type: string;
    count: number;
    timeScope: string;
    description: string;
    logic?: 'and' | 'or'; // 新增字段，表示该条件与前一个的关系
  }>;
}

export interface MemberLevelConfigQuery extends PageQuery {
  /**
   * 等级名称，如：青铜会员(T0)
   */
  levelName?: string;

  /**
   * 等级编码，如：T0, T1, ..., T5
   */
  levelCode?: string;

  /**
   * 发布状态：draft=草稿, published=已发布, disabled=已禁用
   */
  status?: string;

  /**
   * 会员等级图标URL
   */
  imageUrl?: string;

  /**
   * 主赛赠送次数
   */
  mainTournamentGiftCount?: number;

  /**
   * 附赛赠送次数
   */
  sideTournamentGiftCount?: string | number;

  /**
   * 服务券赠送次数
   */
  serviceVoucherGiftCount?: number;

  /**
   * 是否允许被赠送给他人
   */
  allowGift?: number;

  /**
   * 晋升条件配置，支持多个条件组合
   */
  promotionConditions?: string;

  /**
   * 保级条件配置，逻辑与晋升一致
   */
  retentionConditions?: string;

  /**
   *
   */
  createdAt?: string;

  /**
   *
   */
  updatedAt?: string;

  /**
   *
   */
  deletedAt?: string;

  /**
   * 日期范围参数
   */
  params?: any;

  promotionConditions2: Array<{
    type: string;
    count: number;
    timeScope: string;
    description: string;
  }>;
  retentionConditions2: Array<{
    type: string;
    count: number;
    timeScope: string;
    description: string;
  }>;
}
