/**
 * [2026-02-19] 树转让管理服务（纯新增）
 *
 * 管理员端的树转让 API 调用服务。
 * 提供转让订单列表/详情/统计/强制取消等功能。
 *
 * === API 端点 ===
 * 所有端点走 transfer-service 的 AdminController：
 * - GET    /v1/admin/transfers             转让订单列表
 * - GET    /v1/admin/transfers/:no         转让订单详情
 * - GET    /v1/admin/transfers/stats       转让统计汇总
 * - POST   /v1/admin/transfers/:no/force-cancel  强制取消
 *
 * === 回滚方式 ===
 * 删除此文件 + endpoints.ts TRANSFERS 段 + hooks + 页面文件 + Sidebar 入口
 */

import apiClient from '@/infrastructure/api/client';
import { API_ENDPOINTS } from '@/infrastructure/api/endpoints';

// ============================================
// 类型定义
// ============================================

/** 转让订单状态（13 种） */
export type TransferOrderStatus =
  | 'PENDING'
  | 'SELLER_CONFIRMED'
  | 'PAYMENT_FROZEN'
  | 'TREES_LOCKED'
  | 'OWNERSHIP_TRANSFERRED'
  | 'CONTRIBUTION_ADJUSTED'
  | 'STATS_UPDATED'
  | 'PAYMENT_SETTLED'
  | 'COMPLETED'
  | 'CANCELLED'
  | 'FAILED'
  | 'ROLLING_BACK'
  | 'ROLLED_BACK';

/** 转让统计汇总 */
export interface TransferStats {
  totalOrders: number;
  pendingOrders: number;
  completedOrders: number;
  cancelledOrders: number;
  failedOrders: number;
  totalTreesTransferred: number;
  totalVolume: number;         // 总交易额 USDT
  totalFees: number;           // 总手续费 USDT
}

/** 转让订单（管理员视角列表） */
export interface TransferOrder {
  id: string;
  transferOrderNo: string;
  sellerAccountSequence: string;
  buyerAccountSequence: string;
  treeCount: number;
  pricePerTree: string;
  totalPrice: string;
  platformFeeRate: string;
  platformFeeAmount: string;
  sellerReceiveAmount: string;
  status: TransferOrderStatus;
  createdAt: string;
  updatedAt: string;
  completedAt: string | null;
  cancelledAt: string | null;
  cancelReason: string | null;
}

/** 转让状态变更日志 */
export interface TransferStatusLog {
  id: string;
  fromStatus: string;
  toStatus: string;
  reason: string | null;
  createdAt: string;
}

/** 转让订单详情（含状态日志） */
export interface TransferOrderDetail extends TransferOrder {
  statusLogs: TransferStatusLog[];
  plantingOrderNos: string[];
  freezeId: string | null;
}

/** 分页列表请求参数 */
export interface TransferListParams {
  page?: number;
  pageSize?: number;
  status?: TransferOrderStatus | '';
  keyword?: string;
}

/** 分页列表响应 */
export interface PaginatedResponse<T> {
  items: T[];
  total: number;
  page: number;
  pageSize: number;
}

// ============================================
// 转让管理服务
// ============================================

export const transferService = {
  /**
   * 获取转让订单列表
   */
  async getList(params: TransferListParams = {}): Promise<PaginatedResponse<TransferOrder>> {
    return apiClient.get(API_ENDPOINTS.TRANSFERS.LIST, { params });
  },

  /**
   * 获取转让订单详情（含状态变更日志）
   */
  async getDetail(transferOrderNo: string): Promise<TransferOrderDetail> {
    return apiClient.get(API_ENDPOINTS.TRANSFERS.DETAIL(transferOrderNo));
  },

  /**
   * 获取转让统计汇总
   */
  async getStats(): Promise<TransferStats> {
    return apiClient.get(API_ENDPOINTS.TRANSFERS.STATS);
  },

  /**
   * 强制取消转让订单（管理员权限）
   */
  async forceCancel(transferOrderNo: string, reason: string): Promise<{ success: boolean }> {
    return apiClient.post(API_ENDPOINTS.TRANSFERS.FORCE_CANCEL(transferOrderNo), { reason });
  },
};

export default transferService;
