package com.yanzhu.manage.service;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;

import java.security.NoSuchAlgorithmException;
import java.util.Map;

/**
 * 宇泛服务封装
 */
public interface IUniService {
    /**
     * 鉴权接口
     * @param data
     * @return
     */
    public Map<String,String> auth(long projectId) throws NoSuchAlgorithmException;

    /**
     * 人员接口-识别主体创建
     * @param data
     * @return
     */
    public String admitCreate(JSONObject data);

    /**
     * 人员接口-识别主体更新
     * @param data
     * @return
     */
    public String admitUpdate(JSONObject data);

    /**
     * 人员接口-识别主体删除
     * @param data
     * @return
     */
    public boolean admitDeletee(JSONObject data);

    /**
     * 人员接口-查询识别主体详情
     * @param data
     * @return
     */
    public JSONObject admitDetail(JSONObject data);

    /**
     * 人员接口-识别主体列表
     * @param data
     * @return
     */
    public JSONObject admitPage(JSONObject data);


    /**
     * 人员接口-人像注册
     * @param data
     * @return
     */
    public JSONObject faceRegister(JSONObject data);



    /**
     * 人员接口-人像删除
     * @param data
     * @return
     */
    public boolean faceDelete(JSONObject data);

    /**
     * 人员接口-人员照片信息查询
     * @param data
     * @return
     */
    public JSONObject faceDetail(JSONObject data);

    /**
     * 设备接口-设备添加
     * @param data
     * @return
     */
    public String deviceCreate(JSONObject data);

    /**
     * 设备接口-设备更新
     * @param data
     * @return
     */
    public JSONObject deviceUpdate(JSONObject data);

    /**
     * 设备接口-设备删除
     * @param data
     * @return
     */
    public JSONObject deviceDelete(JSONObject data);

    /**
     * 设备接口-设备详情
     * @param data
     * @return
     */
    public JSONObject deviceDetail(JSONObject data);

    /**
     * 授权接口-设备授权识别主体
     * @param data
     * @return
     */
    public String authDevice(JSONObject data);

    /**
     * 授权接口-设备修改识别主体权限
     * @param data
     * @return
     */
    public JSONObject authDeviceUpdate(JSONObject data);


    /**
     * 授权接口-设备销权识别主体
     * @param data
     * @return
     */
    public String authDeviceRevoke(JSONObject data);


    /**
     * 同步宇泛的人员和头像
     * @param userId
     * @param projectId
     */
    public Long syncUniUser(Long userId, Long projectId);

    /**
     * 同步宇泛的设备信息
     * @param deviceId
     * @param projectId
     * @return
     */
    public Long syncUniDevice(Long deviceId,Long projectId);

    /**
     * 同步设备和主体
     * @param deviceId
     * @param projectId
     * @return
     */
    public Long syncUniDeviceUser(Long deviceId,Long projectId);

    public long syncUniDeviceDelete(Long[] ids);

    /**
     * 用户设备销权识别主体
     * @param id
     */
    public void syncUserRevoke(Long id);

    /**
     * 用户设备授权识别主体
     * @param id
     */
    public void syncUserAuthDevice(Long id);
}
