/**
 * 用户等级配置
 * 用于分销商角色的显示和样式管理
 */

/** 用户等级枚举 */
export enum UserLevel {
  /** 普通用户 */
  NORMAL = 0,
  /** 超级管理员 */
  SUPER_ADMIN = 1,
  /** 合伙人（总店） */
  PARTNER_HEAD = 2,
  /** 合伙人（分店） */
  PARTNER_BRANCH = 3,
}

/** 用户等级配置接口 */
export interface UserLevelConfig {
  level: UserLevel;
  name: string;
  /** Tag 组件的 type 属性 */
  tagType: 'default' | 'success' | 'warning' | 'danger';
  /** 背景色 */
  bgColor: string;
  /** 文字颜色 */
  textColor: string;
  /** 边框颜色 */
  borderColor: string;
}

/** 用户等级配置表 */
export const USER_LEVEL_CONFIG: Record<UserLevel, UserLevelConfig> = {
  [UserLevel.NORMAL]: {
    level: UserLevel.NORMAL,
    name: '普通用户',
    tagType: 'default',
    bgColor: '#f5f5f5',
    textColor: '#666666',
    borderColor: '#e5e5e5',
  },
  [UserLevel.SUPER_ADMIN]: {
    level: UserLevel.SUPER_ADMIN,
    name: '超级管理员',
    tagType: 'danger',
    bgColor: '#fff2f0',
    textColor: '#cf1322',
    borderColor: '#ffccc7',
  },
  [UserLevel.PARTNER_HEAD]: {
    level: UserLevel.PARTNER_HEAD,
    name: '合伙人',
    tagType: 'warning',
    bgColor: '#fff7e6',
    textColor: '#d46b08',
    borderColor: '#ffd8bf',
  },
  [UserLevel.PARTNER_BRANCH]: {
    level: UserLevel.PARTNER_BRANCH,
    name: '合伙人',
    tagType: 'success',
    bgColor: '#f6ffed',
    textColor: '#389e0d',
    borderColor: '#b7eb8f',
  },
};

/** 显示名称（带后缀区分总店和分店） */
export const USER_LEVEL_DISPLAY_NAMES: Record<UserLevel, string> = {
  [UserLevel.NORMAL]: '普通用户',
  [UserLevel.SUPER_ADMIN]: '超级管理员',
  [UserLevel.PARTNER_HEAD]: '合伙人（总店）',
  [UserLevel.PARTNER_BRANCH]: '合伙人（分店）',
};

/**
 * 根据等级值获取配置
 * @param level 等级值
 * @returns 用户等级配置
 */
export function getUserLevelConfig(level?: number): UserLevelConfig {
  const validLevel = level ?? 0;
  return USER_LEVEL_CONFIG[validLevel as UserLevel] || USER_LEVEL_CONFIG[UserLevel.NORMAL];
}

/**
 * 根据等级值获取显示名称
 * @param level 等级值
 * @returns 显示名称
 */
export function getUserLevelName(level?: number): string {
  const validLevel = level ?? 0;
  return USER_LEVEL_DISPLAY_NAMES[validLevel as UserLevel] || USER_LEVEL_DISPLAY_NAMES[UserLevel.NORMAL];
}

/**
 * 判断是否是合伙人（包括总店和分店）
 * @param level 等级值
 * @returns 是否是合伙人
 */
export function isPartner(level?: number): boolean {
  return level === UserLevel.PARTNER_HEAD || level === UserLevel.PARTNER_BRANCH;
}

/**
 * 判断是否是管理员（包括超级管理员）
 * @param level 等级值
 * @returns 是否是管理员
 */
export function isAdmin(level?: number): boolean {
  return level === UserLevel.SUPER_ADMIN || level === UserLevel.ADMIN;
}

// 导出默认配置
export default USER_LEVEL_CONFIG;
