All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.dahuatech.icc.multiinone.vims.VimsPersonAuthSDK Maven / Gradle / Ivy

There is a newer version: 1.0.13.7
Show newest version
package com.dahuatech.icc.multiinone.vims;

import com.dahuatech.hutool.json.JSONObject;
import com.dahuatech.hutool.log.Log;
import com.dahuatech.hutool.log.LogFactory;
import com.dahuatech.icc.brm.model.v202010.SDK.BrmCardBatchAddSDK;
import com.dahuatech.icc.brm.model.v202010.SDK.BrmCardBatchGenIdSDK;
import com.dahuatech.icc.brm.model.v202010.SDK.BrmPersonBatchAddSDK;
import com.dahuatech.icc.brm.model.v202010.SDK.BrmPersonBatchGenIdSDK;
import com.dahuatech.icc.brm.model.v202010.card.*;
import com.dahuatech.icc.brm.model.v202010.person.BrmPersonBatchAddRequest;
import com.dahuatech.icc.brm.model.v202010.person.BrmPersonBatchAddResponse;
import com.dahuatech.icc.brm.model.v202010.person.BrmPersonBatchGenIdRequest;
import com.dahuatech.icc.brm.model.v202010.person.BrmPersonBatchGenIdResponse;
import com.dahuatech.icc.common.ParamValidEnum;
import com.dahuatech.icc.exception.ClientException;
import com.dahuatech.icc.multiinone.vims.vo.PersonAuthRequest;
import com.dahuatech.icc.multiinone.vims.vo.PersonAuthResponse;
import com.dahuatech.icc.oauth.exception.BusinessException;
import com.dahuatech.icc.oauth.model.v202010.oSDK.OauthParamConstant;
import com.dahuatech.icc.util.CollectionUtil;
import com.dahuatech.icc.vims.model.v202207.SDK.CardAuthSDK;
import com.dahuatech.icc.vims.model.v202207.SDK.FaceAuthSDK;
import com.dahuatech.icc.vims.model.v202207.auth.CardAuthRequest;
import com.dahuatech.icc.vims.model.v202207.auth.CardAuthResponse;
import com.dahuatech.icc.vims.model.v202207.auth.FaceAuthRequest;
import com.dahuatech.icc.vims.model.v202207.auth.FaceAuthResponse;

import java.util.ArrayList;
import java.util.List;

/**
 * program:java-sdk
 *
 * Author: 312013
 * Date:2022-08-16 09:22
 * Description: 可视对讲,批量人员添加(包含图像)、卡片添加、异步授权
 */
public class VimsPersonAuthSDK {
    protected final Log logger = LogFactory.get();

    /**
     * 人员授权:添加卡片、添加人员、授权,授权分两步:卡片授权+人像授权
     * **/
    public PersonAuthResponse personAuth(PersonAuthRequest personAuthRequest){
        logger.info("VimsPersonAuthSDK,personAuth,param:{}",new JSONObject(personAuthRequest).toJSONString(0));
        PersonAuthResponse personAuthResponse;

        //卡片授权信息和人像授权信息都不传,直接返回
        if(personAuthRequest.getCardAuthInfo() == null && personAuthRequest.getFaceAuthInfo() == null){
            logger.error("Card auth param and person auth param only one can be empty.");
            return new PersonAuthResponse(ParamValidEnum.PARAM_NOT_EMPTY_ERROR.getCode(),"Card auth param and person auth param only one can be empty.", false);
        }

        //添加人员
        if(personAuthRequest.getPersonInfos() != null && !CollectionUtil.isEmpty(personAuthRequest.getPersonInfos().getPersonList())){
            BrmPersonBatchAddResponse brmPersonBatchAddResponse=addPerson(personAuthRequest);
            //判断是否添加人员成功,添加失败直接设置报错信息返回
            if(!brmPersonBatchAddResponse.isSuccess()||brmPersonBatchAddResponse.getCode()==ParamValidEnum.OAUTH_PARAM_NOT_EMPTY_ERROR.getCode()
                    ||brmPersonBatchAddResponse.getCode()==ParamValidEnum.PARAM_NOT_EMPTY_ERROR.getCode()){
                return new PersonAuthResponse(brmPersonBatchAddResponse.getCode(),brmPersonBatchAddResponse.getErrMsg(),false);
            }
        }

        //添加卡片,若未传卡片,不自动生成卡片
        if(personAuthRequest.getCardInfos() != null && !CollectionUtil.isEmpty(personAuthRequest.getCardInfos().getCardList())){
            BrmCardBatchAddResponse brmCardBatchAddResponse=addCard(personAuthRequest);
            if(!brmCardBatchAddResponse.isSuccess()){
                return new PersonAuthResponse(brmCardBatchAddResponse.getCode(),brmCardBatchAddResponse.getErrMsg(),false);
            }
        }

        //人像+卡片授权
        personAuthResponse = personImageAndCardAuth(personAuthRequest);

        return personAuthResponse;
    }

