package cn.hanghui.outapi.platform.alipay.service;


import cn.hanghui.outapi.platform.alipay.entity.param.AlipayUserInfo;
import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayAmpeSignOpenApiRequest;
import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayGroupIdOpenApiRequest;
import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayOpenIotvspUserwithimageRequest;
import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayOperateRecordCreateWithVidOpenApiRequest;
import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayUserCreateOpenMqRequest;
import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayUserDeleteBatchOpenApiRequest;
import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayUserDeleteOpenApiRequest;
import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayUserDeleteOpenMqRequest;
import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayUserStateOpenApiRequest;
import cn.hanghui.outapi.platform.alipay.entity.rest.request.ZolozCustomerSmileliveInitializeRequest;
import cn.hanghui.outapi.platform.alipay.entity.rest.response.AlipayAmpeSignOpenApiResponse;
import cn.hanghui.outapi.platform.alipay.entity.rest.response.AlipayOperateRecordCreateWithVidOpenApiResponse;
import cn.hanghui.outapi.platform.common.entity.rest.RestResult;

import java.util.List;

/**
 * @author shisl
 * @package com.yx.face.service
 * @class AlipayOpenApiService
 * @date 2023/5/22 上午11:00
 * @description
 */
public interface AlipayOpenApiService {


    /**
     * 查询封闭场景的机构用户库id
     *
     * @param req
     * @return
     */
    String queryOrgGroupId(AlipayGroupIdOpenApiRequest req);


    /**
     * 机构用户出库
     *
     * @param req
     * @return
     */
    void deleteUser(AlipayUserDeleteOpenApiRequest req);

    /**
     * 查询机构用户在库结果
     *
     * @param request
     * @return
     */
    Boolean queryUserState(AlipayUserStateOpenApiRequest request);

    /**
     * 入库通知
     *
     * @param req
     * @return
     */
    Boolean notifyCreateUserState(AlipayUserCreateOpenMqRequest req);

    /**
     * 出库通知
     *
     * @param req
     * @return
     */
    Boolean notifyDelUserState(AlipayUserDeleteOpenMqRequest req);


    /**
     * 自定义vid录入机构用户信息获取操作流水id v2版本
     *
     * @param req
     * @return
     */
    AlipayOperateRecordCreateWithVidOpenApiResponse createOperateRecordWithVidV2(AlipayOperateRecordCreateWithVidOpenApiRequest req);

    /**
     * 获取用户信息
     *
     * @param vid
     * @return
     */
    AlipayUserInfo getUserInfo(String vid, String orgOutId);

    AlipayUserInfo getUserInfo(String vid);

    /**
     * 获取设备签名等信息
     *
     * @param req
     * @return
     */
    AlipayAmpeSignOpenApiResponse ampeSign(AlipayAmpeSignOpenApiRequest req);

    /**
     * 用户信息直接入库
     *
     * @param openApiRequest
     * @return
     */
    RestResult createOperateRecordWithoutImage(AlipayOpenIotvspUserwithimageRequest openApiRequest);

    /**
     * 机构用户批量出库
     *
     * @param req
     */
    void deleteUserBatch(AlipayUserDeleteBatchOpenApiRequest req);


    /**
     * 刷脸核身Windows-BPaaSFaceSmileLifeVerify 1v1
     *
     * @param req
     * @return
     */
    RestResult customerSmileliveInitialize(ZolozCustomerSmileliveInitializeRequest req);

    /**
     * 设备端用户信息入库
     *
     * @param req
     * @return
     */
    RestResult createOperateRecordWithverified(AlipayOpenIotvspUserwithimageRequest req);

    /**
     * 匿名入库
     *
     * @param req
     * @return
     */
    RestResult createOperateRecordWithanonymous(AlipayOpenIotvspUserwithimageRequest req);

    /**
     * 接口实名入库
     *
     * @param req
     * @return
     */
    RestResult createOperateRecordWithverifiedcommon(AlipayOpenIotvspUserwithimageRequest req);

}
