import { v4 as uuidv4 } from 'uuid';
import { prisma } from '../../models';

/**
 * 分享服务
 * 生成分享链接和二维码
 */
export class ShareService {
  private baseUrl: string;

  constructor() {
    // 从环境变量获取基础 URL，默认使用当前域名
    this.baseUrl = process.env.APP_URL || 'http://localhost:3000';
  }

  /**
   * 生成音频分享链接
   * @param audioId 音频 ID
   */
  generateShareLink(audioId: string): string {
    return `${this.baseUrl}/#/pages/player/index?id=${audioId}`;
  }

  /**
   * 生成分享卡片数据
   * @param audioId 音频 ID
   */
  async generateShareCard(audioId: string) {
    const audio = await prisma.audio.findUnique({ where: { id: parseInt(audioId) } });

    if (!audio) {
      throw new Error('音频不存在');
    }

    // 生成更完整的描述
    let description = '';
    if (audio.summary) {
      description = audio.summary;
    } else if (audio.text && audio.text.length > 100) {
      description = audio.text.slice(0, 100) + '...';
    } else if (audio.text) {
      description = audio.text;
    } else {
      description = 'AI 有声书精彩内容';
    }

    return {
      title: audio.title || 'AI 有声书',
      description: description,
      imageUrl: this.generateCoverImage(audio),
      link: this.generateShareLink(audioId),
      audioId: audio.id,
      wordCount: audio.wordCount,
      audioDuration: audio.audioDuration,
    };
  }

  /**
   * 生成封面图片（可以使用 canvas 或第三方服务）
   * 这里返回一个简单的渐变色配置
   */
  private generateCoverImage(audio: any) {
    // 实际项目中可以生成真实的图片
    return {
      type: 'gradient',
      colors: ['#4f46e5', '#818cf8'],
      icon: '🎵',
    };
  }

  /**
   * 生成二维码数据（前端使用库渲染）
   * @param audioId 音频 ID
   */
  generateQRCodeData(audioId: string): string {
    return this.generateShareLink(audioId);
  }

  /**
   * 记录分享行为（用于统计）
   * @param audioId 音频 ID
   * @param userId 用户 ID
   * @param platform 分享平台
   */
  async trackShare(audioId: string, userId: string, platform: string) {
    // TODO: 记录到数据库，用于统计分析
    console.log(`📤 用户 ${userId} 分享了音频 ${audioId} 到 ${platform}`);
  }
}

// 导出单例
export const shareService = new ShareService();