    /**
     * 添加人员
     */
    public BrmPersonBatchAddResponse addPerson(PersonAuthRequest personAuthRequest){
        BrmPersonBatchAddResponse brmPersonBatchAddResponse = new BrmPersonBatchAddResponse();
        ListpersonIds;
        //生成人员id
        try{
            personIds = generatePersonIds(personAuthRequest);
        }catch (BusinessException businessException){
            brmPersonBatchAddResponse.setCode(businessException.getCode());
            brmPersonBatchAddResponse.setSuccess(false);
            brmPersonBatchAddResponse.setErrMsg(businessException.getErrorMsg());
            return brmPersonBatchAddResponse;

        }
        //检验人员id是否生成成功
        if(personIds==null||personIds.size()==0){
            brmPersonBatchAddResponse.setCode(ParamValidEnum.PARAM_NOT_EMPTY_ERROR.getCode());
            brmPersonBatchAddResponse.setErrMsg("Auto generate person id fail.");
            brmPersonBatchAddResponse.setSuccess(false);
            return new BrmPersonBatchAddResponse();
        }

        //设置人员id
        setPersonId(personIds, personAuthRequest);
        //添加人员
        try{
            BrmPersonBatchAddRequest brmPersonBatchAddRequest = personAuthRequest.parseToBrmPersonBatchAddRequest();
            brmPersonBatchAddRequest.setOauthConfigBaseInfo(personAuthRequest.getOauthConfigBaseInfo());
            brmPersonBatchAddResponse = new BrmPersonBatchAddSDK().personBatchAdd(brmPersonBatchAddRequest);
            if(!brmPersonBatchAddResponse.isSuccess()) {
                logger.error("Batch add person fail.");
            }
            logger.info("Batch add person success.");
        }catch (Exception e){
            logger.error("System error");
            e.printStackTrace();
            brmPersonBatchAddResponse.setCode(OauthParamConstant.SYSTEME_RROR.getCode());
            brmPersonBatchAddResponse.setErrMsg("System error");
            brmPersonBatchAddResponse.setSuccess(false);
            return brmPersonBatchAddResponse;
        }
        return brmPersonBatchAddResponse;
    }

