/**
 * 设备相关API
 */

import { post, get } from '../utils/request';
import { API_PATHS } from '../utils/config';

/**
 * 扫码开门请求参数
 */
export interface ScanDoorRequest {
  deviceId: string;
  userId: string;
}

/**
 * 扫码开门响应数据
 */
export interface ScanDoorResponse {
  doorOpened: boolean;
  outTradeNo: string;
  orderNo: string;
  deviceId: string;
  doorIndex: number;
}

/**
 * 设备状态响应数据
 */
export interface DeviceStatusResponse {
  deviceId: string;
  status: string;
  isOnline: boolean;
}

/**
 * 扫码开门
 * @param deviceId 设备ID（从二维码中解析）
 */
export const scanDoor = (deviceId: string): Promise<ScanDoorResponse> => {
  return post<ScanDoorResponse>(API_PATHS.scanDoor, {
    deviceId
  });
};

/**
 * 检查设备状态
 * @param deviceId 设备ID
 */
export const checkDeviceStatus = (deviceId: string): Promise<DeviceStatusResponse> => {
  return post<DeviceStatusResponse>(API_PATHS.checkDeviceStatus, {
    deviceId
  });
};

/**
 * 商品项数据
 */
export interface GoodsItem {
  /** 商品code */
  key?: string;
  /** 商品名称 */
  label?: string;
  /** 库存 */
  stock?: number;
  /** 商品分类 */
  type?: string;
  /** 商品图片URL */
  pic?: string;
  /** 商品售价 */
  c_price?: string;
  /** 是否折扣 */
  discount?: string;
  /** 优惠价 */
  dis_price?: string;
}

/**
 * 层配置数据
 */
export interface FloorConfig {
  /** 层号 */
  floor: number;
  /** 该层商品列表 */
  goods: GoodsItem[];
}

/**
 * 设备商品陈列响应数据
 */
export interface DeviceProductsResponse {
  /** 模板名称 */
  templateName?: string;
  /** 设备ID */
  deviceId?: string;
  /** 设备层数 */
  shelfNum?: number;
  /** 设备类型 */
  deviceType?: number;
  /** 左门层数据 */
  leftFloors: FloorConfig[];
  /** 右门层数据 */
  rightFloors: FloorConfig[];
}

/**
 * 获取设备商品陈列信息
 * @param deviceId 设备ID
 */
export const getDeviceProducts = (deviceId: string): Promise<DeviceProductsResponse> => {
  return get<DeviceProductsResponse>(API_PATHS.getDeviceProducts(deviceId), undefined, { skipAuth: true });
};
