import { http } from "@/utils/http";

export interface OrderQuery extends BasePageQuery {
  /** 订单编号 */
  orderId?: number;
  /**
   * 微信openid
   */
  openid?: string;
  /**
   * 企业微信用户ID或汇邦云用户ID
   */
  userid?: string;
  /** 柜机id */
  cabinetId?: number;
  /** 格口id */
  cellId?: number;
  goodsId?: number;
  /** 
   * 订单状态
   * @remarks 
   * 1-待付款 | 2-已付款 | 3-已发货 | 4-已完成 | 5-已取消
   */
  status?: number;
  /** 
   * 支付状态
   * @remarks 
   * 1-未支付 | 2-已支付 | 3-退款中 | 4-已退款
   */
  payStatus?: number;
  /** 订单开始时间（查询范围） */
  startTime?: string;
  /** 订单结束时间（查询范围） */
  endTime?: string;
  /** 支付时间（精确查询） */
  payTime?: string;
  /** 
 * 支付方式
 * @remarks 
 * wechat-微信支付 | balance-借呗支付
 */
  paymentMethod?: string;
  /**
   * 退款状态
   * @remarks
   * 0-未退款 | 1-已退款
   */
  returnStatus?: number;
}

export interface OrderDTO {
  /** 订单唯一ID */
  orderId: number;
  /** ucid */
  ucid?: string;
  /** openid */
  openid?: string;
  /** 支付网关交易id */
  tradeId?: string;
  /** 手机号码 */
  mobile?: string;
  /** 企业微信用户ID或汇邦云用户ID */
  userid?: string;
  /** 用户姓名 */
  name?: string;
  /** 
   * 是否内部用户
   * @remarks 
   * 0-否 | 1-汇邦云用户 | 2-企业微信用户
   */
  isInternal?: number;
  /** 业务系统订单ID（对接外部系统） */
  bizOrderId?: string;
  /** 订单总金额 */
  totalAmount: number;
  /** 
   * 订单状态
   * @remarks 
   * 1-待付款 | 2-已付款 | 3-已发货 | 4-已完成 | 5-已取消
   */
  status: number;
  /** 
   * 支付状态
   * @remarks 
   * 1-未支付 | 2-已支付 | 3-退款中 | 4-已退款
   */
  payStatus: number;
  /** 
   * 支付方式
   * @remarks 
   * wechat-微信支付 | balance-借呗支付
   */
  paymentMethod?: string;
  /** 支付时间 */
  payTime?: string;
  /**
   * 商品名称
   * @remarks
   * 多个商品名称用逗号分隔
   */
  goodsNames?: string;
  /**
   * 商品封面图
   * @remarks
   * 多个商品封面图用逗号分隔
   */
  coverImgs?: string;
  /**
   * 退还状态
   * @remarks
   * 0-未退还 | 1-已退还
   */
  returnStatus?: number;
}

export const getOrderListApi = (params?: OrderQuery) => {
  return http.request<ResponseData<PageDTO<OrderDTO>>>("get", "/shop/order/list", {
    params: {
      ...params,
      // 处理时间范围参数格式
      startTime: params?.startTime ? params.startTime : undefined,
      endTime: params?.endTime ? params.endTime : undefined,
      payTime: params?.payTime ? params.payTime : undefined
    }
  });
};

/** 批量导出订单 */
export const exportOrderExcelApi = (params: OrderQuery, fileName: string) => {
  return http.download("/shop/order/excel", fileName, {
    params: {
      ...params,
      // 处理时间范围参数格式
      startTime: params?.startTime ? params.startTime : undefined,
      endTime: params?.endTime ? params.endTime : undefined,
      payTime: params?.payTime ? params.payTime : undefined
    }
  });
};