package com.usky.meeting.service;

import com.usky.common.core.bean.CommonPage;
import com.usky.meeting.domain.MeetingDevice;
import com.usky.common.mybatis.core.CrudService;
import com.usky.meeting.service.vo.MeetingDeviceBindFacePersonQueryVO;
import com.usky.meeting.service.vo.MeetingDeviceBindFacePersonVO;
import com.usky.meeting.service.vo.MeetingDeviceBindPersonRequest;
import com.usky.meeting.service.vo.MeetingDeviceRequestVO;

/**
 * <p>
 * 设备表 服务类
 * </p>
 *
 * @author zyj
 * @since 2024-03-08
 */
public interface MeetingDeviceService extends CrudService<MeetingDevice> {

    CommonPage<MeetingDevice> meetingDeviceList(MeetingDeviceRequestVO requestVO);

    void add(MeetingDevice meetingDevice);

    void edit(MeetingDevice meetingDevice);

    void remove(Long deviceId);

    /**
     * 设备人员授权（覆盖式）：先清空该设备绑定，再按 personIds 重新绑定；空字符串表示解除全部授权
     */
    void bindPerson(MeetingDeviceBindPersonRequest request);

    /**
     * 分页查询设备已绑定人员（支持 deviceCode / 姓名 / 人脸状态）
     */
    CommonPage<MeetingDeviceBindFacePersonVO> pageBindFacePersons(MeetingDeviceBindFacePersonQueryVO queryVO);
}
