package com.mosty.bkzx.sjjs.client;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.mosty.base.utils.Constant;
import com.mosty.bkzx.sjjs.dto.DHUpVIASDataClassTabs;
import com.mosty.bkzx.sjjs.dto.DispositionObjectDto;
import com.mosty.bkzx.sjjs.dto.FaceObjectDTO;
import com.mosty.bkzx.sjjs.dto.MotorVehicleObject;
import com.mosty.bkzx.sjjs.entity.DataClassTabObject;
import com.mosty.bkzx.sjjs.entity.Dispositions;
import com.mosty.bkzx.sjjs.entity.Face;
import com.mosty.bkzx.sjjs.entity.MotorVehic;
import com.mosty.bkzx.sjjs.vo.*;
import com.mosty.bkzx.utlis.MD5Util;
import com.mosty.bkzx.utlis.OkHttpUtils;
import com.mosty.common.base.exception.BusinessException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;

import java.util.*;

/**
 * HTTP请求静态类
 */
public class HttpClient {

    /**
     * 保活会话
     * 用户登录成功后，都是用token进行关联会话信息，为了避免出现token变更无法查找关联信息，
     * 可以使用会话保持接口，对该token进行续租，保持持续有效。续租成功，请求方需要在下一次超时之前再次发起会话保活请求
     *
     * @param token
     * @return
     */
    public static String keepAlive(String token) {return null;}

    /**
     * 第一次交互
     *
     * @param userName
     * @param clientType
     * @return
     */
    public static AuthorizeOneVo authorizeBefore(String userName, String clientType) {return null;}


    /**
     * 第二次交互
     *
     * @param userName
     * @param password
     * @return
     */
    public static AuthorizeTwoVo authorizeAfter(AuthorizeOneVo authorizeOneVo, String userName, String password) {return null;}

    /**
     * 巡逻盘查图片获取人员信息
     *
     * @param base64
     * @return
     */
    public static CustomInfoVo userList(String base64) {return null;}

    /**
     * 图片获取人员信息
     *
     * @param personIdentifyObject
     * @return
     */
    public static FaceObject faceObject(PersonIdentifyObject personIdentifyObject) {return null;}


    /**
     * 大华人像库新增
     *
     * @param faceRepository
     * @return
     */
    public static String insertFaceRepository(FaceRepository faceRepository) {return null;}

    /**
     * 大华人像库查询
     *
     * @return
     */
    public static List<FaceRepositoryInfo> queryFaceRepository() {return null;}

    /**
     * 大华人像库详情
     *
     * @return
     */
    public static FaceRepositoryInfo faceRepositoryDetail(String faceRepositoryId) {return null;}

    /**
     * 大华人像库修改
     *
     * @return
     */
    public static void faceRepositoryUpdate(String faceRepositoryId, String name, String memo, int type) {}

    /**
     * 大华人像库新增成员
     *
     * @return
     */
    public static String faceRepositoryUserSave(FaceRepositoryUser faceRepositoryUser) {return null;}

    /**
     * 大华人像库删除成员
     *
     * @return
     */
    public static void faceRepositoryUserDelete(String memberId) {}


    /**
     * 查看某个库成员的详情
     *
     * @param faceImgId
     * @return
     */
    public static RepositoryUser authorizeBefore(String faceImgId) {return null;}

    /**
     * 人像布控
     *
     * @param repositoryId 人像库 id，必填。
     * @param channelCode  Saas通道id，必填。
     * @param threshold    布控阈值，取值范围为[0-1],必填。
     * @param level        布控等级。选填。
     * @return
     */
    public static void surveillance(String repositoryId, String channelCode, double threshold, int level) {}

    /**
     * 布控删除
     *
     * @param repositoryId 人像库 id，必填。
     * @param channelCode  Saas通道id，必填。
     */
    public static void surveillanceDelete(String repositoryId, String channelCode) {}

    /**
     * 车辆新增布控
     *
     * @param vehicleCar 人像库 id，必填。
     */

    public static String carSurveillance(VehicleCar vehicleCar) {return null;}

    /**
     * 车辆新增布控审核
     *
     * @param recordId  过车记录索引号。
     * @param operation pass通过，notPass不通过。
     */
    public static void carSurveillanceAudit(String recordId, Boolean operation) {}


    /**
     * 车辆撤销布控
     *
     * @param recordId     过车记录索引号。
     * @param revokeReason 撤控原因"。
     */
    public static void carSurveillanceDelete(String recordId, String revokeReason) {}


    /**
     * 获取HLS播放地址
     *
     * @param
     * @return
     */
    public static String getHLS(String channelId) {return null;}

    /**
     * 创建人脸布控库（修改put）  难得写 没必要
     *
     * @param
     * @return
     */
    public static String insertPersonIdentify(DataClassTabObject dataClassTabObject) {return null;}

    /**
     * 删除人脸布控库
     *
     * @param
     * @return
     */
    public static String delPersonIdentify(String id) {return null;}

    /**
     * 布控库添加人员
     *
     * @param face
     * @return
     */
    public static String insertFaces(Face face) {return null;}

    /**
     * 向布控库中添加布控人员信息
     * @param faceObjects
     * @return
     */
    public static String insertFaces(List<FaceObjectDTO> faceObjects, String token){return null;}

    /**
     * 布控库添加车辆
     *
     * @param motorVehic
     * @return
     */
    public static String insertMotor(MotorVehic motorVehic) {return null;}


    /**
     * 布控库添加车辆
     *
     * @param motorVehic
     * @return
     */
    public static String insertMotor(List<MotorVehicleObject> motorVehic, String token) {return null;}
    /**
     * 申请进行布控
     * @return
     */
    public  static  String cancelDbDispositions(List<DispositionObjectDto> bkDto){return null;}


    public static String insertDispositions(DispositionObjectDto dispositions,String token) {return null;}

    /**
     * 删除布控库人员
     *
     * @param
     * @return
     */
    public static String delFaces(String id, String tabId) {return null;}

    /**
     * 布控人员
     *
     * @param dispositions
     * @return
     */
    public static String insertDispositions(Dispositions dispositions) {return null;}



    public  static String insertPersonIdentifyByToken(DataClassTabObject dataClassTabObject,String token){return null;}

    /**
     * 更新布控库信息
     * @param tabs
     * @return
     */
    public static String updateBkDbInfor(List<DHUpVIASDataClassTabs> tabs){return null;}

    /**
     * 删除布控库车辆
     *
     * @param
     * @return
     */
    public static String delMotor(String id, String tabId) {return null;}

}
