---
name: "getUserInfo"
mode: "api"
versionRequirements:
  - { name: "@ray-js/lock-sdk", version: "1.0.0" }
title: "getUserInfo - 获取用户详细信息。"
summary: "获取用户详细信息。"
---

## getUserInfo

> [VERSION] @ray-js/lock-sdk >= 1.0.0

### 描述

获取单个用户详情。

### 参数

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `userId` | `string` | 是 | 用户 id |

### 返回值

类型: `Promise<UserInfo>`

用户详情

##### UserInfo

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `userId` | `string` | 云端用户 id |
| `lockUserId` | `number` | 锁端用户 id |
| `avatarUrl` | `string` | 头像 URL |
| `backHomeNotifyAttr` | `number` | 回家通知相关属性位 |
| `effectiveFlag` | `number` | 生效状态标记 |
| `nickName` | `string` | 昵称 |
| `offlineUnlock` | `boolean` | 是否支持离线开锁 |
| `timeScheduleInfo` | `Object` | 生效时间段与重复规则 |
| `unlockDetails` | `Object[]` | 按开锁方式类型分组的明细 |
| `userContact` | `string` | 用户联系方式（账号） |
| `userType` | `10 \| 20 \| 30 \| 40 \| 50` | 用户类型 |
| `isFamilyUser` | `boolean` | 是否为家庭体系成员 |

##### UserInfo.timeScheduleInfo 的属性

| 属性 | 类型 | 必填 | 默认值 | 描述 |
| --- | --- | --- | --- | --- |
| `effectiveTime` | `number` | 是 | - | 生效时间（毫秒时间戳） |
| `expiredTime` | `number` | 是 | - | 失效时间（毫秒时间戳） |
| `permanent` | `boolean` | 是 | - | 是否永久有效 |
| `scheduleDetails` | `Object` | 否 | - | 非永久时的重复明细 |


##### UserInfo.timeScheduleInfo.scheduleDetails 的属性

| 属性 | 类型 | 必填 | 默认值 | 描述 |
| --- | --- | --- | --- | --- |
| `repeat` | `boolean` | 是 | - | 是否按周重复 |
| `effectiveTime` | `number` | 是 | - | 每日生效时刻（从 0 点算起的分钟） |
| `invalidTime` | `number` | 是 | - | 每日失效时刻（分钟） |
| `timeZoneId` | `string` | 是 | - | 时区 id |
| `weeks` | `Week` | 是 | - | 周位图 |


##### UserInfo.unlockDetails[] 的属性

| 属性 | 类型 | 必填 | 默认值 | 描述 |
| --- | --- | --- | --- | --- |
| `count` | `number` | 是 | - | 该组条数 |
| `dpCode` | `string` | 是 | - | 该组对应 DP code |
| `dpId` | `number` | 是 | - | 该组对应 DP id |
| `type` | `UnlockMethodType` | 是 | - | 开锁方式类型 |
| `unlockList` | `UnlockMethodBaseInfo[]` | 是 | - | 组内各开锁方式 |


### 引用对象

##### `type` Week

周重复位图：下标 0–6 对应周日–周六，0 不生效 1 生效

```typescript
export type Week = [
  BitStatus,
  BitStatus,
  BitStatus,
  BitStatus,
  BitStatus,
  BitStatus,
  BitStatus,
];
```

##### `type` UnlockMethodType

开锁方式业务类型字面量

```typescript
export type UnlockMethodType =
  | "finger"
  | "face"
  | "password"
  | "card"
  | "fingerVein"
  | "hand"
  | "eye";
```

##### `interface` UnlockMethodBaseInfo

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `unlockId` | `number` | 开锁方式硬件/实例 id |
| `unlockName` | `string` | 开锁方式名称 |
| `isBound` | `boolean` | 是否已与云端用户绑定 |
| `id` | `number` | 云端分配的开锁方式记录 id |
| `photoUnlock` | `boolean` | 是否图片类开锁方式 |
| `isSpecial` | `boolean` | 是否特殊开锁方式（通知等扩展） |

##### `type` BitStatus

位开关：0 关、1 开 / Single-bit flag

```typescript
export type BitStatus = 0 | 1;
```


### 示例代码

#### 示例

```ts
import { getUserInfo } from '@ray-js/lock-sdk';
const info = await getUserInfo({ userId: 'user_001' });
```
