package cn.iocoder.yudao.module.system.service.parkingspot;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.parkingspot.vo.ParkingSpotPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.parkingspot.vo.ParkingSpotSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.parkingspot.ParkingSpotDO;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.validation.Valid;
import java.util.List;

/**
 * 停车点 Service 接口
 *
 * @author 艾楷
 */
public interface ParkingSpotService extends IService<ParkingSpotDO> {

    /**
     * 创建停车点
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createParkingSpot(@Valid ParkingSpotSaveReqVO createReqVO);

    /**
     * 更新停车点
     *
     * @param updateReqVO 更新信息
     */
    void updateParkingSpot(@Valid ParkingSpotSaveReqVO updateReqVO);

    /**
     * 删除停车点
     *
     * @param id 编号
     */
    void deleteParkingSpot(Long id);

    /**
     * 获得停车点
     *
     * @param id 编号
     * @return 停车点
     */
    ParkingSpotDO getParkingSpot(Long id);

    /**
     * 获得停车点分页
     *
     * @param pageReqVO 分页查询
     * @return 停车点分页
     */
    PageResult<ParkingSpotDO> getParkingSpotPage(ParkingSpotPageReqVO pageReqVO);

    /**
     * 根据地图id查询
     *
     * @param positionMapId
     * @return
     */
    List<ParkingSpotDO> getByMapId(Long positionMapId);

    /**
     * 批量新增编辑删除
     * @param positionMapId
     * @param list
     */
    void batchSaveOrEditOrDel(Long positionMapId, List<List<ParkingSpotDO>> list);

    /**
     * 根据地图id删除
     * @param mapId
     */
    void deleteParkingByMapId(Long mapId);
}
