/**
 * 订单管理相关类型定义
 */

// 支付状态枚举
export enum PaymentStatus {
  PENDING = 1, // 待支付
  PAID = 2, // 已支付
  CANCELLED = 3, // 已取消
  REFUNDED = 4 // 已退款
}

// 订单类型
export type OrderType = 'single_card' | 'device'

// 买家类型
export type BuyerType = 'personal' | 'agent'

// 订单支付方式
export type OrderPaymentMethod = 'wallet' | 'wechat' | 'alipay' | 'offline'

// 订单操作者类型
export type OrderOperatorType = 'platform' | 'agent' | 'enterprise' | 'personal_customer'

// 订单佣金流程状态
export enum OrderCommissionStatus {
  PENDING = 1, // 待计算
  COMPLETED = 2, // 已完成
  MANUAL_REVIEW = 3 // 待人工处理
}

// 订单佣金业务结果
export enum OrderCommissionResult {
  UNKNOWN = 0, // 未知
  HAS_COMMISSION = 1, // 有佣金
  NO_COMMISSION = 2, // 无佣金
  LINK_EXCEPTION = 3 // 链路异常
}

// 订单明细
export interface OrderItem {
  id: number
  package_id: number
  package_name: string
  quantity: number
  unit_price: number // 单价(分)
  amount: number // 小计金额(分)
  package_type?: string // 套餐类型快照：formal（正式套餐）或 addon（加油包）
}

// 订单响应
export interface Order {
  id: number
  order_no: string
  order_type: OrderType
  buyer_id: number
  buyer_type: BuyerType
  buyer_phone?: string // 买家手机号快照（个人客户下单时填充，代理商订单为空）
  buyer_nickname?: string // 买家微信昵称快照（个人客户下单时填充，代理商订单为空）
  payment_status: PaymentStatus
  payment_status_text: string
  payment_method: OrderPaymentMethod
  total_amount: number // 订单总金额(分)
  actual_paid_amount?: number // 实付金额(分)
  paid_at: string | null
  commission_status: OrderCommissionStatus // 佣金流程状态
  commission_status_name?: string // 佣金流程状态名称（中文）
  commission_result?: OrderCommissionResult // 佣金业务结果
  commission_result_name?: string // 佣金业务结果名称（中文）
  commission_config_version: number
  device_id: number | null
  iot_card_id: number | null
  asset_identifier?: string // 资产标识符快照（ICCID 或 VirtualNo）
  asset_type?: string // 资产类型：single_card 或 device
  purchase_role?: string // 订单渠道
  purchase_remark?: string // 购买备注
  is_purchased_by_parent?: boolean // 是否由上级代购
  is_expired?: boolean // 是否已过期
  expires_at?: string | null // 订单超时时间
  operator_id?: number | null // 真实操作者ID
  operator_type?: OrderOperatorType // 真实操作者类型
  operator_name?: string // 真实操作者名称
  seller_shop_id?: number | null // 销售店铺ID
  seller_shop_name?: string // 销售店铺名称
  items: OrderItem[] | null
  payment_voucher_key?: string[] | string // 支付凭证附件列表；历史数据可能为单字符串或逗号字符串
  created_at: string
  updated_at: string
}

// 订单查询参数
export interface OrderQueryParams {
  page?: number
  page_size?: number
  payment_status?: PaymentStatus
  payment_method?: OrderPaymentMethod
  order_type?: OrderType
  order_no?: string
  identifier?: string // 按资产标识符过滤（ICCID 或 VirtualNo）
  purchase_role?: string // 订单渠道
  buyer_phone?: string // 按买家手机号精确过滤
  start_time?: string
  end_time?: string
  is_expired?: boolean // 是否已过期
  seller_shop_id?: number // 所属代理商ID（销售来源店铺ID）
  dateRange?: string[] | any // For date range picker in UI
}

// 订单列表响应
export interface OrderListResponse {
  items: Order[]
  page: number
  page_size: number
  total: number
  total_pages: number
}

// 创建订单请求
export interface CreateOrderRequest {
  order_type?: OrderType // 订单类型
  iot_card_id?: number | null // IoT卡ID
  device_id?: number | null // 设备ID
  identifier?: string // 资产标识符（ICCID 或 VirtualNo）
  package_ids: number[] // 套餐ID列表（前端限制单选,后端支持1-10个）
  payment_method: OrderPaymentMethod // 支付方式
  payment_voucher_key?: string[] // 线下支付凭证附件列表（仅 offline 必填）
}

// 创建订单响应 (返回订单详情)
export type CreateOrderResponse = Order
