import request from "@/utils/request";
import { Order_BaseUrl } from "@/api/config";
const baseURL = Order_BaseUrl + "/admin/order";
const OrderApi = {
  getList(params: getListRequest) {
    return request<any, getListResponse>({
      url: `${baseURL}`,
      method: "get",
      params
    });
  },
  add(data: addRequest) {
    return request<any, OrderInfo>({
      url: `${baseURL}/createOrder`,
      method: "post",
      data
    });
  },
  //订单详情
  get(params: any) {
    return request<any, OrderInfo>({
      url: `${baseURL}/getOrderById`,
      method: "get",
      params
    });
  },
  // 历史订单(多次下单使用)
  getHistoryList(params: getHistoryListRequest) {
    return request<any>({
      url: `${baseURL}/historyOrder`,
      method: "get",
      params: params,
    });
  },
  // 订单退款 只传订单id
  refundOrder(data: refundOrderRequest) {
    return request<any>({
      url: `${baseURL}/refundOrder`,
      method: "post",
      data
    });
  },
  //转桌
  mergeOrder(data: mergeOrderRequest) {
    return request<any>({
      url: `${baseURL}/mergeOrder`,
      method: "post",
      data
    });
  },
  //取消订单
  cancelOrder(data: any) {
    return request<any>({
      url: `${baseURL}/cancelOrder`,
      method: "post",
      data
    });
  },
  //取消某一次 下单
  rmPlaceOrder(data: any) {
    return request<any>({
      url: `${baseURL}/rmPlaceOrder`,
      method: "post",
      data
    });
  },
  // 订单打印
  printOrder(data: any) {
    return request<any>({
      url: `${baseURL}/print`,
      method: "post",
      data
    });
  },
  // 查询财务报表
  financeSts(params: any) {
    return request<any>({
      url: `${Order_BaseUrl}/admin/finance/sts`,
      method: "get",
      params
    });
  },
  // 导出财务报表
  financeExport(params: any) {
    return request<any>({
      url: `${Order_BaseUrl}/admin/finance/export`,
      method: "get",
      params,
      responseType: 'blob'
    });
  },
  // 打印经营日报
  printDayReport(params: any) {
    return request<any>({
      url: `${Order_BaseUrl}/admin/finance/printDayReport`,
      method: "get",
      params
    });
  },
  // 打印日结单
  printDaySettle(params: any) {
    return request<any>({
      url: `${Order_BaseUrl}/admin/finance/printDaySettle`,
      method: "get",
      params
    });
  },
};

export default OrderApi;
/**
 * MergeOrderDTO
 */
export interface mergeOrderRequest {
  /**
   * 转台详情Id
   */
  detailIds?: number[];
  sourceOrderId: number;
  /**
   * 目标订单Id
   */
  targetOrderId?: number;
  /**
   * 目标台桌
   */
  targetTableCode?: string;
  [property: string]: any;
}

export interface refundOrderRequest {
  /**
   * 现金退款，是否
   */
  cash?: boolean;
  /**
   * 自定义退款金额，退款金额 默认为 退单数量*单价 的和
   * 整单退款 为订单orderAmount
   * 如果自定义退款金额 则金额不进行校验 直接退款
   */
  modify?: boolean;
  orderId: number;
  /**
   * 退单总金额
   */
  refundAmount: number;
  /**
   * 退单明细
   * id: orderDetailId
   * num: 退单数量
   * returnAmount: 退单金额
   */
  refundDetails?: RefundDetail[];
  refundReason?: string;
  [property: string]: any;
}

/**
* 订单详情 实体类。
*/
export interface RefundDetail {
  id?: number;
  /**
   * 退单数量
   */
  num?: number;
  /**
   * 退单金额
   */
  returnAmount?: number;
  [property: string]: any;
}
export interface getHistoryListRequest {
  orderId?: number;
  [property: string]: any;
}

// 订单状态
export type statusType =
  | "unpaid"
  | "in-production"
  | "wait-out"
  | "done"
  | "refunding"
  | "refund"
  | "part_refund"
  | "cancelled"
  | "";

// 发货类型
export type sendType = "post" | "takeaway" | "takeself" | "table" | "";
//订单类型
export type orderType = "cash" | "miniapp" | "offline" | "";
//是否回收站 0-否，1回收站 默认查未删除
export type isDel = 0 | 1;

