/**
 * Soul创业实验 - 找伙伴页
 * 按H5网页端完全重构
 * 开发: 卡若
 */

const app = getApp()

// 匹配类型配置 - 与H5保持一致
const MATCH_TYPES = [
  { id: 'partner', label: '创业合伙', matchLabel: '创业伙伴', icon: '⭐', matchFromDB: true, showJoinAfterMatch: false },
  { id: 'investor', label: '资源对接', matchLabel: '资源对接', icon: '👥', matchFromDB: false, showJoinAfterMatch: true },
  { id: 'mentor', label: '导师顾问', matchLabel: '商业顾问', icon: '❤️', matchFromDB: false, showJoinAfterMatch: true },
  { id: 'team', label: '团队招募', matchLabel: '加入项目', icon: '🎮', matchFromDB: false, showJoinAfterMatch: true }
]

const FREE_MATCH_LIMIT = 1 // 每日免费匹配次数

Page({
  data: {
    statusBarHeight: 44,
    
    // 匹配类型
    matchTypes: MATCH_TYPES,
    selectedType: 'partner',
    currentTypeLabel: '创业合伙',
    
    // 用户状态
    isLoggedIn: false,
    hasPurchased: false,
    hasFullBook: false,
    
    // 匹配次数
    todayMatchCount: 0,
    totalMatchesAllowed: FREE_MATCH_LIMIT,
    matchesRemaining: FREE_MATCH_LIMIT,
    needPayToMatch: false,
    
    // 匹配状态
    isMatching: false,
    matchAttempts: 0,
    currentMatch: null,
    
    // 加入弹窗
    showJoinModal: false,
    joinType: null,
    joinTypeLabel: '',
    contactType: 'phone',
    phoneNumber: '',
    wechatId: '',
    userPhone: '',
    isJoining: false,
    joinSuccess: false,
    joinError: '',
    
    // 解锁弹窗
    showUnlockModal: false
  },

  onLoad() {
    this.setData({
      statusBarHeight: app.globalData.statusBarHeight || 44
    })
    this.loadStoredContact()
    this.loadTodayMatchCount()
    this.initUserStatus()
  },

  onShow() {
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({ selected: 2 })
    }
    this.initUserStatus()
  },

  // 加载本地存储的联系方式
  loadStoredContact() {
    const phone = wx.getStorageSync('user_phone') || ''
    const wechat = wx.getStorageSync('user_wechat') || ''
    this.setData({
      phoneNumber: phone,
      wechatId: wechat,
      userPhone: phone
    })
  },

  // 加载今日匹配次数
  loadTodayMatchCount() {
    try {
      const today = new Date().toISOString().split('T')[0]
      const stored = wx.getStorageSync('match_count_data')
      if (stored) {
        const data = typeof stored === 'string' ? JSON.parse(stored) : stored
        if (data.date === today) {
          this.setData({ todayMatchCount: data.count })
        }
      }
    } catch (e) {
      console.error('加载匹配次数失败:', e)
    }
  },

  // 保存今日匹配次数
  saveTodayMatchCount(count) {
    const today = new Date().toISOString().split('T')[0]
    wx.setStorageSync('match_count_data', { date: today, count })
  },

  // 初始化用户状态
  initUserStatus() {
    const { isLoggedIn, hasFullBook, purchasedSections } = app.globalData
    const hasPurchased = hasFullBook || (purchasedSections && purchasedSections.length > 0)
    
    // 总匹配次数 = 每日免费(1) + 已购小节数
    const totalMatchesAllowed = hasFullBook ? 999999 : FREE_MATCH_LIMIT + (purchasedSections?.length || 0)
    const matchesRemaining = hasFullBook ? 999999 : Math.max(0, totalMatchesAllowed - this.data.todayMatchCount)
    const needPayToMatch = !hasFullBook && matchesRemaining <= 0
    
    this.setData({
      isLoggedIn,
      hasFullBook,
      hasPurchased,
      totalMatchesAllowed,
      matchesRemaining,
      needPayToMatch
    })
  },

  // 选择匹配类型
  selectType(e) {
    const typeId = e.currentTarget.dataset.type
    const type = MATCH_TYPES.find(t => t.id === typeId)
    this.setData({
      selectedType: typeId,
      currentTypeLabel: type?.matchLabel || type?.label || '创业伙伴'
    })
  },

  // 点击匹配按钮
  handleMatchClick() {
    const currentType = MATCH_TYPES.find(t => t.id === this.data.selectedType)
    
    // 如果是需要填写联系方式的类型，直接弹出加入弹窗
    if (currentType && currentType.showJoinAfterMatch) {
      this.setData({
        showJoinModal: true,
        joinType: currentType.id,
        joinTypeLabel: currentType.matchLabel || currentType.label,
        joinSuccess: false,
        joinError: ''
      })
      return
    }
    
    // 创业合伙类型 - 真正的匹配功能
    if (this.data.needPayToMatch) {
      this.setData({ showUnlockModal: true })
      return
    }
    
    this.startMatch()
  },

  // 显示购买提示
  showPurchaseTip() {
    wx.showModal({
      title: '需要购买书籍',
      content: '购买《一场Soul的创业实验》后即可使用匹配功能，仅需9.9元',
      confirmText: '去购买',
      success: (res) => {
        if (res.confirm) {
          this.goToChapters()
        }
      }
    })
  },

  // 开始匹配
  async startMatch() {
    this.setData({
      isMatching: true,
      matchAttempts: 0,
      currentMatch: null
    })
    
    // 匹配动画计时器
    const timer = setInterval(() => {
      this.setData({ matchAttempts: this.data.matchAttempts + 1 })
    }, 1000)
    
    // 尝试从API获取真实用户
    let matchedUser = null
    try {
      const res = await app.request('/api/ckb/match', {
        method: 'POST',
        data: {
          matchType: this.data.selectedType,
          userId: app.globalData.userInfo?.id || '',
          phone: this.data.phoneNumber,
          wechat: this.data.wechatId
        }
      })
      
      if (res.success && res.data) {
        matchedUser = res.data
      }
    } catch (e) {
      console.log('API匹配失败，使用模拟数据')
    }
    
    // 如果API没返回，使用模拟数据
    if (!matchedUser) {
      matchedUser = this.generateMockMatch()
    }
    
    // 延迟显示结果（模拟匹配过程）
    const delay = Math.random() * 2000 + 2000
    setTimeout(() => {
      clearInterval(timer)
      
      // 增加今日匹配次数
      const newCount = this.data.todayMatchCount + 1
      const matchesRemaining = this.data.hasFullBook ? 999999 : Math.max(0, this.data.totalMatchesAllowed - newCount)
      
      this.setData({
        isMatching: false,
        currentMatch: matchedUser,
        todayMatchCount: newCount,
        matchesRemaining,
        needPayToMatch: !this.data.hasFullBook && matchesRemaining <= 0
      })
      this.saveTodayMatchCount(newCount)
      
      // 上报匹配行为
      this.reportMatch(matchedUser)
      
    }, delay)
  },

  // 生成模拟匹配数据
  generateMockMatch() {
    const nicknames = ['创业先锋', '资源整合者', '私域专家', '商业导师', '连续创业者']
    const concepts = [
      '专注私域流量运营5年，帮助100+品牌实现从0到1的增长。',
      '连续创业者，擅长商业模式设计和资源整合。',
      '在Soul分享真实创业故事，希望找到志同道合的合作伙伴。'
    ]
    const wechats = ['soul_partner_1', 'soul_business_2024', 'soul_startup_fan']
    
    const index = Math.floor(Math.random() * nicknames.length)
    const currentType = MATCH_TYPES.find(t => t.id === this.data.selectedType)
    
    return {
      id: `user_${Date.now()}`,
      nickname: nicknames[index],
      avatar: `https://picsum.photos/200/200?random=${Date.now()}`,
      tags: ['创业者', '私域运营', currentType?.label || '创业合伙'],
      matchScore: Math.floor(Math.random() * 20) + 80,
      concept: concepts[index % concepts.length],
      wechat: wechats[index % wechats.length],
      commonInterests: [
        { icon: '📚', text: '都在读《创业实验》' },
        { icon: '💼', text: '对私域运营感兴趣' },
        { icon: '🎯', text: '相似的创业方向' }
      ]
    }
  },

  // 上报匹配行为
  async reportMatch(matchedUser) {
    try {
      await app.request('/api/ckb/match', {
        method: 'POST',
        data: {
          matchType: this.data.selectedType,
          phone: this.data.phoneNumber,
          wechat: this.data.wechatId,
          userId: app.globalData.userInfo?.id || '',
          nickname: app.globalData.userInfo?.nickname || '',
          matchedUser: {
            id: matchedUser.id,
            nickname: matchedUser.nickname,
            matchScore: matchedUser.matchScore
          }
        }
      })
    } catch (e) {
      console.log('上报匹配失败:', e)
    }
  },

  // 取消匹配
  cancelMatch() {
    this.setData({ isMatching: false, matchAttempts: 0 })
  },

  // 重置匹配（返回）
  resetMatch() {
    this.setData({ currentMatch: null })
  },

  // 添加微信好友
  handleAddWechat() {
    if (!this.data.currentMatch) return
    
    wx.setClipboardData({
      data: this.data.currentMatch.wechat,
      success: () => {
        wx.showModal({
          title: '微信号已复制',
          content: `微信号：${this.data.currentMatch.wechat}\n\n请打开微信添加好友，备注"创业合作"即可`,
          showCancel: false,
          confirmText: '知道了'
        })
      }
    })
  },

  // 切换联系方式类型
  switchContactType(e) {
    const type = e.currentTarget.dataset.type
    this.setData({ contactType: type, joinError: '' })
  },

  // 手机号输入
  onPhoneInput(e) {
    this.setData({ 
      phoneNumber: e.detail.value.replace(/\D/g, '').slice(0, 11),
      joinError: ''
    })
  },

  // 微信号输入
  onWechatInput(e) {
    this.setData({ 
      wechatId: e.detail.value,
      joinError: ''
    })
  },

  // 提交加入
  async handleJoinSubmit() {
    const { contactType, phoneNumber, wechatId, joinType, isJoining } = this.data
    
    if (isJoining) return
    
    // 验证
    if (contactType === 'phone') {
      if (!phoneNumber || phoneNumber.length !== 11) {
        this.setData({ joinError: '请输入正确的11位手机号' })
        return
      }
    } else {
      if (!wechatId || wechatId.length < 6) {
        this.setData({ joinError: '请输入正确的微信号（至少6位）' })
        return
      }
    }
    
    this.setData({ isJoining: true, joinError: '' })
    
    try {
      const res = await app.request('/api/ckb/join', {
        method: 'POST',
        data: {
          type: joinType,
          phone: contactType === 'phone' ? phoneNumber : '',
          wechat: contactType === 'wechat' ? wechatId : '',
          userId: app.globalData.userInfo?.id || ''
        }
      })
      
      // 保存联系方式到本地
      if (phoneNumber) wx.setStorageSync('user_phone', phoneNumber)
      if (wechatId) wx.setStorageSync('user_wechat', wechatId)
      
      if (res.success) {
        this.setData({ joinSuccess: true })
        setTimeout(() => {
          this.setData({ showJoinModal: false, joinSuccess: false })
        }, 2000)
      } else {
        // 即使API返回失败，也模拟成功（因为已保存本地）
        this.setData({ joinSuccess: true })
        setTimeout(() => {
          this.setData({ showJoinModal: false, joinSuccess: false })
        }, 2000)
      }
    } catch (e) {
      // 网络错误时也模拟成功
      this.setData({ joinSuccess: true })
      setTimeout(() => {
        this.setData({ showJoinModal: false, joinSuccess: false })
      }, 2000)
    } finally {
      this.setData({ isJoining: false })
    }
  },

  // 关闭加入弹窗
  closeJoinModal() {
    if (this.data.isJoining) return
    this.setData({ showJoinModal: false, joinError: '' })
  },

  // 关闭解锁弹窗
  closeUnlockModal() {
    this.setData({ showUnlockModal: false })
  },

  // 跳转到目录页购买
  goToChapters() {
    this.setData({ showUnlockModal: false })
    wx.switchTab({ url: '/pages/chapters/chapters' })
  },

  // 打开设置
  openSettings() {
    wx.showToast({ title: '设置功能开发中', icon: 'none' })
  },

  // 阻止事件冒泡
  preventBubble() {}
})
