import type { orderState } from '@/utils/constants'
import type { addressItem } from './address'
import type { PageParams } from './global'
import type { deliveryAddressItem, deliveryCompanyItem } from './delivery'
import type { couponListItem } from './coupon'

/** 获取预付订单 返回信息 */
export type orderPreResult = {
  /** 商品集合 [ 商品信息 ] */
  goods: OrderPreGoods[]
  /** 结算信息 */
  summary: {
    /** 商品总价 */
    total_price: number
    /** 邮费 */
    freight: number
    /* 实付金额 */
    pay_price: string
    /** 优惠券抵扣金额 */
    coupon_discount: string
  }
  /** 用户地址列表 [ 地址信息 ] */
  user_address: addressItem[]
  /** 用户优惠券列表 [ 优惠券信息 ] */
  coupon_list: couponListItem[]
}

type preGoodsItem = {
  id: number
  name: string
  status: number
  delivery_template_id: number
}

/** 商品信息 */
export type orderPreGoods = {
  goods: preGoodsItem
  /** 属性文字，例如“颜色:瓷白色 尺寸：8寸” */
  spec_text: string
  /** 数量 */
  num: number
  /** id */
  id: number
  /** 实付单价 */
  pay_price: string
  /** 图片 */
  image: string
  /** 原单价 */
  origin_price: string
  /** SKUID */
  sku_id: string
  /** 实付价格小计 */
  pay_price: string
  /** 小计总价 */
  total_price: string
}

/** 提交订单 请求参数 */
export type orderCreateParams = {
  /** 订单类型 */
  type: number
  /** 所选地址Id */
  address_id: string | number
  /** 订单备注 */
  remark: string
  /** 商品集合[ 商品信息 ] */
  goods: {
    /** skuId */
    sku_id: string
    /** 数量 */
    num: number
  }[]
  /** 优惠券id */
  coupon_id: string | number
}

/** 提交订单 返回信息 */
export type orderCreateResult = {
  /** 订单Id */
  id: number
}

export type discountDataItem = {
  coupon_discount: string
}

/** 订单详情 返回信息 */
export type orderResult = {
  /* 订单ID */
  id: number
  /** 订单编号 */
  order_no: string
  /** 订单状态，1为待付款、2为待发货、3为待收货、4为待评价、5为已完成、6为已取消 */
  status: orderState
  /** 倒计时--剩余的秒数 -1 表示已经超时，正数表示倒计时未结束 */
  countdown: number
  /** 商品集合 [ 商品信息 ] */
  detail: orderSkuItem[]
  /** 商品总价 */
  total_price: number
  /** 运费 */
  freight: string
  /** 应付金额 */
  pay_price: string
  /** 下单时间 */
  create_time: string
  /** 支付时间 */
  pay_time: string
  /** 收货地址 */
  address: {
    /** 收货人姓名 */
    name: string
    /** 联系方式 */
    phone: string
    /** 完整地址 */
    full_address: string
  }
  /** 物流信息 */
  delivery: {
    /** 物流公司 */
    delivery_company: deliveryCompanyItem
    /** 物流单号 */
    delivery_no: string
  }[]
  /* 优惠信息 */
  discount_data: discountDataItem
  /* 买家备注 */
  remark: string
  /* 支付信息 */
  payment_trade: paymentTradeInfo
}

/** 商品信息 */
export type orderSkuItem = {
  /* 商品详情ID */
  id: number
  /** 商品 id */
  goods_id: number
  /** 商品名称 */
  goods_name: string
  /** 商品属性文字 */
  spec_text: string
  /** 数量 */
  num: number
  /** 购买时单价 */
  price: number
  /** 图片地址 */
  image: string
  /* 评价时间 */
  evaluate_time: int
  /** 退款信息 */
  refund: orderRefundDetailResult
  /* 是否可以申请售后 */
  apply_refund: boolean
}

/** 订单列表参数 */
export type orderListParams = PageParams & { status: string }

/** 订单列表 */
export type orderListResult = {
  id: number
  pay_price: string
  status: number
  total_num
  detail: orderItem[]
  create_time: string
  countdown: number
  refund_status: number
  payment_trade: paymentTradeInfo
}

export type orderItem = {
  id: number
  order_id: number
  goods_id: number
  goods_name: string
  price: string
  num: string
  image: string
  spec: string
  status: number
}

export type orderPreParams = {
  // type: number
  sku_id: string
  num: number | string
  address_id?: string | number
  coupon_id?: string | number
}

/**
 * 订单评论参数
 */
export type orderEvaluateParams = {
  order_id?: string
  detail_id?: string
  score: number
  content: string
  images: string
}

/**
 * 订单评论返回结果
 */
export type orderEvaluateResult = {
  id: number
}

/**
 * 订单评价项
 */
export type orderEvaluateItem = {
  goods_id: string
  score: number
  goods_spec: string
  content: string
  user_name: string
  user_avatar: string
  images: string[]
}

export type orderEvaluateListParams = {
  page: number
  page_size: number
  goods_id: string
  type?: string | number
}

export type orderEvaluateListResult = {
  id: number
  order_id: string
  order_detail_id: string
  goods_id: string
  goods_name: string
  goods_spec: string
  score: number
  content: string
  images: string[]
  user_name: string
  user_avatar: string
  create_time: string
}

export type orderRefundRequest = {
  id: number
  detail_id: number
  refund_type: number
  refund_num: number
  apply_money: number
  remark?: string
  remark_images?: string
}

// 售后列表项
export type orderRefundListResult = {
  id: number
  status_text: string
  apply_money: string
  create_time: string
  refund_num: number
  detail: orderItem
}

export type deliveryItem = {
  delivery_company: string
  delivery_company_code: string
  delivery_no: string
}

export type orderRefundDetailResult = orderRefundListResult & {
  refund_address: deliveryAddressItem
  audit_status: number
  status: number
  receive_status: number
  refund_type: number
  user_ship_status: number
  refund_money: string
  refund_freight: string
  remark: string
  remark_images: string[]
  refuse_reason: string
  user_ship_delivery: deliveryItem
  exchange_delivery: deliveryItem
}

export type orderDelivery = {
  delivery_company: string
  delivery_code: string
  delivery_tracks: { time: string; context: string }[]
}

/* 物流详情类型 */
export type orderDeliveryResult = {
  id: number
  delivery_company: deliveryCompanyItem
  delivery_code: string
  delivery_no: string
  delivery_tracks: { time: string; context: string }[]
  order_address: {
    order_id: number
    name: string
    phone: string
    full_address: string
  }
  detail: {
    order_detail: {
      id: number
      image: string
    }
    delivery_num: number
  }[]
}

export type paymentTradeInfo = {
  /* 第三方交易单号 */
  out_trade_no: string
  /* 第三方交易流水号 */
  trade_no: string
  /* 订单来源 */
  source: string
  /* 商户号 */
  wxpay_mch_id: string
}
