/**
 * 会员模块接口
 * 包含: 会员状态查询、会员信息、续费等
 */
import request from '../utils/request'
import type { MemberType } from './types'

/** 会员信息 */
export interface MemberInfo {
  /** 会员ID */
  memberId: string
  /** 会员类型 */
  memberType: MemberType
  /** 会员等级名称(如"普通会员"/"高级会员") */
  memberLevel: string
  /** 用户/单位名称 */
  name: string
  /** 手机号 */
  phone: string
  /** 是否已支付 */
  isPaid: boolean
  /** 是否已过期 */
  isExpired: boolean
  /** 开通日期 */
  startDate: string
  /** 到期日期 */
  expireDate: string
  /** 有效期描述 (如 "1年") */
  validPeriod: string
  /** 会员费金额 */
  amount: number
}

/** 会员状态(用于登录后判断跳转) */
export interface MemberStatus {
  isPaid: boolean
  isExpired: boolean
  memberId: string
  memberType: MemberType
  memberLevel: string
  amount: number
  validPeriod: string
  expireDate: string
}

/** 续费参数 */
export interface RenewParams {
  memberId: string
  /** 续费时长(月) */
  duration?: number
}

/** 发票抬头提交参数 (接口体) */
export interface InvoiceTitleDTO {
  /** 发票抬头 (个人姓名 或 单位全称) */
  invoiceTitle?: string
  /** 纳税人识别号 (单位发票填写) */
  invoiceTaxNo?: string
}

/** 获取当前登录会员的信息 */
export const getCurrentMember = () => request.get<MemberInfo>('/member/current')

/** 查询会员状态 */
export const getMemberStatus = () => request.get<MemberStatus>('/member/status')

/** 通过会员ID查询会员信息 */
export const getMemberById = (memberId: string) =>
  request.get<MemberInfo>(`/member/${memberId}`)

/** 申请续费,返回新订单ID */
export const renewMember = (data: RenewParams) =>
  request.post<{ orderId: string; amount: number }>('/member/renew', data)

/**
 * 提交会员发票抬头
 * @url PUT /api/v1/wechat/official-account/members/{memberId}/invoice-title
 * @param memberId 路径参数(后端命名 memberId,实际传入登录接口返回的 userId)
 * @param data { invoiceTitle, invoiceTaxNo }
 * @returns boolean (data 字段,true 表示提交成功)
 */
export const submitInvoiceTitle = (
  memberId: string,
  data: InvoiceTitleDTO,
) => request.put<boolean>(`/members/${memberId}/invoice-title`, data)
