// Code generated by lark_sdk_gen. DO NOT EDIT.
/**
 * Copyright 2022 chyroc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package lark

import (
	"context"
)

// BatchGetUserByIDOld 根据用户邮箱或手机号查询用户 open_id 和 user_id, 支持批量查询。
//
// 调用该接口需要申请 `通过手机号或邮箱获取用户 ID` 权限。 只能查询到应用可用性范围内的用户 ID, 不在范围内的用户会表现为不存在。
//
// doc: https://open.feishu.cn/document/ukTMukTMukTM/uUzMyUjL1MjM14SNzITN
func (r *ContactService) BatchGetUserByIDOld(ctx context.Context, request *BatchGetUserByIDOldReq, options ...MethodOptionFunc) (*BatchGetUserByIDOldResp, *Response, error) {
	if r.cli.mock.mockContactBatchGetUserByIDOld != nil {
		r.cli.Log(ctx, LogLevelDebug, "[lark] Contact#BatchGetUserByIDOld mock enable")
		return r.cli.mock.mockContactBatchGetUserByIDOld(ctx, request, options...)
	}

	req := &RawRequestReq{
		Scope:                 "Contact",
		API:                   "BatchGetUserByIDOld",
		Method:                "GET",
		URL:                   r.cli.openBaseURL + "/open-apis/user/v1/batch_get_id",
		Body:                  request,
		MethodOption:          newMethodOption(options),
		NeedTenantAccessToken: true,
	}
	resp := new(batchGetUserByIDOldResp)

	response, err := r.cli.RawRequest(ctx, req, resp)
	return resp.Data, response, err
}

// MockContactBatchGetUserByIDOld mock ContactBatchGetUserByIDOld method
func (r *Mock) MockContactBatchGetUserByIDOld(f func(ctx context.Context, request *BatchGetUserByIDOldReq, options ...MethodOptionFunc) (*BatchGetUserByIDOldResp, *Response, error)) {
	r.mockContactBatchGetUserByIDOld = f
}

// UnMockContactBatchGetUserByIDOld un-mock ContactBatchGetUserByIDOld method
func (r *Mock) UnMockContactBatchGetUserByIDOld() {
	r.mockContactBatchGetUserByIDOld = nil
}

// BatchGetUserByIDOldReq ...
type BatchGetUserByIDOldReq struct {
	Emails  *string `query:"emails" json:"-"`  // 要查询的用户邮箱, 最多 50 条, 多个邮箱以 & 隔开。
	Mobiles *string `query:"mobiles" json:"-"` // 要查询的用户手机号, 最多 50 条, 多个手机号以 & 隔开。 非中国大陆地区的手机号需要添加以 “+” 开头的国家 / 地区代码, 并且需要进行 URL 转义。
}

// BatchGetUserByIDOldResp ...
type BatchGetUserByIDOldResp struct {
	EmailUsers      map[string][]*BatchGetUserByIDOldRespEmailUser `json:"email_users,omitempty"`       // 根据邮箱查询到的用户, key 为邮箱, value 为查询到用户的 array。 目前同一个邮箱最多只能查询到一个用户。
	EmailsNotExist  []string                                       `json:"emails_not_exist,omitempty"`  // 没有匹配记录的邮箱。
	MobileUsers     map[string][]*BatchGetUserByIDOldRespEmailUser `json:"mobile_users,omitempty"`      // 根据手机号查询到的用户, key 为手机号, value 为查询到用户的 array。 目前同一个手机号最多只能查询到一个用户。
	MobilesNotExist []string                                       `json:"mobiles_not_exist,omitempty"` // 没有匹配记录的手机号。
}

// BatchGetUserByIDOldRespEmailUser ...
type BatchGetUserByIDOldRespEmailUser struct {
	OpenID string `json:"open_id,omitempty"` // 用户的 open_id。[open_id描述](https://open.feishu.cn/document/home/user-identity-introduction/open-id)
	UserID string `json:"user_id,omitempty"` // 用户的 user_id。 只有已申请 `获取用户UserID` 权限的企业自建应用返回此字段。[user_id描述](https://open.feishu.cn/document/home/user-identity-introduction/user-id)
}

// batchGetUserByIDOldResp ...
type batchGetUserByIDOldResp struct {
	Code  int64                    `json:"code,omitempty"` // 返回码, 非 0 表示失败。
	Msg   string                   `json:"msg,omitempty"`  // 对返回码的文本描述。
	Data  *BatchGetUserByIDOldResp `json:"data,omitempty"`
	Error *ErrorDetail             `json:"error,omitempty"`
}
