package com.mortals.xhx.module.hik.face.service;


import com.mortals.framework.common.Rest;
import com.mortals.xhx.module.hik.face.model.req.face.FaceListReq;
import com.mortals.xhx.module.hik.face.model.req.face.FaceReq;
import com.mortals.xhx.module.hik.face.model.req.face.ResRecognReq;
import com.mortals.xhx.module.hik.face.model.req.group.FaceGroupReq;
import com.mortals.xhx.module.hik.face.model.req.img.ImgReq;
import com.mortals.xhx.module.hik.face.model.req.resource.ResourceReq;
import com.mortals.xhx.module.hik.face.model.rsp.face.FaceDataInfo;
import com.mortals.xhx.module.hik.face.model.rsp.face.ResRecognDataInfo;
import com.mortals.xhx.module.hik.face.model.rsp.group.FaceGroupDataInfo;
import com.mortals.xhx.module.hik.face.model.rsp.resource.ResourceDataInfo;

import java.io.InputStream;
import java.util.List;

/**
 * 海康门禁接口对接类
 *
 * @author:
 * @date: 2023/4/12 17:47
 */
public interface IHikFaceService {


    /**
     * 查询人脸
     *
     * @param faceListReq
     * @return
     */
    Rest<List<FaceDataInfo>> findFaceList(FaceListReq faceListReq);


    /**
     * 添加单个人脸
     *
     * @param faceReq
     * @return
     */
    Rest<FaceDataInfo> faceSingleAdd(FaceReq faceReq);

    /**
     * 修改单个人脸
     *
     * @param faceReq
     * @return
     */
    Rest<Boolean> faceSingleUpdate(FaceReq faceReq);

    /**
     * 删除单个人脸
     *
     * @param faceReq
     * @return
     */
    Rest<Boolean> faceSingleDel(FaceReq faceReq);

    /**
     * 查询人脸分组
     *
     * @param faceGroupReq
     * @return
     */
    Rest<List<FaceGroupDataInfo>> findFaceGroupList(FaceGroupReq faceGroupReq);

    /**
     * 添加人脸分组
     *
     * @param faceGroupReq
     * @return
     */
    Rest<FaceGroupDataInfo> faceGroupSingleAdd(FaceGroupReq faceGroupReq);

    /**
     * 删除人脸分组
     *
     * @param faceGroupReq
     * @return
     */
    Rest<Boolean> faceGroupSingleDel(FaceGroupReq faceGroupReq);


    /**
     * 查询人脸资源
     *
     * @param recognReq
     * @return
     */
    Rest<List<ResRecognDataInfo>> findResRecognList(ResRecognReq recognReq);


    /**
     * 下载抓拍人脸图片
     *
     * @param imgReq
     * @return
     */
    Rest<String> downloadPicture(ImgReq imgReq);


    /**
     * 获取识别资源
     *
     * @param recognReq
     * @return
     */
    Rest<List<ResourceDataInfo>> getResourceRecognition(ResourceReq recognReq);


    InputStream callPostImgs(ImgReq imgReq) throws Exception;

}
