package jnpf.attendance.service;

import jnpf.base.UserInfo;
import jnpf.enums.attendance.MachineEnum;
import jnpf.permission.model.user.PartUserInfoVo;

import java.util.List;

/**
 * 考勤机策略模式
 *
 * @author yanwenfu
 * @create 2024-04-03
 */
public interface MachineStrategy {

    /**
     * 获取当前上下文相关的机器枚举类型
     * 此方法用于提供当前执行环境或上下文有关的机器信息通过返回一个MachineEnum枚举类型，
     * 可以标准化地表示不同的机器或环境类型，以便于在代码的其他部分根据具体的机器类型执行相应的逻辑
     *
     * @return MachineEnum 一个枚举类型，表示当前上下文相关的机器类型
     */
    MachineEnum getMachine();

    /**
     * 下发设备到考勤机
     * @param userInfo 当前登录用户
     * @param user 下发用户
     * @param sn 设备码
     */
    void addUserToMachine(UserInfo userInfo, PartUserInfoVo user, String sn);

    /**
     * 删除考勤机中的用户
     * @param userInfo 当前登录用户
     * @param userIds 删除用户ids
     * @param sn 设备码
     */
    void deleteUserList(UserInfo userInfo, List<String> userIds, String sn);

    /**
     * 同步考勤机人脸库
     * @param sn 设备码
     */
    void syncMachineMember(String sn);
}
