import request from '@/utils/request'
import type { ApiResult } from '@/api/auth'

/** 会员商品项类型（后端返回） */
export interface MemberProduct {
  id: number
  /** 商品名称 */
  productName: string
  /** 标签，如"限时优惠"、"最划算" */
  tag: string
  /** 主推标识 0=否 1=是 */
  isFeatured: number
  /** 购买按钮文字 */
  buyButtonText: string
  /** 实付价格（分） */
  price: number
  /** 划线价（分） */
  originalPrice: number
  /** 折算月价（分） */
  monthlyPrice: number
  /** 有效天数 */
  durationDays: number
  /** 排序，越小越靠前 */
  sortOrder: number
  /** 状态 0=下架 1=上架 */
  status: number
  /** 创建时间 */
  createTime: { seconds: number; nanos: number }
  /** 更新时间 */
  updateTime: { seconds: number; nanos: number }
  /** 逻辑删除 0=正常 非0=已删除 */
  isDelete: number
}

/** 会员状态返回类型 */
export interface MemberStatus {
  /** 是否是会员 */
  isMember: boolean
  /** 会员类型 1=正式 2=试用 */
  memberType?: number
  /** 到期时间（毫秒时间戳） */
  expireTime?: number
  /** 首次开通时间（毫秒时间戳） */
  createTime?: number
  /** 最近续费时间（毫秒时间戳） */
  updateTime?: number
}

/**
 * 查询会员状态
 * GET /member/status
 */
export function fetchMemberStatus() {
  return request.get<any, ApiResult<MemberStatus>>('/member/status')
}

/**
 * 查询会员商品列表
 * GET /member/product/list
 */
export function fetchMemberProductList() {
  return request.get<any, ApiResult<MemberProduct[]>>('/member/product/list')
}

/** 创建订单请求参数 */
export interface CreateOrderParams {
  /** 商品ID */
  productId: string
  /** 支付渠道 1=微信 2=支付宝 */
  payChannel: number
}

/** 创建订单返回数据 */
export interface CreateOrderResult {
  /** 订单ID，用于轮询状态 */
  orderId: string
  /** 支付渠道 */
  payChannel: number
  /** 支付数据（支付宝表单HTML / 微信二维码链接） */
  payData: string
}

/**
 * 创建会员订单
 * POST /member/product/createOrder
 */
export function createMemberOrder(data: CreateOrderParams) {
  return request.post<any, ApiResult<CreateOrderResult>>('/member/product/createOrder', data)
}

/** 订单详情返回数据 */
export interface OrderDetailResult {
  /** 订单ID */
  orderId: string
  /** 订单编号 */
  orderNo: string
  /** 商品名称 */
  productName: string
  /** 实付金额（分） */
  payAmount: number
  /** 订单状态 0=待支付 1=已支付 2=已退款 3=已关闭 */
  status: number
  /** 支付渠道 1=微信 2=支付宝 */
  payChannel: number
  /** 支付时间 */
  payTime: { seconds: number; nanos: number }
  /** 下单时间 */
  createTime: { seconds: number; nanos: number }
}

/**
 * 查询订单详情
 * GET /member/product/orderDetail
 */
export function fetchOrderDetail(orderId: string) {
  return request.get<any, ApiResult<OrderDetailResult>>('/member/product/orderDetail', {
    params: { orderId },
  })
}

// ==================== 邀请统计相关 ====================

/** 用户邀请统计DTO */
export interface InviteStatsDto {
  /** 累计邀请人数 */
  inviteCount?: number
  /** 当前周期已邀请人数 */
  milestoneProgress?: number
  /** 累计获得会员天数 */
  rewardDays?: number
  /** 里程碑目标人数 */
  milestoneTarget?: number
  /** 里程碑奖励天数 */
  milestoneDays?: number
}

/**
 * 获取用户邀请统计
 * GET /user/manage/inviteStats
 */
export function fetchInviteStats() {
  return request.get<any, ApiResult<InviteStatsDto>>('/user/manage/inviteStats')
}
