package com.ruoyi.device.service;

import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.device.domain.entity.TsbUserDevice;
import com.ruoyi.device.domain.model.TsbUserDeviceBind;

import java.util.List;

/**
 * 调试宝设备用户绑定业务层
 *
 * @author lwm
 */
public interface ITsbUserDeviceService
{
    /**
     * 查询用户与设备绑定列表（联表用户、设备）
     * 标识用户信息的 唯一字段至少存在一个、设备信息的 唯一字段至少存在一个
     *
     * @param userDeviceBind 查询参数
     * @return 绑定关系集合信息
     */
    public TsbUserDeviceBind selectTsbUserDeviceBind(TsbUserDeviceBind userDeviceBind);

    /**
     * 查询指定设备当前绑定（无则返回 null）
     *
     * @param deviceId 设备ID
     * @return 绑定关系
     */
    public TsbUserDeviceBind selectBindByDeviceId(Long deviceId);

    /**
     * 未绑定任何调试宝设备的用户列表（用于下拉）
     * 当前用户的可选择用户 再 去掉已经绑定的用户
     *
     * @return 用户列表
     */
    public List<SysUser> selectUnbindUsers(TsbUserDevice bind);

    /**
     * 用户与设备绑定（一人一机、一机一人等规则在实现内校验）
     *
     * @param userId   用户ID
     * @param deviceId 设备ID
     * @return 结果
     */
    public int insertUserDevice(Long userId, Long deviceId);

    /**
     * 用户与设备解绑
     *
     * @param userId   用户ID
     * @param deviceId 设备ID
     * @return 结果
     */
    public int deleteUserDevice(Long userId, Long deviceId);

    /**
     * 按用户ID批量删除设备绑定关系（删除用户前清理关联）
     *
     * @param userIds 用户ID数组
     * @return 影响行数
     */
    public int deleteByUserIds(Long[] userIds);
}