export interface getListRequest {
  endTime?: string;
  /**
   * 是否回收站 0-否，1回收站 默认查未删除
   */
  isDel?: isDel;
  /**
   * 订单编号
   */
  orderNo?: string;
  /**
   * 订单类型-cash收银-miniapp小程序-offline线下
   */
  orderType?: orderType;
  /**
   * 支付类型
   */
  payType?: string;
  /**
   * 平台类型
   */
  platformType?: string;
  /**
   * 查询包含该商品的 所有订单
   */
  productName?: string;
  /**
   * 发货类型post快递，takeaway外卖,takeself,自提table---堂食
   */
  sendType?: sendType;
  /**
   * 店铺Id
   */
  shopId?: number;
  startTime?: string;
  /**
   * 状态: unpaid-待支付;in-production 制作中;wait-out
   * 待取餐;;done-订单完成;refunding-申请退单;refund-退单;part-refund 部分退单;cancelled-取消订单
   */
  status?: statusType;
  /**
   * 台桌id
   */
  tableId?: string;
  /**
   * 台桌名称
   */
  tableName?: string;
  [property: string]: any;
}

/**
 * CzgResultPageOrderInfoVo
 */
export interface getListResponse {
  code?: number;
  data?: PageOrderInfoVo;
  msg?: string;
  [property: string]: any;
}

/**
 * PageOrderInfoVo
 */
export interface PageOrderInfoVo {
  maxPageSize?: number;
  optimizeCountQuery?: boolean;
  pageNumber?: number;
  pageSize?: number;
  records?: OrderInfoVo[];
  totalPage?: number;
  totalRow?: number;
  [property: string]: any;
}

/**
 * 订单表 通用展示类
 *
 * OrderInfoVo
 */
export interface OrderInfoVo {
  createTime?: string;
  /**
   * 用餐模式 堂食 dine-in  外带 take-out 外卖 take-away
   */
  dineMode?: string;
  /**
   * 订单商品列表
   */
  goods?: OrderDetailSmallVO[];
  id?: number;
  /**
   * 是否使用了霸王餐
   */
  isFreeDine?: number;
  /**
   * 订单金额 (扣除各类折扣)
   */
  orderAmount?: number;
  /**
   * 订单编号
   */
  orderNo?: string;
  /**
   * 订单类型-
   * cash收银(除小程序以外 都属于收银)
   * miniapp小程序
   */
  orderType?: orderType;
  /**
   * 订单原金额 不含折扣价格
   */
  originAmount?: number;
  /**
   * 支付时间
   */
  paidTime?: string;
  /**
   * 实际支付金额
   */
  payAmount?: number;
  /**
   * 支付订单号
   */
  payOrderNo?: string;
  /**
   * 支付类型
   * 主扫 main-scan
   * 被扫 back-scan
   * 微信小程序 wechat-mini
   * 支付宝小程序 alipay-mini
   * 会员支付 vip-pay
   * 现金支付 cash-pay
   */
  payType?: string;
  /**
   * 平台类型  pc 收银机客户端 wechat 微信小程序 alipay 支付宝小程序 admin-pc PC管理端 admin-app APP管理端
   */
  platformType?: string;
  /**
   * 是否支持退款，1支持退单， 0不支持退单
   */
  refundAble?: number;
  /**
   * 退单金额
   */
  refundAmount?: number;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 店铺Id
   */
  shopId?: string;
  /**
   * 状态: unpaid-待支付;in-production 制作中;wait-out
   * 待取餐;;done-订单完成;refunding-申请退单;refund-退单;part-refund 部分退单;cancelled-取消订单
   */
  status?: statusType;
  /**
   * 台桌名称
   */
  tableName?: string;
  [property: string]: any;
}

/**
 * 订单详情 实体类。
 *
 * OrderDetailSmallVO
 */
export interface OrderDetailSmallVO {
  num?: number;
  productImg?: string;
  productName?: string;
  refundNum?: number;
  skuName?: string;
  [property: string]: any;
}
export interface addRequest {
  /**
   * 用餐模式 堂食 dine-in  外带 take-out 外卖 take-away
   */
  dineMode: string;
  /**
   * 多次下单时使用
   */
  orderId?: number;
  /**
   * 订单原金额（包含打包费+餐位费） 不含折扣价格
   */
  originAmount?: number;
  /**
   * 打包费
   */
  packFee?: number;
  /**
   * 当前订单下单次数
   */
  placeNum?: number;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 用餐人数
   */
  seatNum?: number;
  /**
   * 店铺Id
   */
  shopId?: number;
  /**
   * 台桌编码
   */
  tableCode: string;
  userId?: number;
  /**
   * 是否使用会员价
   */
  vipPrice?: boolean;
  /**
   * 是否等叫 0 否 1 等叫
   */
  waitCall?: boolean;
  [property: string]: any;
}



