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

/** 商店分页查询参数 */
export interface ShopQuery extends BasePageQuery {
  shopName?: string;
  corpid?: string;
  /** 归属类型（0-借还柜 1-固资通） */
  belongType?: number;
  /** 运行模式（0-支付模式 1-审批模式 2-借还模式 3-会员模式 4-耗材模式 5-暂存模式） */
  mode?: number;
  /** 借呗支付（1-正常使用 0-禁止使用） */
  balanceEnable?: number;
}

/** 商店DTO */
export interface ShopDTO {
  shopId: number;
  shopName: string;
  corpid?: string;
  /** 封面图URL */
  coverImg?: string;
  /** 归属类型（0-借还柜 1-固资通） */
  belongType?: number;
  /** 运行模式（0-支付模式 1-审批模式 2-借还模式 3-会员模式 4-耗材模式 5-暂存模式） */
  mode?: number;
  /** 借呗支付（1-正常使用 0-禁止使用） */
  balanceEnable?: number;
  /** 机柜数量 */
  cabinetCount?: number;
}

/** 新增商店命令 */
export interface AddShopCommand {
  shopName: string;
  corpid: string;
  /** 封面图URL */
  coverImg?: string;
  /** 归属类型（0-借还柜 1-固资通） */
  belongType?: number;
  /** 运行模式（0-支付模式 1-审批模式 2-借还模式 3-会员模式 4-耗材模式 5-暂存模式） */
  mode?: number;
  /** 借呗支付（1-正常使用 0-禁止使用） */
  balanceEnable?: number;
}

/** 更新商店命令 */
export interface UpdateShopCommand {
  corpid: string;
  shopId: number;
  shopName: string;
  /** 封面图URL */
  coverImg?: string;
  /** 归属类型（0-借还柜 1-固资通） */
  belongType?: number;
  /** 运行模式（0-支付模式 1-审批模式 2-借还模式 3-会员模式 4-耗材模式 5-暂存模式） */
  mode?: number;
  /** 借呗支付（1-正常使用 0-禁止使用） */
  balanceEnable?: number;
};

// 运行模式文字映射
const modeTextMap = {
  0: '支付模式',
  1: '审批模式',
  2: '借还模式',
  3: '会员模式',
  4: '耗材模式',
  5: '暂存模式'
};

// 借呗支付状态文字映射
const balanceEnableTextMap = {
  0: '禁止使用',
  1: '正常使用'
};

/**
 * 将运行模式数值转换为文字描述
 * @param mode 运行模式数值
 * @returns 对应的文字描述，未知值返回空字符串
 */
export const getModeText = (mode?: number): string => {
  return mode !== undefined ? modeTextMap[mode] || '' : '';
};

/**
 * 将借呗支付状态转换为文字描述
 * @param balanceEnable 借呗支付状态数值
 * @returns 对应的文字描述，未知值返回空字符串
 */
export const getBalanceEnableText = (balanceEnable?: number): string => {
  return balanceEnable !== undefined ? balanceEnableTextMap[balanceEnable] || '' : '';
};

/** 获取商店列表 */
export const getShopList = (params?: ShopQuery) => {
  return http.request<ResponseData<PageDTO<ShopDTO>>>('get', '/shop/shops', {
    params
  });
};

/** 获取商店列表 */
export const getShopListApi = (params?: ShopQuery) => {
  return http.request<ResponseData<ShopDTO[]>>('get', '/shop/shops/list', {
    params
  });
};

/** 获取商店详情 */
export const getShopById = (id: number) => {
  return http.request<ResponseData<ShopDTO>>('get', `/shop/shops/${id}`);
};

/** 新增商店 */
export const addShop = (data: AddShopCommand) => {
  return http.request<ResponseData<void>>('post', '/shop/shops', {
    data
  });
};

/** 修改商店 */
export const updateShop = (id: number, data: UpdateShopCommand) => {
  return http.request<ResponseData<void>>('put', `/shop/shops/${id}`, {
    data
  });
};

/** 删除商店 */
export const deleteShop = (ids: string) => {
  return http.request<ResponseData<void>>('delete', `/shop/shops/${ids}`);
};