import { defineStore } from 'pinia'
import { ref } from 'vue'
import { vipApi } from '@/api/vip'

export const useVipStore = defineStore('vip', () => {
  // VIP状态
  const isVIP = ref(false)
  const vipType = ref(null) // 0-非会员 1-初级 2-中级 3-高级 4-超级
  const expireTime = ref('')
  const privileges = ref([]) // 会员特权列表
  
  // 从Java后端加载会员状态
  const loadVipStatus = async (userId) => {
    try {
      const res = await vipApi.getStatus(userId)
      isVIP.value = res.data.isEffective
      vipType.value = res.data.type
      expireTime.value = res.data.expireTime
      privileges.value = res.data.privileges || [
        '免广告', 
        '专属内容', 
        '双倍阅读金币'
      ]
      return true
    } catch (err) {
      console.error('VIP状态加载失败', err)
      uni.showToast({ title: '会员信息获取失败', icon: 'none' })
      return false
    }
  }
  
  // 购买VIP（对接Java支付接口）
  const purchaseVip = async (plan) => {
    try {
      uni.showLoading({ title: '支付中...', mask: true })
      
      // 调用Java支付接口
      const payRes = await vipApi.purchase({
        userId: uni.getStorageSync('userId'),
        planId: plan.id,
        amount: plan.price
      })
      
      // 处理支付结果
      if (payRes.data.success) {
        await loadVipStatus() // 刷新状态
        uni.showToast({ title: '开通成功！', icon: 'success' })
        return true
      } else {
        throw new Error(payRes.data.message || '支付失败')
      }
    } catch (err) {
      uni.showToast({ title: err.message, icon: 'none' })
      return false
    } finally {
      uni.hideLoading()
    }
  }
  
  // 会员特权检测（例如广告跳过）
  const hasPrivilege = (privilegeKey) => {
    return isVIP.value && privileges.value.includes(privilegeKey)
  }

  return { 
    isVIP, 
    vipType, 
    expireTime, 
    privileges,
    loadVipStatus,
    purchaseVip,
    hasPrivilege
  }
})