package cn.iocoder.yudao.module.booking.service;

import cn.iocoder.yudao.module.app.booking.vo.BookingQueryVO;
import cn.iocoder.yudao.module.booking.entity.DlRepairBooking;
import cn.iocoder.yudao.module.booking.vo.BookingVO;
import cn.iocoder.yudao.module.booking.vo.DlRepairBookingReqVO;
import cn.iocoder.yudao.module.booking.vo.DlRepairBookingRespVO;
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 针对表【dl_repair_booking(维修预约表)】的数据库操作Service
 *
 * @author 小李
 * @date 10:18 2024/9/23
**/
public interface DlRepairBookingService extends IService<DlRepairBooking> {

    /**
     * 维修预约表 新增、修改
     *
     * @author 小李
     * @date 10:21 2024/9/23
     * @param repairBookingRespVO 预约对象
     **/
    void updateBooking(DlRepairBookingRespVO repairBookingRespVO);

    /**
     * 维修预约表 删除
     *
     * @author 小李
     * @date 10:26 2024/9/23
     * @param id 预约记录id
     **/
    void deleteBooking(String id);

    /**
     * 维修预约表 分页
     *
     * @author 小李
     * @date 10:31 2024/9/23
     * @param repairBookingReqVO 请求对象
     **/
    IPage<DlRepairBooking> getBookingPage(DlRepairBookingReqVO repairBookingReqVO, Page<DlRepairBooking> page);

    /**
     * 维修预约表 查询单个
     *
     * @author 小李
     * @date 10:38 2024/9/23
     * @param id id
     **/
    DlRepairBooking getBookingById(String id);

    /**
     * 维修预约表 映射
     *
     * @author 小李
     * @date 13:32 2024/9/24
     * @param ids 预约记录ID
     **/
    List<BookingQueryVO> getBookingMap(List<String> ids);

    /**
     *
     * @author vinjor-M
     * @date 15:03 2024/10/26
     * @param tenantId 租户ID
     * @return java.util.List<cn.iocoder.yudao.module.booking.vo.BookingVO>
    **/
    List<BookingVO> getBookingTime(Long tenantId);

    /**
     * 获取所有服务顾问
     * @author vinjor-M
     * @date 15:52 2024/10/26
     * @param tenantId 租户ID
    **/
    List<UserDTO> getAllServicer(Long tenantId);
}
