// 套餐状态枚举
export const packageStatus = {
  0: { name: '待生效', color: '#666', bgColor: '#f5f5f5' },
  1: { name: '生效中', color: '#212121', bgColor: '#e8e8e8' },
  2: { name: '已用完', color: '#999', bgColor: '#f5f5f5' },
  3: { name: '已过期', color: '#999', bgColor: '#f5f5f5' },
  4: { name: '已失效', color: '#999', bgColor: '#f5f5f5' },
}

// 套餐类型
export const packageTypeMap = {
  formal: '正式套餐',
  addon: '加油包',
}

// 佣金来源映射
export const commissionSourceMap = {
  cost_diff: '成本差价',
  one_time: '一次性佣金',
  tier_bonus: '层级分成',
}

// 格式化流量 (MB to GB)
export function formatDataSize(mb: number): string {
  if (mb < 1024)
    return `${mb}MB`
  return `${(mb / 1024).toFixed(1)}GB`
}

// 计算使用百分比
export function calcUsagePercent(used: number, total: number): number {
  if (total === 0)
    return 0
  return Math.min(Math.round((used / total) * 100), 100)
}

// 格式化时间
export function formatDate(dateStr: string | null): string {
  if (!dateStr)
    return '--'
  const date = new Date(dateStr)
  return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`
}

// 格式化日期时间
export function formatDateTime(dateStr: string | null): string {
  if (!dateStr)
    return '--'
  const date = new Date(dateStr)
  return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} ${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}`
}

// 计算剩余天数
export function calcRemainingDays(expiresAt: string | null): number | null {
  if (!expiresAt)
    return null
  const now = new Date()
  const expireDate = new Date(expiresAt)
  const diff = expireDate.getTime() - now.getTime()
  return Math.ceil(diff / (1000 * 60 * 60 * 24))
}

// 格式化金额 (分转元)
export function formatAmount(cents: number): string {
  return (cents / 100).toFixed(2)
}

// 获取剩余天数颜色
export function getRemainingDaysColor(days: number | null): string {
  if (days === null)
    return '#bdbdbd'
  if (days <= 7)
    return '#f44336' // 红色
  if (days <= 30)
    return '#ff9800' // 橙色
  return '#4caf50' // 绿色
}
