package com.usky.eg.service;

import com.usky.common.core.bean.CommonPage;
import com.usky.eg.domain.EgDevice;
import com.usky.common.mybatis.core.CrudService;
import com.usky.eg.service.vo.EgDeviceBindFacePersonQueryVO;
import com.usky.eg.service.vo.EgDeviceBindFacePersonVO;
import com.usky.eg.service.vo.EgDeviceRequestVO;

import java.util.Map;

/**
 * <p>
 * 门禁_设备信息表 服务类
 * </p>
 *
 * @author zyj
 * @since 2024-11-27
 */
public interface EgDeviceService extends CrudService<EgDevice> {
    CommonPage<EgDevice> page(EgDeviceRequestVO requestVO);

    CommonPage<EgDevice> wePage(EgDeviceRequestVO requestVO);

    void add(EgDevice egDevice);

    void update(EgDevice egDevice);

    void attachUpdate(EgDevice egDevice);

    void remove(Integer id);

    boolean checkNameUnique(EgDevice egDevice);

    boolean checkDeviceNameUnique(EgDevice egDevice);

    Map<String,Object> control(String productCode, String deviceUuid, String commandCode, String commandValue, Long userId, String userName, Integer categoryType, String gatewayUuid, Boolean skipCheck, Integer passType);

    /**
     * 设备与人员绑定
     *
     * @param deviceId      设备主键ID
     * @param personIds     人员ID，多个以逗号分隔
     * @param isLoginNotify 是否打开登录通知(1 表示是，0 表示否)
     */
    void bindPerson(Integer deviceId, String personIds, Integer isLoginNotify);

    /** 绑定表人员分页（可选姓名、人脸状态） */
    CommonPage<EgDeviceBindFacePersonVO> pageBindFacePersons(EgDeviceBindFacePersonQueryVO queryVO);
}
