package tencentNlu import ( "context" "errors" "fmt" "speech-nlu-parse/global" "speech-nlu-parse/model" "speech-nlu-parse/pkg/logger" "speech-nlu-parse/pkg/proto" "time" "google.golang.org/grpc" ) func GetAuthorizationByGRPC(macWifi, requestId, mid, vender string) (*model.TokenSearchResponse, error) { // consul注册中心获取host port serviceInfo, err := global.ConsulObj.GetService(global.ServiceSetting.Dmsdk, "") if err != nil { return nil, err } startTime := time.Now() // conn, err := grpc.Dial(fmt.Sprintf("%s:%d", global.AuthSetting.Ip, global.AuthSetting.GrpcPort), grpc.WithInsecure()) conn, err := grpc.Dial(fmt.Sprintf("%s:%d", serviceInfo.GetAddress(), serviceInfo.GetPort()), grpc.WithInsecure(), grpc.WithNoProxy()) if err != nil { return nil, err } defer conn.Close() c := proto.NewTokenSearchClient(conn) ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) defer cancel() req := proto.TokenSearchRequest{Mac: macWifi, RequestId: requestId, Mid: mid, Vender: vender} global.Logger.WithFields(logger.Fields{"data": map[string]interface{}{"tokenSearchRequest": &req}, "mac": macWifi, "mid": mid, "vender": vender, "requestId": requestId}).Info("GetAuthorizationByGRPC request") rep, err := c.TokenSearchHandle(ctx, &req) if err != nil { return nil, err } // 转换 tokenSearchResponse, err := GrpcTokenSearchResponse2ModelTokenSearchResponse(rep) if err != nil { return nil, err } cost := time.Now().Sub(startTime).Milliseconds() global.Logger.WithFields(logger.Fields{"data": map[string]interface{}{"tokenSearchResponse": tokenSearchResponse}, "mac": macWifi, "mid": mid, "vender": vender, "cost": cost, "requestId": requestId}).Info("GetAuthorizationByGRPC response") return tokenSearchResponse, nil } // 结构体转换 func GrpcTokenSearchResponse2ModelTokenSearchResponse(grpcTokenSearchResponse *proto.TokenSearchResponse) (*model.TokenSearchResponse, error) { if grpcTokenSearchResponse == nil { return nil, nil } var modelTokenSearchResponse model.TokenSearchResponse if grpcTokenSearchResponse.Status == nil { return nil, errors.New("grpcTokenSearchResponse.Status is nil.") } modelTokenSearchResponse.Status.Code = grpcTokenSearchResponse.Status.Code modelTokenSearchResponse.Status.Msg = grpcTokenSearchResponse.Status.Msg if grpcTokenSearchResponse.Data == nil { return nil, errors.New("grpcTokenSearchResponse.Data is nil.") } modelTokenSearchResponse.Data.Dsn = grpcTokenSearchResponse.Data.Dsn modelTokenSearchResponse.Data.Authorization = grpcTokenSearchResponse.Data.Authorization modelTokenSearchResponse.Data.AccessToken = grpcTokenSearchResponse.Data.AccessToken modelTokenSearchResponse.Data.AppKey = grpcTokenSearchResponse.Data.AppKey modelTokenSearchResponse.Data.Status = grpcTokenSearchResponse.Data.Status modelTokenSearchResponse.Data.UriType = grpcTokenSearchResponse.Data.UriType return &modelTokenSearchResponse, nil }