import type { ShopOrder, ShopOrderGoods } from '@/api/shop/shopOrder/model'

export type { ShopOrder, ShopOrderGoods, OrderCreateRequest } from '@/api/shop/shopOrder/model'

/**
 * 订单终态（orderStatus 字段）
 * 0 = 正常订单的初始值（非终态），在详情/卡片页应根据 payStatus + deliveryStatus 联合判断
 * 1 = 已完成（终态）
 * 2 = 已取消（终态）
 * 3 = 取消中
 * 4 = 退款申请中（用户申请）
 * 5 = 退款被拒绝
 * 6 = 退款成功（终态）
 * 7 = 客户端申请退款
 */
export enum OrderStatus {
  Active = 0,        // 正常订单初始值（已付款待发货阶段，非终态）
  Completed = 1,      // 已完成
  Cancelled = 2,      // 已取消
  Cancelling = 3,     // 取消中
  RefundApply = 4,    // 退款申请中
  RefundRejected = 5, // 退款被拒绝
  RefundSuccess = 6,  // 退款成功
  ClientRefundApply = 7, // 客户端申请退款
}

/** orderStatus 状态文本映射（仅作原始值展示，不建议直接用于 UI） */
export const OrderStatusText: Record<number, string> = {
  [OrderStatus.Active]: '已付款待发货',
  [OrderStatus.Completed]: '已完成',
  [OrderStatus.Cancelled]: '已取消',
  [OrderStatus.Cancelling]: '取消中',
  [OrderStatus.RefundApply]: '退款申请中',
  [OrderStatus.RefundRejected]: '退款被拒绝',
  [OrderStatus.RefundSuccess]: '已退款',
  [OrderStatus.ClientRefundApply]: '申请退款',
}

/** orderStatus 状态颜色映射 */
export const OrderStatusColor: Record<number, string> = {
  [OrderStatus.Active]: '#4b9cf5',   // 待发货
  [OrderStatus.Completed]: '#0e932e',
  [OrderStatus.Cancelled]: '#999',
  [OrderStatus.Cancelling]: '#ff7d00',
  [OrderStatus.RefundApply]: '#ee0a24',
  [OrderStatus.RefundRejected]: '#ee0a24',
  [OrderStatus.RefundSuccess]: '#0e932e',
  [OrderStatus.ClientRefundApply]: '#ee0a24',
}

/**
 * 列表页 Tab 筛选状态（对应后端 statusFilter 字段）
 * -1全部 0待支付 1待发货 2待核销 3待收货 4待评价 5已完成 6已退款 7已删除
 */
export enum OrderListStatus {
  All = -1,          // 全部
  Unpaid = 0,        // 待支付（payStatus=0）
  Unshipped = 1,      // 待发货（payStatus=1, deliveryStatus=10）
  Unverify = 2,       // 待核销
  Shipped = 3,        // 待收货（payStatus=1, deliveryStatus=20）
  Unreview = 4,       // 待评价
  Completed = 5,      // 已完成
  Refunded = 6,       // 已退款
  Deleted = 7,        // 已删除
}

/** 列表 Tab 文案 */
export const OrderListTabText: Record<number, string> = {
  [OrderListStatus.All]: '全部',
  [OrderListStatus.Unpaid]: '待付款',
  [OrderListStatus.Unshipped]: '待发货',
  [OrderListStatus.Shipped]: '待收货',
  [OrderListStatus.Completed]: '已完成',
}

/** 退款申请参数 */
export interface RefundApply {
  orderId: number
  reason: string
  money?: string
  description?: string
  images?: string[]
}