/**
* OrderInfo
*/
export interface OrderInfo {
  /**
   * 用户使用的卡券
   */
  couponInfoList?: string;
  createTime?: string;
  /**
   * 挂账人id
   */
  creditBuyerId?: number;
  /**
   * 用餐模式 堂食 dine-in  外带 take-out 外卖 take-away
   */
  dineMode?: string;
  /**
   * 折扣金额
   */
  discountAmount?: number;
  /**
   * 折扣信息 json
   */
  discountInfo?: string;
  /**
   * 折扣比例
   */
  discountRatio?: number;
  /**
   * 满减优惠券抵扣金额
   */
  fullCouponDiscountAmount?: number;
  id?: number;
  /**
   * 是否回收站 0-否，1回收站
   */
  isDel?: number;
  /**
   * 是否使用了霸王餐
   */
  isFreeDine?: number;
  /**
   * 是否等叫 0 否 1 等叫
   */
  isWaitCall?: number;
  /**
   * 订单金额 (扣除各类折扣)
   */
  orderAmount?: number;
  /**
   * 订单编号
   * pc 收银机客户端  PC+雪花ID
   * wechat 微信小程序 WX+雪花ID
   * alipay 支付宝小程序 ALI+雪花ID
   * admin-pc PC管理端 WEB+雪花ID
   * admin-app APP管理端 APP+雪花ID
   */
  orderNo?: string;
  /**
   * 订单类型-
   * cash收银(除小程序以外 都属于收银)
   * miniapp小程序
   */
  orderType?: string;
  /**
   * 订单原金额 不含折扣价格
   */
  originAmount?: number;
  /**
   * 打包费
   */
  packFee?: number;
  /**
   * 支付时间
   */
  paidTime?: string;
  /**
   * 实际支付金额
   */
  payAmount?: number;
  /**
   * 支付模式:
   * 后付费 after-pay
   * 先付费 before-pay
   * 无桌码 no-table
   */
  payMode?: string;
  /**
   * 支付订单号
   * tb_order_payment.id
   * tb_shop_user_flow.id
   */
  payOrderId?: number;
  payOrderNo?: string;
  /**
   * 支付类型
   * 主扫 main-scan
   * 被扫 back-scan
   * 微信小程序 wechat-mini
   * 支付宝小程序 alipay-mini
   * 会员支付 vip-pay
   * 现金支付 cash-pay
   */
  payType?: string;
  /**
   * 当前订单下单次数
   */
  placeNum?: number;
  /**
   * 平台类型  pc 收银机客户端 wechat 微信小程序 alipay 支付宝小程序 admin-pc PC管理端 admin-app APP管理端
   */
  platformType?: string;
  /**
   * 积分抵扣金额
   */
  pointsDiscountAmount?: number;
  /**
   * 使用的积分数量
   */
  pointsNum?: number;
  /**
   * 商品优惠券抵扣金额
   */
  productCouponDiscountAmount?: number;
  /**
   * 是否支持退款，1支持退单， 0不支持退单
   */
  refundAble?: number;
  /**
   * 退单金额
   */
  refundAmount?: number;
  /**
   * 退款备注
   */
  refundRemark?: string;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 抹零金额 减免多少钱
   */
  roundAmount?: number;
  /**
   * 餐位费
   */
  seatAmount?: number;
  /**
   * 用餐人数
   */
  seatNum?: number;
  /**
   * 店铺Id
   */
  shopId?: number;
  /**
   * 员工id
   */
  staffId?: number;
  /**
   * OrderStatusEnums 枚举类
   * 状态: unpaid-待支付;in-production 制作中;wait-out
   * 待取餐;;done-订单完成;refunding-申请退单;refund-退单;part-refund 部分退单;cancelled-取消订单
   */
  status?: string;
  /**
   * 台桌Id
   */
  tableCode?: string;
  /**
   * 台桌名称
   */
  tableName?: string;
  /**
   * 取餐码
   */
  takeCode?: string;
  /**
   * 交易日期
   */
  tradeDay?: string;
  updateTime?: string;
  /**
   * 用户Id user_info表的id
   */
  userId?: number;
  [property: string]: any;
}