/**
 * @description 图标路径处理工具
 * @author yslg
 * @since 2025-10-27
 */

import { PUBLIC_IMG_PATH } from '@/config';

/**
 * 获取图标完整路径
 * @param icon 图标路径或URL
 * @param subPath 子路径（可选，默认为 achievement）
 * @returns 完整的图标URL
 * 
 * @example
 * // 仅文件名
 * getIconUrl('v1-icon.svg') // => '/schoolNewsWeb/img/achievement/v1-icon.svg'
 * 
 * // 完整相对路径
 * getIconUrl('/img/achievement/v1-icon.svg') // => '/schoolNewsWeb/img/achievement/v1-icon.svg'
 * 
 * // 外部URL
 * getIconUrl('https://cdn.com/icon.svg') // => 'https://cdn.com/icon.svg'
 */
export function getIconUrl(icon?: string, subPath = 'achievement'): string {
  if (!icon) return '';
  
  // 如果是http或https开头，直接返回（外部URL）
  if (icon.startsWith('http://') || icon.startsWith('https://')) {
    return icon;
  }
  
  // 如果已经包含完整路径（带 schoolNewsWeb 前缀）
  if (icon.startsWith('/schoolNewsWeb/')) {
    return icon;
  }
  
  // 如果包含 /img/ 路径，拼接 schoolNewsWeb 前缀
  if (icon.startsWith('/img/') || icon.startsWith('img/')) {
    const normalizedPath = icon.startsWith('/') ? icon : `/${icon}`;
    return `/schoolNewsWeb${normalizedPath}`;
  }
  
  // 否则拼接默认路径
  const fullPath = `${PUBLIC_IMG_PATH}/${subPath}`;
  return icon.startsWith('/') ? `${fullPath}${icon}` : `${fullPath}/${icon}`;
}

/**
 * 获取成就图标URL
 * @param icon 图标路径或文件名
 * @returns 完整的成就图标URL
 */
export function getAchievementIconUrl(icon?: string): string {
  return getIconUrl(icon, 'achievement');
}

/**
 * 根据等级获取等级图标URL
 * @param level 等级（1-6）
 * @returns 等级图标URL
 */
export function getLevelIconUrl(level = 1): string {
  const validLevel = Math.max(1, Math.min(6, level)); // 限制在1-6之间
  return getIconUrl(`v${validLevel}-icon.svg`, 'achievement');
}

