package com.heyu.api.controller.certificate;


import com.heyu.api.baidu.handle.certificate.BBusinesslicenseVerificationDetailedHandle;
import com.heyu.api.baidu.request.certificate.BBusinesslicenseVerificationDetailedRequest;
import com.heyu.api.baidu.response.certificate.BBusinesslicenseVerificationDetailedResp;
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.request.certificate.BusinesslicenseVerificationDetailedReq;
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=1742562052573#/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%2Fbusinesslicense_verification_detailed&method=post
 *
 *
 *企业工商信息查询（高。。。
 *
 *
 * 传入企业名称、注册号、统一社会信用代码中的任意一种，具体返回企业全维度信息，包括工商基本信息、分支机构信息、企业变更信息、纳税信
 * 息、联系信息、企业高管信息、经营异常信息、动产抵押信息、曾用名信息、股东信息、行政处罚信息、行政许可信息、股权出资信息、失信信息、
 * 被执行信息等。
 *
 * 注：目前支持工商注册的企业认证，事业单位、律师事务所等信息暂不支持验证，发生工商变更或刚注册的企业信息，预计在企业公示的核准日期
 * T+3个工作日后可进行验证。
 *
 *
 *
 *
 */
@Slf4j
@RestController
@RequestMapping("/businesslicense")
@NotIntercept
public class BusinesslicenseVerificationDetailedController extends BaseController {

    /**
     * 百度云企业工商信息查询（高级版）处理器，封装了对百度云接口的调用细节
     */
    @Autowired
    private BBusinesslicenseVerificationDetailedHandle bBusinesslicenseVerificationDetailedHandle;

    /**
     * 企业工商信息查询（高级版）接口
     * <p>
     * 传入企业名称、注册号、统一社会信用代码中的任意一种（通过 {@code verifyNum} 字段），
     * 调用百度云接口返回企业的全维度信息，包括：
     * <ul>
     *     <li>工商基本信息、分支机构信息、企业变更信息</li>
     *     <li>纳税信息、联系信息、企业高管信息</li>
     *     <li>经营异常信息、动产抵押信息、曾用名信息</li>
     *     <li>股东信息、行政处罚信息、行政许可信息</li>
     *     <li>股权出资信息、失信信息、被执行信息等</li>
     * </ul>
     * 注意：目前仅支持工商注册的企业认证，事业单位、律师事务所等暂不支持；
     * 发生工商变更或刚注册的企业，预计在公示核准日期 T+3 个工作日后才可查询。
     * <p>
     * 使用 {@link CacheResult} 注解对相同入参的请求结果进行缓存，避免重复调用百度云接口浪费配额。
     *
     * @param request 企业工商信息查询请求参数，包含企业名称 / 注册号 / 统一社会信用代码中的任意一种
     * @return 查询成功时返回包含企业全维度信息的成功响应；失败时返回带错误信息的错误响应
     */
    @RequestMapping("/berification")
    @CacheResult
    public R recognize(BusinesslicenseVerificationDetailedReq request) {
        // 将业务请求参数转换为百度云接口所需的请求对象
        BBusinesslicenseVerificationDetailedRequest bBusinesslicenseVerificationDetailedRequest = new BBusinesslicenseVerificationDetailedRequest();
        // 企业名称 / 注册号 / 统一社会信用代码（任意一种）
        bBusinesslicenseVerificationDetailedRequest.setVerifyNum(request.getVerifyNum());
        // 调用百度云企业工商信息查询接口
        ApiR<BBusinesslicenseVerificationDetailedResp> bR = bBusinesslicenseVerificationDetailedHandle.handle(bBusinesslicenseVerificationDetailedRequest);
        if (bR.isSuccess()) {
            // 查询成功，直接将百度云返回的 wordsResult（企业全维度信息）作为业务数据返回
            BBusinesslicenseVerificationDetailedResp bBusinesslicenseVerificationDetailedResp = bR.getData();
            return R.ok().setData(bBusinesslicenseVerificationDetailedResp.getWordsResult());
        }

        // 查询失败，返回携带百度云错误信息的错误响应
        return R.error(bR.getErrorMsg());
    }
}
