/**
 * 佣金模块 API (代理端)
 */
import { get } from '@/utils/request'

/**
 * 资金概览 (代理端主页用)
 * GET /api/admin/shops/fund-summary
 */
export interface FundSummary {
  shop_id: number
  shop_name: string
  shop_code: string
  username: string
  phone: string
  main_balance: number // 预充值钱包余额（分）
  main_frozen_balance: number // 预充值冻结余额（分）
  total_commission: number // 累计佣金（分）
  available_commission: number // 可提现佣金（分）
  frozen_commission: number // 冻结佣金（分）
  unwithdraw_commission: number // 未提现佣金（分）
  withdrawing_commission: number // 提现中金额（分）
  withdrawn_commission: number // 已提现佣金（分）
  created_at: string
}

/**
 * 佣金概览 (旧接口，仅保留类型定义)
 * @deprecated 使用 FundSummary 代替
 */
export interface CommissionSummary {
  shop_id: number
  shop_name: string
  total_commission: number // 累计佣金（分）
  available_commission: number // 可提现佣金（分）
  frozen_commission: number // 冻结佣金（分）
  unwithdraw_commission: number // 未提现佣金（分）
  withdrawing_commission: number // 提现中金额（分）
  withdrawn_commission: number // 已提现佣金（分）
}

/**
 * 佣金记录
 */
export interface CommissionRecord {
  id: number
  amount: number // 佣金金额（分）
  commission_source: string // 佣金来源: cost_diff | one_time | tier_bonus
  status: number // 状态: 1=已入账, 2=已失效
  status_name: string
  order_id: number
  shop_id: number
  created_at: string
}

/**
 * 佣金统计
 */
export interface CommissionStats {
  total_amount: number // 总佣金（分）
  total_count: number // 总笔数
  cost_diff_amount: number // 成本价差收入（分）
  cost_diff_count: number // 成本价差笔数
  cost_diff_percent: number // 成本价差占比（千分比）
  one_time_amount: number // 一次性佣金（分）
  one_time_count: number // 一次性佣金笔数
  one_time_percent: number // 一次性佣金占比（千分比）
}

/**
 * 每日佣金统计
 */
export interface DailyCommissionStats {
  date: string // 日期 YYYY-MM-DD
  total_amount: number // 当日佣金（分）
  total_count: number // 当日笔数
}

/**
 * 佣金记录查询参数
 */
export interface CommissionRecordsParams {
  page?: number
  page_size?: number
  commission_source?: string // 佣金来源
  iccid?: string // ICCID（模糊查询）
  virtual_no?: string // 设备虚拟号（模糊查询）
  order_no?: string // 订单号（模糊查询）
}

/**
 * 佣金统计查询参数 (新接口，shop_id 在路径中)
 */
export interface CommissionStatsParams {
  start_time?: string
  end_time?: string
}

/**
 * 每日佣金统计查询参数 (新接口，shop_id 在路径中)
 */
export interface DailyCommissionStatsParams {
  start_date?: string // YYYY-MM-DD
  end_date?: string // YYYY-MM-DD
  days?: number // 查询天数（默认30，最大365）
}

/**
 * 预充值钱包交易记录
 */
export interface WalletTransaction {
  id: number
  transaction_type: string // 交易类型: recharge | deduct | refund
  transaction_subtype: string
  amount: number // 金额（分），正数为入账，负数为扣款
  balance_before: number // 余额变动前（分）
  balance_after: number // 余额变动后（分）
  remark?: string // 备注
  created_at: string // 创建时间
}

/**
 * 预充值钱包交易列表参数
 */
export interface WalletTransactionsParams {
  page?: number
  page_size?: number
  transaction_type?: string // 交易类型: recharge | deduct | refund
  start_date?: string // YYYY-MM-DD
  end_date?: string // YYYY-MM-DD
}

/**
 * 列表响应
 */
export interface ListResponse<T> {
  items: T[]
  page: number
  size: number
  total: number
}

export interface FundSummaryParams {
  username?: string
}

/**
 * 获取资金概览 (代理端主页用)
 * GET /api/admin/shops/fund-summary
 */
export function getFundSummary(params?: FundSummaryParams) {
  return get<{ items: FundSummary[] }>(
    '/api/admin/shops/fund-summary',
    params?.username ? { params } : undefined
  ).then(res => res.items?.[0])
}

/**
 * 获取我的佣金概览
 * @deprecated 使用 getFundSummary 代替
 * GET /api/admin/shops/{shop_id}/commission-summary
 */
export function getCommissionSummary() {
  return get<CommissionSummary>('/api/admin/shops/1/commission-summary')
}

/**
 * 获取我的佣金明细
 * GET /api/admin/shops/{shop_id}/commission-records
 * @param shopId 店铺ID
 */
export function getCommissionRecords(shopId: number, params?: CommissionRecordsParams) {
  return get<ListResponse<CommissionRecord>>(`/api/admin/shops/${shopId}/commission-records`, { params })
}

/**
 * 获取我的佣金统计
 * GET /api/admin/shops/{shop_id}/commission-stats
 * @param shopId 店铺ID
 * @param params 查询参数
 */
export function getCommissionStats(shopId: number, params?: CommissionStatsParams) {
  return get<CommissionStats>(`/api/admin/shops/${shopId}/commission-stats`, { params })
}

/**
 * 获取我的每日佣金统计
 * GET /api/admin/shops/{shop_id}/commission-daily-stats
 * @param shopId 店铺ID
 * @param params 查询参数
 */
export function getCommissionDailyStats(shopId: number, params?: DailyCommissionStatsParams) {
  return get<DailyCommissionStats[]>(`/api/admin/shops/${shopId}/commission-daily-stats`, { params })
}

/**
 * 获取预充值钱包流水
 * GET /api/admin/shops/{shop_id}/main-wallet/transactions
 * @param shopId 店铺ID
 * @param params 查询参数
 */
export function getMainWalletTransactions(shopId: number, params?: WalletTransactionsParams) {
  return get<{
    items: WalletTransaction[]
    total: number
    page: number
    size: number
  }>(`/api/admin/shops/${shopId}/main-wallet/transactions`, { params })
}
