package com.heyu.api.controller.certificate;


import com.heyu.api.baidu.handle.certificate.BSocialSecurityCardHandle;
import com.heyu.api.baidu.request.certificate.BSocialSecurityCardRequest;
import com.heyu.api.baidu.response.certificate.BSocialSecurityCardResp;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.resp.certificate.SocialSecurityCardResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * https://console.bce.baidu.com/support/?_=1740219852952&timestamp=1740308886691#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Fsocial_security_card&method=post
 * <p>
 * <p>
 * 社保卡识别
 * <p>
 * <p>
 * 接口描述
 * 支持识别全国各地社保卡，支持识别社会保障卡号、姓名、性别、出生日期、银行卡号、有效期限等8个字段。
 */
@Slf4j
@RestController
@RequestMapping("/socialSecurityCard")
@NotIntercept
public class SocialSecurityCardController extends BaseController {


    @Autowired
    private BSocialSecurityCardHandle bsocialSecurityCardHandle;

    @RequestMapping("/recognize")
    @CacheResult
    public R recognize(BSocialSecurityCardRequest request) {


        SocialSecurityCardResp resp = new SocialSecurityCardResp();

        ApiR<BSocialSecurityCardResp> bR = bsocialSecurityCardHandle.handle(request);

        if (bR.isSuccess()) {


            BSocialSecurityCardResp bSocialSecurityCardResp = bR.getData();

            BSocialSecurityCardResp.WordsResultDTO wordsResultDTO = bSocialSecurityCardResp.getWordsResult();

            resp.setCardNumber(wordsResultDTO.getCardNumber().getWord());    //string	是	卡号
            resp.setName(wordsResultDTO.getName().getWord());//string	是	姓名
            resp.setSex(wordsResultDTO.getSex().getWord());//	string	是	性别
            resp.setSocialSecurityNumber(wordsResultDTO.getSocialSecurityNumber().getWord());//	string	是	社会保障卡号
            resp.setBirthDate(wordsResultDTO.getBirthDate().getWord());//	string	是	出生日期
            resp.setIssueDate(wordsResultDTO.getIssueDate().getWord());//	string	是	签发日期
            resp.setBankCardNumber(wordsResultDTO.getBankCardNumber().getWord());//	string	是	银行卡号
            resp.setExpiryDate(wordsResultDTO.getExpiryDate().getWord());//	string	是	有效期限
            return R.ok().setData(resp);
        }

        return R.error(bR.getErrorMsg());
    }


}
