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

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.rental.vo.customer.RentalCustomerSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.rental.vo.itemsrecord.RentalItemsCountReqVO;
import cn.iocoder.yudao.module.system.controller.admin.rental.vo.itemsrecord.RentalItemsRecordPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.rental.vo.itemsrecord.RentalItemsRecordRespVO;
import cn.iocoder.yudao.module.system.controller.admin.rental.vo.itemsrecord.RentalItemsRecordSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.rental.RentalItemsRecordDO;
import io.swagger.v3.oas.models.security.SecurityScheme;

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

/**
 * 租赁物品记录 Service 接口
 *
 * @author 符溶馨
 */
public interface RentalItemsRecordService {

    /**
     * 创建租赁物品记录
     * @param createReqVO 创建信息
     */
    Long createRentalItemsRecord(@Valid RentalItemsRecordSaveReqVO createReqVO);

    /**
     * 创建租赁物品记录
     * @param createReqVO 创建信息
     */
    void createRentalItemsRecordBath(@Valid List<RentalItemsRecordSaveReqVO> createReqVO);

    /**
     * 更新租赁物品记录
     * @param updateReqVO 更新信息
     */
    void updateRentalItemsRecord(@Valid RentalItemsRecordSaveReqVO updateReqVO);

    /**
     * 查询租赁物品记录
     * @param id id
     * @return 租赁物品记录
     */
    RentalItemsRecordDO getRentalItemsRecord(Long id);

    /**
     * 分页查询租赁物品记录
     * @param pageReqVO 分页参数
     * @return 租赁物品记录列表
     */
    PageResult<RentalItemsRecordDO> getRentalItemsRecordPage(RentalItemsRecordPageReqVO pageReqVO);

    /**
     * 获取指定订单指定类型的租赁物品的剩余数量
     * @param orderNo 订单编号
     * @return 剩余数量
     */
    List<RentalItemsCountReqVO> getRentalItemsCount(String orderNo, Boolean isUpdate);
}
