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

/**
 * 会员中心数据 - 整合分销商相关信息
 */
export interface MemberCenterData {
  // 基本信息
  memberLevel: string;       // 会员等级名称
  memberLevelId: number;     // 会员等级ID
  isDealer: boolean;         // 是否是分销商
  // 佣金信息
  commission: number;        // 可提现佣金
  totalCommission: number;   // 累计佣金
  frozenCommission: number;  // 冻结佣金
  // 团队信息
  teamCount: number;         // 团队人数
  activeCount: number;       // 活跃人数
  memberCount: number;       // 会员人数
  // 推广信息
  inviteCode: string;        // 邀请码
  qrCode: string;            // 推广二维码
}

/**
 * 佣金明细记录
 */
export interface CommissionRecord {
  id: number;
  type: number;              // 1=佣金收入, 2=佣金提现, 3=佣金退回
  amount: number;             // 金额
  status: number;            // 状态: 0=待审核, 10=审核通过, 20=待收款, 30=已拒绝, 40=已完成
  remark: string;            // 备注
  createTime: string;        // 创建时间
  updateTime: string;        // 更新时间
}

/**
 * 获取会员中心数据
 */
export async function getMemberCenterData() {
  const res = await request.get<ApiResult<MemberCenterData>>('/shop/shop-dealer-user/info');
  if (res.code === 0 && res.data) {
    return res.data;
  }
  // 如果接口不存在，返回默认数据
  return {
    memberLevel: '普通会员',
    memberLevelId: 0,
    isDealer: false,
    commission: 0,
    totalCommission: 0,
    frozenCommission: 0,
    teamCount: 0,
    activeCount: 0,
    memberCount: 0,
    inviteCode: '',
    qrCode: '',
  };
}

/**
 * 获取佣金明细列表
 */
export async function listCommissionRecord(params?: { page?: number; limit?: number }) {
  const res = await request.get<ApiResult<{
    list: CommissionRecord[];
    total: number;
  }>>('/shop/shop-commission-record/page', params);
  if (res.code === 0 && res.data) {
    return res.data;
  }
  return { list: [], total: 0 };
}

/**
 * 获取分销商资金信息
 */
export async function getDealerCapital() {
  const res = await request.get<ApiResult<{
    balance: number;         // 账户余额
    totalEarning: number;    // 累计收益
    frozenAmount: number;    // 冻结金额
    withdrawAmount: number;  // 已提现金额
  }>>('/shop/shop-dealer-capital/summary');
  if (res.code === 0 && res.data) {
    return res.data;
  }
  return {
    balance: 0,
    totalEarning: 0,
    frozenAmount: 0,
    withdrawAmount: 0,
  };
}

/**
 * 获取分销设置信息（用于会员升级）
 */
export async function getDealerSetting() {
  const res = await request.get<ApiResult<{
    upgradeCondition: string;    // 升级条件描述
    upgradeAmount: number;        // 升级所需消费金额
    commissionRate: number;       // 佣金比例
    selfBuyRate: number;          // 自购返利比例
    levelName: string;            // 等级名称
    levelIcon: string;           // 等级图标
  }[]>>('/shop/shop-commission-role/list');
  if (res.code === 0 && res.data) {
    return res.data;
  }
  return [];
}
