
package com.tmerclub.cloud.delivery.mapper;

import com.tmerclub.cloud.delivery.dto.PrinterDTO;
import com.tmerclub.cloud.delivery.model.Printer;
import com.tmerclub.cloud.delivery.vo.PrinterVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 打印机
 *
 * @author TRACK
 * @date 2023-08-23 14:48:23
 */
public interface PrinterMapper {

    /**
     * 获取打印机列表
     * @param printerDTO
     * @return 打印机列表
     */
    List<Printer> list(@Param("printer")PrinterDTO printerDTO);

    /**
     * 根据打印机id获取打印机
     *
     * @param printerId 打印机id
     * @return 打印机
     */
    Printer getByPrinterId(@Param("printerId") Long printerId);

    /**
     * 保存打印机
     * @param printer 打印机
     */
    void save(@Param("printer") Printer printer);

    /**
     * 更新打印机
     * @param printer 打印机
     */
    void update(@Param("printer") Printer printer);

    /**
     * 根据打印机id删除打印机
     * @param printerId
     */
    void deleteById(@Param("printerId") Long printerId);

    /**
     * 取消默认
     * @param shopId
     * @param supplierId
     */
    void cancelDefault(@Param("shopId") Long shopId, @Param("supplierId") Long supplierId);

    /**
     * 设为/取消默认
     * @param printerId
     */
    void setDefault(@Param("printerId") Long printerId);

    /**
     * 获取店铺打印机列表
     * @param shopId
     * @param sysType
     * @return
     */
    List<PrinterVO> listByShopId(@Param("shopId") Long shopId, @Param("sysType") Integer sysType);

    /**
     * 校验名称
     * @param shopId
     * @param supplierId
     * @param name
     * @param printerId
     * @return
     */
    int countByName(@Param("shopId") Long shopId, @Param("supplierId") Long supplierId,
                    @Param("name") String name, @Param("printerId") Long printerId);
}