    /**
     * 添加卡片
     */
    public BrmCardBatchAddResponse addCard(PersonAuthRequest personAuthRequest){
        BrmCardBatchAddRequest brmCardBatchAddRequest ;
        BrmCardBatchAddResponse brmCardBatchAddResponse= new BrmCardBatchAddResponse();

        //用户未传卡片信息,直接返回,不自动创建卡片
        if(personAuthRequest.getCardInfos() == null || CollectionUtil.isEmpty(personAuthRequest.getCardInfos().getCardList())){
            brmCardBatchAddResponse.setSuccess(false);
            brmCardBatchAddResponse.setCode(ParamValidEnum.OAUTH_PARAM_NOT_EMPTY_ERROR.getCode());
            brmCardBatchAddResponse.setErrMsg("Card info is null, create card fail.");
            return brmCardBatchAddResponse;
        } else {
            //生成卡片ID
            List cardIds = generateCardIds(personAuthRequest);
            //判断卡片ids是否生成成功,失败则直接返回
            if(cardIds==null||cardIds.size()==0){
                brmCardBatchAddResponse.setSuccess(false);
                brmCardBatchAddResponse.setCode(ParamValidEnum.PARAM_NOT_EMPTY_ERROR.getCode());
                brmCardBatchAddResponse.setErrMsg("Auto generate person id fail.");
                return brmCardBatchAddResponse;
            }
            //设置卡片id
            for(int i = 0; i < personAuthRequest.getCardInfos().getCardList().size(); i++){
                personAuthRequest.getCardInfos().getCardList().get(i).setId(cardIds.get(i));
            }
        }
        //添加卡片
        try{
            brmCardBatchAddRequest = personAuthRequest.parseToBrmCardBatchAddRequest();
            brmCardBatchAddRequest.setOauthConfigBaseInfo(personAuthRequest.getOauthConfigBaseInfo());
            brmCardBatchAddResponse = new BrmCardBatchAddSDK().brmBatchCardAdd(brmCardBatchAddRequest);
            if(!brmCardBatchAddResponse.isSuccess()) {
                logger.error("Batch add card fail.");
//                throw new BusinessException(brmCardBatchAddResponse.getCode(), brmCardBatchAddResponse.getErrMsg());
                return brmCardBatchAddResponse;
            }
            logger.info("Batch add card success.");
        }catch (Exception e){
            logger.error("System error");
            e.printStackTrace();
            brmCardBatchAddResponse.setSuccess(false);
            brmCardBatchAddResponse.setCode(OauthParamConstant.SYSTEME_RROR.getCode());
            brmCardBatchAddResponse.setErrMsg("Batch add card fail.");
            return brmCardBatchAddResponse;
        }
        return brmCardBatchAddResponse;

    }

    /**
     * 人像+卡片授权
     */
    public PersonAuthResponse personImageAndCardAuth(PersonAuthRequest personAuthRequest){
        PersonAuthResponse personAuthResponse = null;
        //卡片授权信息和人像授权信息都不传,直接返回
       if(personAuthRequest.getCardAuthInfo() == null && personAuthRequest.getFaceAuthInfo() == null){
           logger.error("Card auth param and person auth param only one can be empty.");
           return new PersonAuthResponse(ParamValidEnum.PARAM_NOT_EMPTY_ERROR.getCode(), ParamValidEnum.PARAM_NOT_EMPTY_ERROR.getErrMsg(), false);
       }
       //人像授权
       if(personAuthRequest.getFaceAuthInfo() != null){
           try{
               Thread.sleep(5000);
           }catch (Exception e){
               e.printStackTrace();
           }
           personAuthResponse=personImageAuth(personAuthRequest);
           if(!personAuthResponse.isSuccess()){
               return personAuthResponse;
           }
       }
        //卡片授权
        if(personAuthRequest.getCardAuthInfo() != null){
            try{
                Thread.sleep(5000);
            }catch (Exception e){
                e.printStackTrace();
            }
            personAuthResponse=cardAuth(personAuthRequest);
        }
       return personAuthResponse;
    }

    /**
     * 批量生成人员id
     * **/
    public List generatePersonIds(PersonAuthRequest personAuthRequest)throws BusinessException{
        List personIds = new ArrayList();

        try{
            //批量生成人员id
            BrmPersonBatchGenIdRequest request = new BrmPersonBatchGenIdRequest(personAuthRequest.getPersonInfos().getPersonList().size());
            request.setOauthConfigBaseInfo(personAuthRequest.getOauthConfigBaseInfo());
            BrmPersonBatchGenIdResponse brmPersonBatchGenIdResponse = new BrmPersonBatchGenIdSDK().personBatchGenId(request);
            if(!brmPersonBatchGenIdResponse.isSuccess()){
                logger.error("Batch generate person id fail.");
                throw new BusinessException(brmPersonBatchGenIdResponse.getCode(),brmPersonBatchGenIdResponse.getErrMsg());
            }
            logger.info("Batch generate person id success.");
            personIds = brmPersonBatchGenIdResponse.getData().getIdList();
        }catch (ClientException clientException){
            logger.error("Batch generate person id fail.");
            clientException.printStackTrace();
            return personIds;
        }

        return personIds;
    }

