admin_backend/util/AliyunOpenApi.go
2025-07-29 18:09:37 +08:00

126 lines
4.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// This file is auto-generated, don't edit it. Thanks.
package util
import (
"fmt"
sdk "github.com/alibabacloud-go/cloudauth-20190307/v4/client"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
console "github.com/alibabacloud-go/tea-console/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
credential "github.com/aliyun/credentials-go/credentials"
)
const (
ACCESS_KEY_ID = "LTAI5t8DKMexEjcBH1cCmrp9"
ACCESS_KEY_SECRET = "p0KqKvTarTRXBXcBbUvfqSO9bynrCD"
)
type ClientInterface interface {
}
func IdVerify(UserName, Num string) (_err error) {
// 构建request。
request := &sdk.Id2MetaVerifyRequest{}
request.ParamType = tea.String("normal")
request.UserName = tea.String(UserName)
request.IdentifyNum = tea.String(Num)
// 自动路由服务。
response, _err := Id2MetaVerifyAutoRoute(request)
ret := util.ToJSONString(util.ToMap(response))
if _err != nil {
console.Log(tea.String("最终结果(若此处为空,则所有服务点均异常,请逐步调试):" + tea.StringValue(ret)))
}
return _err
}
// Description:
//
// 主备服务点循环调用,获取到成功结果返回。
func Id2MetaVerifyAutoRoute(request *sdk.Id2MetaVerifyRequest) (_result *sdk.Id2MetaVerifyResponse, err error) {
endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
var lastResponse *sdk.Id2MetaVerifyResponse
for _, endpoint := range endpoints {
func() (_r *sdk.Id2MetaVerifyResponse, _e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
// 调用服务。
response, _e := Id2MetaVerify(endpoint, request)
if _e != nil {
console.Error(tea.String("节点 " + tea.StringValue(endpoint) + " 调用失败,错误信息:" + _e.Error()))
return // 如果调用失败,继续下一个服务点。
}
// 节点调用结果
//ret := util.ToJSONString(util.ToMap(response))
//console.Log(tea.String("节点 " + tea.StringValue(endpoint) + " 结果:" + tea.StringValue(ret) + " "))
// 有一个服务调用成功即返回。
lastResponse = response
if !tea.BoolValue(util.IsUnset(response)) && tea.BoolValue(util.EqualNumber(tea.ToInt(response.StatusCode), tea.Int(200))) {
if !tea.BoolValue(util.IsUnset(response.Body)) && tea.BoolValue(util.EqualString(response.Body.Code, tea.String("200"))) {
return response, nil
}
}
return nil, fmt.Errorf("节点 %s 调用失败,错误码:%s错误信息%s", tea.StringValue(endpoint), tea.StringValue(response.Body.Code), tea.StringValue(response.Body.Message))
}()
}
_result = lastResponse
if lastResponse == nil {
return nil, fmt.Errorf("所有服务点调用失败,请检查网络或服务状态,或联系服务提供商")
}
if !tea.BoolValue(util.EqualString(lastResponse.Body.Code, tea.String("200"))) {
return nil, fmt.Errorf("所有服务点调用失败,错误码:%s错误信息%s", tea.StringValue(lastResponse.Body.Code), tea.StringValue(lastResponse.Body.Message))
}
if !tea.BoolValue(util.EqualString(lastResponse.Body.ResultObject.BizCode, tea.String("1"))) {
return nil, fmt.Errorf("校验失败,返回码:%s;", tea.StringValue(lastResponse.Body.ResultObject.BizCode))
}
return _result, nil
}
// Description:
//
// 获取服务Client实例调用验证方法。
func Id2MetaVerify(endpoint *string, request *sdk.Id2MetaVerifyRequest) (_result *sdk.Id2MetaVerifyResponse, _err error) {
// 获取SDK Client实例。
client := CreateClient(endpoint)
// 构建RuntimeObject
runtime := &util.RuntimeOptions{}
runtime.ReadTimeout = tea.Int(5000)
runtime.ConnectTimeout = tea.Int(5000)
// 连接
_result = &sdk.Id2MetaVerifyResponse{}
_body, _err := client.Id2MetaVerifyWithOptions(request, runtime)
if _err != nil {
return
}
_result = _body
return
}
// Description:
//
// 安全创建服务Client实例。
func CreateClient(endpoint *string) (_result *sdk.Client) {
// 获取Credential工具此工具会从环境变量中读取AccessKey。
credentialConfig := &credential.Config{
Type: tea.String("access_key"),
AccessKeyId: tea.String(ACCESS_KEY_ID),
AccessKeySecret: tea.String(ACCESS_KEY_SECRET),
}
credential, _err := credential.NewCredential(credentialConfig)
if _err != nil {
return _result
}
// 创建SDK Client实例。
apiConfig := &openapi.Config{}
apiConfig.Credential = credential
apiConfig.Endpoint = endpoint
_result = &sdk.Client{}
_result, _ = sdk.NewClient(apiConfig)
return _result
}