package com.tmerclub.cloud.warehouse.service;

import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.warehouse.model.dto.WarehouseDTO;
import com.tmerclub.cloud.warehouse.model.vo.WarehouseVO;

import java.math.BigDecimal;

/**
 * 仓库Service接口
 *
 * @author : frank
 * @create : 2025-04-14
 */
public interface WarehouseService {

    /**
     * 获取仓库分页列表
     *
     * @param pageDTO      分页参数
     * @param warehouseDTO 查询参数
     * @return 分页数据
     */
    PageVO<WarehouseVO> page(PageDTO pageDTO, WarehouseDTO warehouseDTO);

    /**
     * 获取仓库详情
     *
     * @param id 主键
     * @return 仓库详情
     */
    WarehouseVO getById(Long id);

    /**
     * 新增仓库
     *
     * @param warehouseDTO 新增参数
     * @return 新增结果
     */
    int save(WarehouseDTO warehouseDTO);

    /**
     * 修改仓库
     *
     * @param warehouseDTO 修改参数
     * @return 修改结果
     */
    int update(WarehouseDTO warehouseDTO);

    /**
     * 删除仓库
     *
     * @param id 主键
     * @return 删除结果
     */
    int delete(Long id);

    /**
     * 根据经纬度获取最近的仓库信息
     *
     * @param lat 纬度
     * @param lng 经度
     * @return 最近的仓库信息
     */
    WarehouseVO getNearbyWarehouse(Long orderId, BigDecimal lat, BigDecimal lng);
}