    /**
     * 设置人员id
     * **/
    public void setPersonId(List personIds, PersonAuthRequest personAuthRequest){
        if(!CollectionUtil.isEmpty(personIds) && !CollectionUtil.isEmpty(personAuthRequest.getPersonInfos().getPersonList())){
            for (int i = 0; i < personAuthRequest.getPersonInfos().getPersonList().size(); i++){
                personAuthRequest.getPersonInfos().getPersonList().get(i).setId(personIds.get(i));
                if(personAuthRequest.getFaceAuthInfo().getOwners()!=null&&i generateCardIds(PersonAuthRequest personAuthRequest){
        List cardIds = new ArrayList();

        try{
            Integer idCount = CollectionUtil.isEmpty(personAuthRequest.getCardInfos().getCardList()) ? 1 : personAuthRequest.getCardInfos().getCardList().size();
            BrmCardBatchGenIdRequest request = new BrmCardBatchGenIdRequest(idCount);
            request.setOauthConfigBaseInfo(personAuthRequest.getOauthConfigBaseInfo());
            BrmCardBatchGenIdResponse response = new BrmCardBatchGenIdSDK().brmCardBatchGenId(request);
            if(!response.isSuccess()){
                logger.error("Batch generate card id fail.");
            }
            logger.info("Batch generate card id success.");
            cardIds = response.getData().getIdList();
        }catch (Exception e){
            logger.error("System error");
            e.printStackTrace();
            return cardIds;
        }

        return cardIds;
    }

    /**
     * 生成一张卡片
     * **/
    public  BrmCard generateCard(PersonAuthRequest personAuthRequest){
        BrmCard brmCard = null;
        try{
            String cardNumber = String.valueOf((int)((Math.random()*9+1)*10000000));
            brmCard = BrmCard.builder().cardNumber(cardNumber).cardType("1").category("1").departmentId(1L).startDate("2022-01-01 00:00:00").endDate("2099-01-01 00:00:00").build();

        }catch (ClientException clientException){
            logger.error("Auto generate cardId fail.");
            clientException.printStackTrace();
        }
        return  brmCard;
    }

    /**
     * 卡片授权
     * **/
    public PersonAuthResponse cardAuth(PersonAuthRequest personAuthRequest){
        PersonAuthResponse personAuthResponse ;

        CardAuthSDK cardAuthSDK = new CardAuthSDK();
        CardAuthRequest cardAuthRequest = personAuthRequest.converToCardAuthRequest();
        cardAuthRequest.setOauthConfigBaseInfo(personAuthRequest.getOauthConfigBaseInfo());
        CardAuthResponse cardAuthResponse = cardAuthSDK.cardAuth(cardAuthRequest);
        if(!cardAuthResponse.isSuccess()){
            logger.info("Card batch auth fail.");
            return new PersonAuthResponse(cardAuthResponse.getCode(),"Card batch auth fail.",false);
        }
        logger.info("Card batch auth success.");
        personAuthResponse = new PersonAuthResponse(cardAuthResponse.getCode(), cardAuthResponse.getErrMsg(), cardAuthResponse.isSuccess());
        return personAuthResponse;
    }

    /**
     * 人像授权
     * **/
    public PersonAuthResponse personImageAuth(PersonAuthRequest personAuthRequest){
        PersonAuthResponse personAuthResponse = null;

        FaceAuthSDK faceAuthSDK = new FaceAuthSDK();
        FaceAuthRequest faceAuthRequest = personAuthRequest.converToFaceAuthRequest();
        faceAuthRequest.setOauthConfigBaseInfo(personAuthRequest.getOauthConfigBaseInfo());
        FaceAuthResponse faceAuthResponse = faceAuthSDK.faceAuth(faceAuthRequest);
        if(!faceAuthResponse.isSuccess()){
            logger.info("Person face auth fail.");
            return new PersonAuthResponse(faceAuthResponse.getCode(),faceAuthResponse.getErrMsg(),false);
        }
        logger.info("Person face auth success.");
        personAuthResponse = new PersonAuthResponse(faceAuthResponse.getCode(), faceAuthResponse.getErrMsg(), faceAuthResponse.isSuccess());
        return personAuthResponse;
    }


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy