package com.ruoyi.bst.device.service;

import com.ruoyi.bst.device.domain.Device;
import com.ruoyi.bst.device.domain.DeviceVO;


import java.util.Collection;
import java.util.Collections;
import java.util.List;


/**
 * @author wjh
 * 2024/4/30
 */
public interface DeviceValidator {


    /**
     * 判断设备是否属于指定用户
     * @param deviceId 设备id
     * @param userId 用户id
     */
    boolean isMch(Long deviceId, Long userId);

    boolean isMch(Collection<Long> deviceIds, Long userId);

    /**
     * 判断是否设备的商户
     */
    boolean isMch(DeviceVO device, Long userId);


//
//    /**
//     * 判断SN是否重复
//     */
//    boolean isRepeatSn(Long deviceId, String sn);

//    /**
//     * 判断MAC是否重复
//     */
//    boolean isRepeatMac(Long deviceId, String mac);




//    /**
//     * 校验MAC
//     * @param deviceId
//     * @param mac
//     * @param mac2
//     */
//    void checkMac(Long deviceId, String mac, String mac2);

//    /**
//     * 校验SN
//     * @param deviceId
//     * @param deviceNo
//     */
//    void checkSn(Long deviceId, String deviceNo);


    /**
     * 是否可以操作设备
     */
    default boolean canOperate(Long id) {
        return canOperate(Collections.singletonList(id));
    }

    /**
     * 当前用户是否可以操作所有设备
     * @param ids
     * @return
     */
    boolean canOperate(List<Long> ids);

}
