import {
  getGroupMembers,
  getPoolList,
  type TrafficPoolMember,
  type PageResult,
  SOURCE_TYPE_TEXT,
} from "../api";

// 用户列表项（兼容前端页面使用的字段）
export interface UserListItem {
  id: number;
  identifier: string;
  companyId: number;
  nickname: string | null;
  avatar: string | null;
  gender: number;
  phone: string | null;
  wechatId: string | null; // 微信号（用于显示）
  fromd: string; // 来源（中文）
  packages: string[]; // 分组名称
  createTime: string; // 创建时间
  // 其他字段
  alias: string | null;
  tags: string[];
  region: string;
  lifecycle: number;
  intentionLevel: number;
  R: number;
  F: number;
  M: number;
  RFM: number;
  money: number;
  msgCount: number;
}

export interface UserListResult {
  list: UserListItem[];
  total: number;
}

/**
 * 获取流量池用户列表（V2版本）
 * 支持按分组ID或全量查询
 */
export async function fetchTrafficPoolList(params: {
  page?: number;
  pageSize?: number;
  keyword?: string;
  packageId?: string; // 分组ID，兼容旧版参数名
  groupId?: number; // 新版参数名
}): Promise<UserListResult> {
  const page = params.page || 1;
  const pageSize = params.pageSize || 10;
  const keyword = params.keyword || "";
  const groupId = params.groupId || (params.packageId ? parseInt(params.packageId) : 0);

  let result: PageResult<TrafficPoolMember>;

  if (groupId && groupId > 0) {
    // 按分组查询
    result = await getGroupMembers({
      groupId,
      page,
      pageSize,
      keyword,
    });
  } else {
    // 全量查询
    result = await getPoolList({
      page,
      pageSize,
      keyword,
    });
  }

  // 转换为前端页面使用的格式
  const list: UserListItem[] = result.list.map((item: any) => ({
    id: item.id,
    identifier: item.identifier,
    companyId: item.companyId,
    nickname: item.nickname || null,
    avatar: item.avatar || null,
    gender: item.gender || 0,
    phone: item.phone || item.mobile || null,
    // 微信号：优先显示 wechatAlias，如果没有则显示 wechatId
    wechatId: item.wechatAlias || item.wechatId || null,
    // 来源：将数字转换为中文
    fromd: SOURCE_TYPE_TEXT[item.firstSourceType] || "未知来源",
    // 分组：暂时为空，后续可扩展
    packages: [],
    // 创建时间
    createTime: item.createTime || "",
    // 其他字段
    alias: item.wechatAlias || null,
    tags: item.tags?.map((t: any) => t.tagName) || [],
    region: item.region || "",
    lifecycle: item.lifecycle || 1,
    intentionLevel: item.intentionLevel || 0,
    R: item.rfmScore?.R || 0,
    F: item.rfmScore?.F || 0,
    M: item.rfmScore?.M || 0,
    RFM: item.rfmScore?.total || 0,
    money: item.totalOrderAmount || 0,
    msgCount: item.totalMsgCount || 0,
  }));

  return {
    list,
    total: result.total,
  };
}

/**
 * 获取用户详情
 */
export { getPoolDetail as fetchUserDetail } from "../api";

/**
 * 更新用户信息
 */
export { updatePool as updateUser } from "../api";

/**
 * 获取用户标签
 */
export { getPoolTags as fetchUserTags } from "../api";

/**
 * 添加用户标签
 */
export { addTag } from "../api";

/**
 * 移除用户标签
 */
export { removeTag } from "../api";
