软件协议文档
终端设备协议文档
功能&协议池(所有功能协议)
MQTT协议文档
HTTP协议文档
微光TLV协议文档
微光卡&码协议
功能模块&UI文档
人脸机
VF105
门禁标品MQTT协议文档(DejaOS版本)
Access control standard MQTT protocol document
VF系列HTTP协议接口文档V1.0.28(Vbar版本)
VF系列MQTT协议文档V1.37.0(Vbar版本)
VF系列-协议模式下通讯协议文档V1.0.4(Vbar版本)
VF系列MQTT协议文档V1.37.3(Vbar版)
VF系列HTTP协议文档_V1.37.2(Vbar版本)
VF系列HTTP协议文档_V1.37.5(Vbar版本)
门禁标品配置项文档(DejaOS版本)
VF-MQTT 协议文档_V1.1.37.13(Vbar版本)
VF203
门禁标品MQTT协议文档(DejaOS版本)
VF系列HTTP协议接口文档V1.0.28(Vbar版本)
VF系列-协议模式下通讯协议文档V1.0.4(Vbar版本)
VF系列-MQTT协议文档V1.37.2(Vbar版本)
VF 系列 HTTP 协议接口文档-V1.37.1(Vbar版本)
VF系列-MQTT协议文档V1.37.11(Vbar版本)
VF106
门禁标品MQTT协议文档(Android版本)
Access control standard MQTT protocol document
VF114
门禁标品MQTT协议文档(DejaOS版本)
VF系列HTTP协议接口文档V1.0.28(Vbar版本)
VF系列-协议模式下通讯协议文档V1.0.4(Vbar版本)
VF205
门禁标品MQTT协议文档(DejaOS版本)
VF系列HTTP协议接口文档V1.0.28(Vbar版本)
VF系列-协议模式下通讯协议文档V1.0.4(Vbar版本)
VF202
门禁标品MQTT协议文档(DejaOS版)
门禁标品配置项文档(DejaOS版本)
VF107
MQTT Protocol Documentation(DejaOS Version)
门禁标品MQTT协议文档(DejaOS版)
门禁标品配置项文档(DejaOS版本)
VF124
门禁标品MQTT协议文档(DejaOS版)
门禁标品配置项文档(DejaOS版本)
读头
EE200
读头标品TLV通讯协议
Read header standard TLV communication protocol
读头标品TLV通讯协议V3.10(Vbar版本)
微光RS485一拖多协议V0.7(Vbar版)
TX200
读头标品TLV通讯协议
Read header standard TLV communication protocol
QT960
读头标品TLV通讯协议
Read header standard TLV communication protocol
QT660
读头标品TLV通讯协议
Read header standard TLV communication protocol
Q340
读头标品TLV通讯协议
Read header standard TLV communication protocol
M300
读头标品TLV通讯协议
Read header standard TLV communication protocol
读头标品TLV通讯协议V3.10(Vbar版本)
JL7000
读头标品TLV通讯协议
Read header standard TLV communication protocol
Q350
读头标品TLV通讯协议
Read header standard TLV communication protocol
MU86
读头标品TLV通讯协议
Read header standard TLV communication protocol
读头标品TLV通讯协议V3.10(Vbar版本)
MET
读头标品TLV通讯协议
Read header standard TLV communication protocol
扫码器TCP/HTT通讯协议V1.0(Vbar版本)
读头标品TLV通讯协议V3.10(Vbar版本)
M350
读头标品TLV通讯协议
Read header standard TLV communication protocol
读头标品TLV通讯协议V3.10(Vbar版本)
扫码器TCP/HTT通讯协议V1.0(Vbar版本)
DW200
读头标品TLV通讯协议(DejaOS版本)
Read header standard TLV communication protocol
读头标品HTTP&TCP协议文档(DejaOS版本)
读头标品HTTP&TCP协议文档(Vbar版本)
读头标品TLV通讯协议V3.10(Vbar版)
读头标品RS485一拖多协议V0.7(Vbar版本)
M340
读头标品TLV通讯协议
Read header standard TLV communication protocol
CR90
刷卡模块通信协议v3.0
CR90指令文档
微光指令:0x60 蓝牙设备控制
1.7/2.x扫码器配置字段说明文档
3.1 扫码器新配置字段说明
门禁
DW200
门禁标品MQTT协议文档-V1(DejaOS版本)
Access control standard MQTT protocol document
门禁扫码器MQTT协议文档(Vbar版本)
DW200 门禁系统配置项文档(DejaOS版本)
门禁标品MQTT协议文档-V2(DejaOS版本)
dw205配置项临时
MU86
门禁20180820 MQTT协议文档V1.0.2(Vbar版)
Q350
门禁20180820 MQTT协议文档V1.0.2(Vbar版)
MET
门禁20180820 MQTT协议文档V1.0.2(Vbar版)
M350
门禁标品MQTT协议文档
Access control standard MQTT protocol document
门禁20180820 MQTT协议V1.0.1(Vbar版本)
门禁20180820 MQTT协议文档V1.0.2(Vbar版本)
MP86
门禁20180820 MQTT协议文档V1.0.2(Vbar版本)
S450
MQTT协议V1.0.0
DW205
门禁标品MQTT协议文档-V2(DejaOS版本)
Access Standard Product MQTT Protocol-V2 (DejaOS Version)
DW205 门禁系统配置项文档(DejaOS版本)
控制板
CC104
控制板标品MQTT协议文档
Control board standard MQTT protocol documentation
CC101
控制板标品MQTT协议文档
CC101标品20211101MQTT协议V3.6(Vbar版本)
平台服务协议文档
网关服务接口定义
门禁应用接口定义
工具文档
多弦产品API签名安全规则
海外锁
app和后台的mqtt协议
凡汐应用接口定义
文档
-
+
首页
凡汐应用接口定义
# 一.概述 凡汐考勤系统是一套面向企业的门禁与考勤一体化 SaaS 平台。平台能力大致分为两类:一是设备接入与管控,通过 MQTT 等通道对接人脸、二维码、读卡器等多款门禁设备,并由服务端统一编排权限、凭证与指令下发;二是门禁与考勤基础业务,提供用户与组织、设备与门控、权限组与凭证、访客与审批、通行记录与考勤统计等一整套业务接口,便于企业自建门户或与现有 HR/办公系统对接。 本文档主要说明凡汐考勤系统对外提供的 HTTP API,供第三方或自有业务系统调用。平台已集成多款门禁协议设备,接口以业务资源为中心组织(如用户、设备、权限、访客、通行与考勤等)。 接口约定:当前对外 HTTP 接口以 GET、POST 为主(具体以各接口说明为准)。 多租户与安全:凡汐考勤系统支持多租户隔离,租户仅能访问本租户下的数据。调用方需携带租户标识(如 AppKey / 租户维度凭证,以实际对接文档为准),并配合服务端要求的签名或令牌机制(如 HMAC、Token 等,以实现为准)保证请求身份与防篡改。 # 二.接口 ## 1.登录注册模块 ### 1.1 注册 > 基础信息 **路径:** /saas/webadmin/login/userRegister **请求方法:** POST > 请求参数 **Body:** | 参数名 | 必填 | 类型 | 备注 | | --- | --- | --- | --- | | emailOrPhoneType | 是 | string | 邮箱或手机: email、phone | | email | 否 | string | 邮箱 (邮箱手机不可都为空)| |phone | 否 | string | 手机 (邮箱手机不可都为空)| | password | 是 | string | 密码 | | name | 是 | string |姓名 | | code | 是 | string | 验证码 | | jsCode | 否 | string | 获取openid的jscode | | appId | 否 | string | 小程序appid | **Body示例:** ```json { "emailOrPhoneType": "", "email": "", "phone": "", "password": "", "name": "", "code": "", "jsCode": "", "appId": "" } ``` > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ |------------ | ------------ | ------------ | | code | 是 | integer | 结果状态码(成功:1 失败:0) | | msg | 是 | string | 结果描述信息 | | data | 是 | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", //用户id "token": "", //用户token "name": "", //用户名 "extra": {}, "type": "" //用户类型,比如 webadmin,service,app,mini-program等 } } ``` --- ### 1.2 登录 > 基础信息 **路径:** /saas/webadmin/login/signIn **请求方法:** GET > 请求参数 **Query:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | emailOrPhoneType | 是 | string | 邮箱或手机: email、phone | | email | 否 | string | 邮箱(邮箱手机不可都为空) | | phone | 否 | string | 手机(邮箱手机不可都为空) | | password | 是 | string | 密码 | | jsCode | 否 | string | 获取openid的jscode | | appId | 否 | string | 小程序appid | > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ |------------ | ------------ | ------------ | | code | 是 | integer | 结果状态码(成功:1 失败:0) | | msg | 是 | string | 结果描述信息 | | data | 是 | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "",//用户id "token": "",//用户token "name": "",//用户名 "extra": {}, "type": ""//用户类型,比如 webadmin,service,app,mini-program等 } } ``` --- ### 1.3 忘记密码--流程1--验证邮箱验证码 > 基础信息 **路径:** /saas/webadmin/login/forgetPassword **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ |------------ | ------------ | ------------ | | emailOrPhoneType | 是 | string | 邮箱或手机: email、phone | | email | 否 | string | 邮箱 (邮箱手机不可都为空)| | phone | 否 | string | 手机 (邮箱手机不可都为空)| | code | 是 | string | 验证码 | | newPassword | 是 | string | 新密码 | **Body示例:** ```json { "emailOrPhoneType": "", "email": "", "phone": "", "code": "", "newPassword": "" } ``` > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | code | 是 | integer | 结果状态码(成功:1 失败:0) | | msg | 是 | string | 结果描述信息 | | data | 是 | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 1.4 发送邮箱验证码 > 基础信息 **路径:** /saas/webadmin/email/mailCode **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ |------------ | ------------ | | email | 是 | string | 邮箱 | | type | 是 | string | 0:saas找回密码 1:saas注册租户 2:验证手机号 4:修改手机号 7:修改密码 8:修改组织名称 9:验证码登录 | **Body示例:** ```json { "email": "", "type": "" } ``` > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | code | 是 | integer | 结果状态码(成功:1 失败:0) | | msg | 是 | string | 结果描述信息 | | data | 是 | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 1.5 发送短信码 > 基础信息 **路径:** /saas/webadmin/sms/smsCode **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | phone | 是 | string | 手机 | | type | 是 | string | 0 saas找回密码 1saas注册租户 2验证手机号 4 修改手机号 7修改密码 8 修改组织名称 9验证码登录 | **Body示例:** ```json { "phone": "", "type": "" } ``` > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | code | 是 | integer | 结果状态码(成功:1 失败:0) | | msg | 是 | string | 结果描述信息 | | data | 是 | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 1.6 获取系统配置 > 基础信息 **路径:** /saas/webadmin/config/get **请求方法:** GET > 请求参数 **Headers:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | Authorization | 认证Token"" | 是 | 认证Token | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ## 2.用户管理 ### 2.1 新增人员 > 基础信息 **路径:** /saas/webadmin/user/insert **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | deptId | 是 | string | 组织id | | type | 是 | integer | 人员在租户中的类型:0 普通人员、1 超级管理员--组织的创建者、2 系统管理--所有功能 4 管理员--要选择菜单 | | menuIds | 否 | string | 多个菜单id,以逗号拼接 1,2,3 | | name | 是 | string | 姓名 | | email | 否 | string | 邮箱 (邮箱手机号不可同时为空)| | phone | 否 | string | 手机(邮箱手机号不可同时为空) | | state | 否 | integer | 状态:0 禁用、1 启用 | | password | 否 | string | 自定义密码 | | remark | 否 | string | 备注 | | permissionGroupId | 否 | string | 权限组id | | permissionGroupNames | 否 | array | 权限组名(人员导入时使用) | | qrCodeValues | 否 | array | 二维码凭证值(人员导入时使用) | | cardValues | 否 | array | 卡片凭证值(人员导入时使用) | | extra | 否 | string | 自定义字段数据,json:{key:value} | | employeeNumber | 否 | string | 工号 | | positionId | 否 | string | 职位ID | | inviteCode | 否 | string | 邀请码 | | avatarId | 否 | string | 头像id | | superviseId | 否 | string | 直属上级Id | | id | 是 | string | 人员id(北向使用) | | tenantId | 是 | string | 租户id(人员通过邀请码加入人员时使用) | **Body示例:** ```json { "deptId": "", "type": 0, "menuIds": "", "name": "", "email": "", "phone": "", "state": 0, "password": "", "remark": "", "permissionGroupId": "", "permissionGroupNames": [ "" ], "qrCodeValues": [ "" ], "cardValues": [ "" ], "extra": "", "employeeNumber": "", "positionId": "", "inviteCode": "", "avatarId": "", "superviseId": "", "id": "", "tenantId": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 2.2 生成邀请码 > 基础信息 **路径:** /saas/webadmin/inviteCode/createInviteCode **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ |------------ | ------------ | | permissionGroupId | 否 | string | 权限组Id | | deptId | 是 | string | 组织Id | | startDate | 是 | string | 邀请码有效开始时间 | | endDate | 是 | string | 邀请码有效结束时间 | **Body示例:** ```json { "permissionGroupId": "", "deptId": "", "startDate": "", "endDate": "" } ``` > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ |------------ | ------------ | | code | 是 | integer | 结果状态码(成功:1 失败:0) | | msg | 是 | string | 结果描述信息 | | data | 是 | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 2.3 审核人员加入申请 > 基础信息 **路径:** /saas/webadmin/inviteCode/approvalUsers **请求方法:** POST > 请求参数 **Body:** | 名称 |必填| 类型 | 备注 | | ------------ | ------------ |------------ | ------------ | | deptId | 否 | string | 组织id | | type | 否 | integer | 人员在租户中的类型:0: 普通人员、1: 超级管理员(组织的创建者)、2: 系统管理(所有功能)、4:管理员(要选择菜单) | | menuIds | 否 | string | 多个菜单id,以逗号拼接 1,2,3 | | name | 否 | string | 姓名 | | email | 否 | string | 邮箱(邮箱和手机号不可同时为空) | | phone | 否 | string | 手机 (邮箱和手机号不可同时为空)| | state | 否 | integer | 状态:0 禁用、1 启用 | | password | 否 | string | 自定义密码 | | remark | 否 | string | 备注 | | permissionGroupId | 否 | string | 权限组id | | permissionGroupNames | 否 | array | 权限组名(人员导入时使用) | | qrCodeValues | 否 | array | 二维码凭证值(人员导入时使用) | | cardValues | 否 | array | 卡片凭证值(人员导入时使用) | | extra | 否 | string | 自定义字段数据,json:{key:value} | | employeeNumber | 否 | string | 工号 | | positionId | 否 | string | 职位ID | | inviteCode | 否 | string | 邀请码 | | avatarId | 否 | string | 头像id | | superviseId | 否 | string | 直属上级Id | | id | 是 | string | id | | approvalStatus | 是 | integer | 是否通过 0-通过 1-不通过 | **Body示例:** ```json { "deptId": "", "type": 0, "menuIds": "", "name": "", "email": "", "phone": "", "state": 0, "password": "", "remark": "", "permissionGroupId": "", "permissionGroupNames": [ "" ], "qrCodeValues": [ "" ], "cardValues": [ "" ], "extra": "", "employeeNumber": "", "positionId": "", "inviteCode": "", "avatarId": "", "superviseId": "", "id": "", "approvalStatus": 0 } ``` > 返回数据 **Headers:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | content-type | application/json;charset=UTF-8 | 否 | | **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 2.4 企业邀请列表 > 基础信息 **路径:** /saas/webadmin/myInfo/activeList **请求方法:** GET > 请求参数 > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ |------------ | ------------ | | code | 是 | integer | 结果状态码(成功:1 失败:0) | | msg | 是 | string | 结果描述信息 | | data | 是 | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "id": "", "createById": "", "createTime": { "dateTime": "", //The local date-time "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "tenantId": "", //租户id "name": "", //消息名称 "type": 0, //类型::0 组织邀请、1 考勤申请待审批、2、考勤申请已审批 3 通行 "recordId": "", //关联记录id "recordData": "", //关联消息内容 "userId": "", //用户名称 "userName": "", //是否已读:0 未读、1 已读、2已失效 "isRead": 0, //组织邀请是否同意,0 未处理、1 已同意、2 已拒绝 、3 已失效 "isActive": 0, "isApproval": 0 } ], "pageable": {}, "total": 0 } } ``` --- ### 2.5 查询所有用户 > 基础信息 **路径:** /saas/webadmin/user/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | Integer | 否 | 第几页(缺省1) | | size | Integer | 否 | 每页大小(缺省10) | | startTime | String | 否 | | | endTime | String | 否 | | | deptId | String | 否 | 组织Id | | deptIdLink | String | 否 | 组织idLink | | keyword | String | 否 | 关键字--同时检索名称、邮箱 | | name | String | 否 | 姓名 | | phone | String | 否 | 手机号 | | email | String | 否 | 邮箱 | | isActive | String | 否 | 状态 | | userIdList[0] | String | 否 | 人员idList | > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ |------------ | ------------ | | code | 是| integer | 结果状态码(成功:1 失败:0) | | msg | 是| string | 结果描述信息 | | data | 是| object | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": {} } ``` --- ### 2.6 查询组织下--子组织列表 和 用户列表 > 基础信息 **路径:** /saas/webadmin/user/findChildren **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | deptId | string | 是 | 部门Id | > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ |------------ | ------------ | | code | 是 | integer | 结果状态码(成功:1 失败:0)| | msg | 是 | string | 结果描述信息 | | data | 是 | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "userList": [ //人员列表 { "userId": "", //人员ID "userName": "", //人员名称 "userEmail": "", //人员邮箱 "userPhone": "", //人员手机 "deptId": "", // 组织id "deptName": "", //组织Name "deptIdLink": "" //组织id链接 } ], "deptList": [ //分组列表 { "deptId": "", //人员组ID "deptName": "", //人员组名称 "userCount": 0 //人员数量 } ] } } ``` --- ### 2.7 查询部门下--人员列表(含子分组人员)、可姓名模糊搜索 > 基础信息 **路径:** /saas/webadmin/user/findUsers **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | deptId | string | 是 | 部门id | | userName | string | 否 | 人员姓名 | > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ |------------ | ------------ | | code | 是 | integer | 结果状态码(成功:1 失败:0) | | msg | 是 | string | 结果描述信息 | | data | 是 | array | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "userId": "", //人员ID "userName": "", //人员名称 "userEmail": "", //人员邮箱 "userPhone": "", //人员手机 "deptId": "", //组织id "deptName": "", //组织Name "deptIdLink": "" //组织id链接 } ] } ``` --- ### 2.8 人员详情--包含 用户租户关系、凭证 > 基础信息 **路径:** /saas/webadmin/user/find **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 否 | 人员id | > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ |------------ | ------------ | | code | 是 | integer | 结果状态码(成功:1 失败:0) | | msg | 是 | string | 结果描述信息 | | data | 是 | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", //用户id "name": "", //用户姓名 "phone": "", //手机号 "email": "", //邮箱 "createTime": "", //创建时间 "state": 0, //状态;1启用;0禁用 "remark": "", //备注 "avatar": "", //头像地址 "type": 0, //人员类型: 1:超管(超管在用户编辑中不可用);2:子管理员;0:普通人员; "voucherEntityList": [ // 凭证列表 { "id": "", "createById": "", "createTime": "", //创建时间 2018-01-01 01:01:01 "updateById": "", "updateTime": "", "tenantId": "", //租户id "userId": "", //所属人员id "name": "", //名称 "voucherType": "", //凭证类型:透传吗--100、动态码--104、普通pin--400、临时pin--401、扇区加密卡--202、人脸--300、蓝牙--600、指纹--500 "value": "", //值,参数;编号;卡号;人脸编号;自定义编号 "deviceModel": "" //设备型号(不同型号的指纹凭证不同) } ], "deptId": "", //组织id "deptIdLink": "", //组织id Link(下划线"_"隔开) "deptName": "", //组织名称 "menuIds": "", //多个菜单id,以逗号拼接 1,2,3 "employeeNumber": "", //工号 "position": "", //职位 "positionId": "", //职位id "supervise": "", //直属上级 "superviseId": "" //直属上级Id } } ``` --- ### 2.9 人员详情--仅用户 > 基础信息 **路径:** /saas/webadmin/user/findById **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 否 | 用户id | > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | code | 是 | integer | 结果状态码(成功:1 失败:0) | | msg | 是 | string | 结果描述信息 | | data | 是 | object | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "type": 0, //用户类型 0:访客、1:组织人员 "name": "", //姓名 "email": "", //邮箱 "phone": "", //手机 "idCardNum": "", //身份证号 "password": "", //密码 "sex": 0, //性别;1男2女0未设置 "remark": "", //备注 "isRegister": 0, //是否注册 "appPhoneType": "", //手机类型:android 、ios "appPhoneToken": "", //手机推送Token:google推送使用 "inviteCode": "", "openId": "", //小程序openId "modelConfig": "", //小程序模块显示配置例如:true为展示,false为不展示 "permissionIds": "", "avatarId": "" } } ``` --- ### 2.10 更新用户信息 > 基础信息 **路径:** /saas/webadmin/user/update **请求方法:** PUT > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | deptId | 是 | string | 部门id | | type | 是 | integer | 人员在租户中的类型:0 普通人员、1 超级管理员--组织的创建者、2 系统管理--所有功能 4 管理员--要选择菜单 | | menuIds | 否 | string | 多个菜单id,以逗号拼接 1,2,3 | | name | 是 | string | 姓名 | | email | 否 | string | 邮箱 (邮箱和手机号不可同时为空)| | phone | 否 | string | 手机(邮箱和手机号不可同时为空) | | state | 否 | integer | 状态:0 禁用、1 启用 | | password | 否 | string | 自定义密码 | | remark | 否 | string | 备注 | | permissionGroupId | 否 | string | 权限组id | | permissionGroupNames | 否 | array | 权限组名(人员导入时使用) | | qrCodeValues | 否 | array | 二维码凭证值(人员导入时使用) | | cardValues | 否 | array | 卡片凭证值(人员导入时使用) | | extra | 否 | string | 自定义字段数据,json:{key:value} | | employeeNumber | 否 | string | 工号 | | positionId | 否 | string | 职位ID | | inviteCode | 否 | string | 邀请码 | | avatarId | 否 | string | 头像id | | superviseId | 否 | string | 直属上级Id | | id | 是 | string | 人员id | | verifyCode | 否 | string | 验证码(修改手机号时必填) | **Body示例:** ```json { "deptId": "", "type": 0, "menuIds": "", "name": "", "email": "", "phone": "", "state": 0, "password": "", "remark": "", "permissionGroupId": "", "permissionGroupNames": [ "" ], "qrCodeValues": [ "" ], "cardValues": [ "" ], "extra": "", "employeeNumber": "", "positionId": "", "inviteCode": "", "avatarId": "", "superviseId": "", "id": "", "verifyCode": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 2.11 重置密码列表 > 基础信息 **路径:** /saas/webadmin/user/updatePasswordReset **请求方法:** PUT > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | ids | 是 | array | ids列表 | **Body示例:** ```json { "ids": [ "" ] } ``` > 返回数据 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | code | 是 | integer | 结果状态码(成功:1 失败:0) | | msg | 是 | string | 结果描述信息 | | data | 是 | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 2.12 调整组织 > 基础信息 **路径:** /saas/webadmin/user/updateDept **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | deptId | 是 | string | 部门id | | ids | 是 | array | 人员id列表 | **Body示例:** ```json { "deptId": "", "ids": [ "" ] } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 2.13 修改人员类型--设置组织负责人 > 基础信息 **路径:** /saas/webadmin/user/updateUserType **请求方法:** POST > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 是 | 人员id | | type | integer | 否 | 人员在租户中的类型:0:普通人员、1:超级管理员(组织的创建者)、2:系统管理(所有功能)、 4:管理员(要选择菜单) | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 2.14 删除(支持批量删除) > 基础信息 **路径:** /saas/webadmin/user/deleteAll **请求方法:** DELETE > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | ids | array | 是 | 人员Ids | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 2.15 下载模板 > 基础信息 **路径:** /saas/webadmin/user/downloadExample **请求方法:** POST > 请求参数 > 返回数据 **Headers:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | content-type | application/json;charset=UTF-8 | 否 | | **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 2.16 上传文件 人脸图片压缩包 二维码图片压缩包 人员表格 > 基础信息 **路径:** /saas/webadmin/user/uploadUserInfo **请求方法:** POST > 请求参数 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | file | array | 文件 | **Body示例:** ```json [ "12ecb8a7caae" ] ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | | array | | | | object | 返回内容,详见下方响应示例 | **响应示例:** ```json [ { "name": "", //姓名 "reason": "" //原因 } ] ``` --- ## 3.职位 ### 3.1 新增职位 > 基础信息 **路径:** /saas/webadmin/position/insert **请求方法:** POST > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | positionName | string | 是 | 职位名称 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 3.2 查询所有 > 基础信息 **路径:** /saas/webadmin/position/findAll **请求方法:** GET > 返回数据 **Headers:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | content-type | application/json;charset=UTF-8 | 否 | | **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "positionId": "", //职位ID "positionName": "" //职位名称 } ] } ``` --- ### 3.3 批量删除 > 基础信息 **路径:** /saas/webadmin/position/deleteAll **请求方法:** DELETE > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | ids | 是 | array | 职位Ids | **Body示例:** ```json { "ids": [ "" ] } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ## 4.租户管理 ### 4.1 创建租户 > 基础信息 **路径:** /saas/webadmin/tenant/insert **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | tenantName | string | 是 | 租户名字 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "name": "", //名称 "state": "", //状态:0 禁用、1 启用 "remark": "", //备注 "timezone": "", //时区 "language": "", //语言 "dateFormatString": "", //时间格式 "timeFormatString": "", //日期格式 "appKey": "", //开发者key "appSecret": "", //开发者密钥 "callbackUrl": "", //API回调地址 "deviceConfigSecret": "", //设备配置秘钥 "deviceCredentialSecret": "" //设备认证秘钥 } } ``` --- ### 4.2 更新租户 > 基础信息 **路径:** /saas/webadmin/tenant/update **请求方法:** PUT > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | name | 否 | string | 组织名称 | | password | 是 | string | 登录密码 | | callbackUrl | 否 | string | API回调地址 | | timezone | 否 | string | 时区 | | language | 否 | string | 语言 | | dateFormatString | 否 | string | 时间格式 | | timeFormatString | 否 | string | 日期格式 | **Body示例:** ```json { "name": "", "password": "", "callbackUrl": "", "timezone": "", "language": "", "dateFormatString": "", "timeFormatString": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 4.3 切换租户(租户切换后相应的token需要更新) > 基础信息 **路径:** /saas/webadmin/tenant/tenantChange **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | tenantId | string | 是 | 租户id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", //用户id "token": "", //用户token "name": "", //用户名 "extra": {}, "type": "" //用户类型,比如 webadmin,service,app,mini-program等 } } ``` --- ### 4.4 转让企业--租户创建者转让 > 基础信息 **路径:** /saas/webadmin/myInfo/transferTenant **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | userId | 是 | string | 新useId | | type | 是 | integer | 老创建者的新身份 -1退出当前租户;0 普通人员、1 租户超级管理员(组织的创建者)(新身份不可为1) 、2 租户管理员 | **Body示例:** ```json { "userId": "", "type": 0 } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", //用户id "token": "", //用户token "name": "", //用户名 "extra": {}, "type": "" //用户类型,比如 webadmin,service,app,mini-program等 } } ``` --- ### 4.5 退出当前企业 > 基础信息 **路径:** /saas/webadmin/myInfo/quitTenant **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", //用户id "token": "", //用户token "name": "", //用户名 "extra": {}, "type": "" //用户类型,比如 webadmin,service,app,mini-program等 } } ``` --- ### 4.6 邀请加入企业--操作同意/拒绝 > 基础信息 **路径:** /saas/webadmin/myInfo/activeTenant **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | relatedId | string | 否 | 用户租户关系表id | | type | integer | 否 | 操作:0 同意,1 拒绝 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", //用户id "token": "", //用户token "name": "", //用户名 "extra": {}, "type": "" //用户类型,比如 webadmin,service,app,mini-program等 } } ``` --- ### 4.7 解散企业 > 基础信息 **路径:** /saas/webadmin/myInfo/disbandTenant **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", //用户id "token": "", //用户token "name": "", //用户名 "extra": {}, "type": "" //用户类型,比如 webadmin,service,app,mini-program等 } } ``` --- ### 4.8 租户列表--通过userId切换租户时使用 > 基础信息 **路径:** /saas/webadmin/tenant/findAllByUserId **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | userId | string | 否 | 人员id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "userId": "", //用户id "tenantId": "", //组织id "tenantName": "" //组织名 } ] } ``` --- ### 4.9 详情 > 基础信息 **路径:** /saas/webadmin/tenant/find **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | tenantId | string | 是 | 租户id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "name": "", //名称 "state": "", //状态:0 禁用、1 启用 "remark": "", //备注 "timezone": "", //时区 "language": "", //语言 "dateFormatString": "", //时间格式 "timeFormatString": "", //日期格式 "appKey": "", //开发者key "appSecret": "", //开发者密钥 "callbackUrl": "", //API回调地址 "deviceConfigSecret": "", //设备配置秘钥 "deviceCredentialSecret": "" //设备认证秘钥 } } ``` --- ### 4.10 查询当前某租户(组织)和超管信息 > 基础信息 **路径:** /saas/webadmin/tenant/findCurrent **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "tenantId": "", //组织id "tenantName": "", //组织名称 "adminId": "", //超管id "adminName": "", //超管姓名 "adminPhone": "", //超管手机 "adminEmail": "", //超管邮箱 "appKey": "", //开发者key "appSecret": "", //开发者密钥 "callbackUrl": "", //回调url "timezone": "", //时区 "language": "", //语言 "dateFormatString": "", //时间格式 "timeFormatString": "" //日期格式 } } ``` --- ### 4.11 获取时区列表 > 基础信息 **路径:** /saas/webadmin/tenant/getTimezoneList **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ "" ] } ``` --- ## 5.个人信息 ### 5.1 修改名称 > 基础信息 **路径:** /saas/webadmin/myInfo/updateName **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | name | 是 | string | 名称 | **Body示例:** ```json { "name": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 5.2 修改邮箱 > 基础信息 **路径:** /saas/webadmin/myInfo/updateEmailOrPhone **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | emailOrPhoneType | 是 | string | 邮箱或手机类型: email、phone | | email | 否 | string | 新邮箱(邮箱和手机号不可同时为空) | | phone | 否 | string | 新手机号 (邮箱和手机号不可同时为空)| | verifyCode | 是 | string | 验证码 | | password | 是 | string | 登录密码 | **Body示例:** ```json { "emailOrPhoneType": "", "email": "", "phone": "", "verifyCode": "", "password": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 5.3 修改密码 > 基础信息 **路径:** /saas/webadmin/myInfo/updatePassword **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | oldPassword | 是 | string | 老密码 | | newPassword | 是 | string | 新密码 | **Body示例:** ```json { "oldPassword": "", "newPassword": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 5.4 注销用户 > 基础信息 **路径:** /saas/webadmin/myInfo/logoffUser **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ## 6.凭证 ### 6.1 新增凭证(支持批量) > 基础信息 **路径:** /saas/webadmin/voucher/insert **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | userId | 是 | string | 用户id | | type | 是 | string | 凭证类型:透传吗--100、动态码--104、普通pin--400、临时pin--401、扇区加密卡--202、人脸--300、蓝牙--600、指纹--500 | | value | 是 | array | 凭证值 | | deviceModel | 否 | string | 设备型号(指纹凭证必传:不同型号的指纹凭证不同) | **Body示例:** ```json { "userId": "", "type": "", "value": [ "" ], "deviceModel": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 6.2 凭证更新值(单条) > 基础信息 **路径:** /saas/webadmin/voucher/update **请求方法:** POST > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | voucherId | string | 是 | 凭证id | | value | string | 是 | 凭证值 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 6.3 凭证删除(单条) > 基础信息 **路径:** /saas/webadmin/voucher/delete **请求方法:** POST > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | voucherId | string | 是 | 凭证id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 6.4 凭证查询 > 基础信息 **路径:** /saas/webadmin/voucher/findByUserId **请求方法:** POST **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | userId | string | 是 | 人员id | | voucherType | integer | 否 | 凭证类型:透传吗--100、动态码--104、普通pin--400、临时pin--401、扇区加密卡--202、人脸--300、蓝牙--600、指纹--500 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "id": "", "createById": "", "createTime": "", //创建时间 2018-01-01 01:01:01 "updateById": "", "updateTime": "", "tenantId": "", //租户id "userId": "", //所属人员id "name": "", //名称 "voucherType": "", //凭证类型:透传吗--100、动态码--104、普通pin--400、临时pin--401、扇区加密卡--202、人脸--300、蓝牙--600、指纹--500 "value": "", //值,参数;编号;卡号;人脸编号;自定义编号 "deviceModel": "" //设备型号(不同型号的指纹凭证不同) } ] } ``` --- ### 6.5 通过卡片查询人员姓名(存在返回data为人员姓名,不存在返回data为"") > 基础信息 **路径:** /saas/webadmin/voucher/findUserName **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | cardValue | string | 是 | 卡号 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 6.6 生成密码凭证 > 基础信息 **路径:** /saas/webadmin/voucher/password/generate **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 6.7 检查密码凭证是否重复 > 基础信息 **路径:** /saas/webadmin/voucher/password/checkRepeat **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | passwordValue | string | 是 | 密码值 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | boolean | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": false } ``` --- ### 6.8 照片文件上传(base64) > 基础信息 **路径:** /saas/webadmin/voucher/upload **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | picBase64 | 是 | string | 照片的base64数据 | | name | 是 | string | 照片名称(前端可以使用"userName_userId"填充) | | userId | 是 | string | 用户id,照片和用户id关联起来,一个用户id只有一个图片 | **Body示例:** ```json { "picBase64": "", "name": "", "userId": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 6.9 根据文件id下载文件 > 基础信息 **路径:** /saas/webadmin/voucher/download/id **请求方法:** GET **备注:** &imageView=1&w=200&h=200 其中imageView=1表示等比缩放到指定宽高大小,w h 表示宽高,,如果w,h都不设置,则缺省w=100,h等比缩放 > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 否 | 文件id | | imageView | integer | 否 | 等比缩放到指定宽高大小 | | w | integer | 否 | 宽 | | h | integer | 否 | 高 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | **响应示例:** ```json {} ``` --- ### 6.10 获取通行二维码配置 > 基础信息 **路径:** /saas/webadmin/voucher/getQrcodeConfig **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 6.11 通行二维码配置 > 基础信息 **路径:** /saas/webadmin/voucher/setQrcodeConfig **请求方法:** PUT **备注:** { "qrcode_103_vg":true, //微光动态码,以vg://v103开头 "qrcode_100":true //静态二维码,随意字符串 } > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | value | 是 | string | 二维码码值 | **Body示例:** ```json ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ## 7.部门 ### 7.1 新增 > 基础信息 **路径:** /saas/webadmin/dept/insert **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | 是 | string | 组织id--北向使用 | | parentId | 是 | string | 父节点id--all 根节点id | | name | 是 | string | 组织名称 | **Body示例:** ```json { "id": "", "parentId": "", "name": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 7.2 更新 > 基础信息 **路径:** /saas/webadmin/dept/update **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | parentId | 是 | string | 父节点id 根节点id | | id | 是 | string | 组织id | | name | 否 | string | 组织名称 | **Body示例:** ```json { "parentId": "", "id": "", "name": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 7.3 删除 > 基础信息 **路径:** /saas/webadmin/dept/deleteById **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 否 | 资源id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 7.4 批量删除 > 基础信息 **路径:** /saas/webadmin/dept/deleteAll **请求方法:** DELETE > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | ids | 是 | array | 部门Ids | **Body示例:** ```json { "ids": [ "" ] } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 7.5 详情 > 基础信息 **路径:** /saas/webadmin/dept/findById **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 是 | 部门详情 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "parentId": "", //父级id "idLink": "", //路径,多级id用“_”分割 "name": "", //名称 "level": 0, //级别--1开始 "sort": 0, //排序 "tenantId": "" //租户id } } ``` --- ### 7.6 查询所有--默认(可查询下一级列表) > 基础信息 **路径:** /saas/webadmin/dept/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | deptId | string | 否 | 组织id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "parentId": "", //父级id "idLink": "", //路径,多级id用“_”分割 "name": "", //名称 "level": 0, //级别--1开始 "sort": 0, //排序 "tenantId": "" //租户id } ], "pageable": {}, "total": 0 } } ``` --- ### 7.7 部门树--查询所有(可根据部门名称模糊查询) > 基础信息 **路径:** /saas/webadmin/dept/findAllToTree **请求方法:** GET > 请求参数 **Query:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | deptName | string | 否 | 部门名称 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "id": "", "parentId": "", "idLink": "", "name": "", "level": 0, "sort": 0, "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "userNum": 0, "deviceNum": 0, "adminNames": "", "directors": [ { "id": "", "name": "" } ], "children": [ { "id": "", "parentId": "", // 父级id "idLink": "", //idLink "name": "", //部门名称 "level": 0, //级别--1开始 "sort": 0, //排序 "createTime": { //创建时间 "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "userNum": 0, //用户数量 "deviceNum": 0, //设备数量 "adminNames": "", //管理员名称列表 ,分隔 "directors": [ //主管列表 { "id": "", "name": "" } ], "children": [] //部门子集 } ] } ] } ``` --- ### 7.8 部门树--根据部门Id查询 > 基础信息 **路径:** /saas/webadmin/dept/findByIdToTree **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | deptId | string | 否 | 部门id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "id": "", //部门id "name": "", //部门名称 "children": [ //部门子集 { "id": "", //部门id "name": "", //部门名称 "children": [] //部门子集 } ] } ] } ``` --- ### 7.9 部门树--部门列表 和 对应的用户列表 > 基础信息 **路径:** /saas/webadmin/dept/findAllAndUserToTree **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "id": "", //部门id "parentId": "", //父级id "idLink": "", //idLink "name": "", //部门名称 "level": 0, //级别--1开始 "sort": 0, //排序 "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "users": [ { "userId": "", //人员id "userName": "", //人员名 "userEmail": "", //人员邮箱 "userPhone": "", //人员手机 "deptId": "", //组织id "deptName": "", //组织名 "deptIdLink": "" // 组织id链接 } ], "children": [ { "id": "", //部门id "parentId": "", //父级id "idLink": "", //idLink "name": "", //部门名称 "level": 0, //级别--1开始 "sort": 0, //排序 "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} //时区 }, "users": [ //人员 { "userId": "", //人员id "userName": "", //人员名 "userEmail": "", //人员邮箱 "userPhone": "", //人员手机 "deptId": "", //组织id "deptName": "", //组织名 "deptIdLink": "" // 组织id链接 } ], "children": [] //部门子集 } ] } ] } ``` --- ### 7.10 设置部门主管 > 基础信息 **路径:** /saas/webadmin/user/setDirector **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | idList | 是 | array | 用户id | | userGroupId | 是 | string | 部门id | **Body示例:** ```json { "idList": [ "" ], "userGroupId": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 7.11 查询部门主管 > 基础信息 **路径:** /saas/webadmin/user/getDirector **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | deptId | string | 是 | 部门id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "id": "", //人员id "deptId": "", //组织id "deptName": "", // 组织名称 "deptIdLink": "", //组织idLink "type": 0, //人员在租户中的类型:0 普通人员、1 超级管理员--组织的创建者、2 系统管理--所有功能 4 管理员--要选择菜单 "name": "", //姓名 "phone": "", //电话 "email": "", //邮箱 "sex": 0, //性别;1男2女0未设置 "state": 0, //状态:0 禁用、1 启用 "isActive": 0, //是否加入组织:0未加入,1已加入 "remark": "", //备注 "voucherCountList": { //凭证数量列表[{"face",1},..] }, "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "employeeNumber": "", //工号 "position": "", //职位 "positionId": "", //职位id "avatarId": "", //头像Id "directorType": 0, //是否为主管 1是;;0不是 "supervise": "", //直属上级 "superviseId": "" //直属上级Id } ] } ``` --- ## 8.设备 ### 8.1 新增设备 > 基础信息 **路径:** /saas/webadmin/device/insert **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | deptId | 是 | string | 部门id | | type | 是 | integer | 类型:0 门禁,1 考勤、2 门禁+考勤 | | name | 是 | string | 设备名称 | | uuid | 是 | string | 设备sn,真实的设备sn | | mac | 否 | string | 设备mac | | model | 是 | string | 设备型号 | | gateControls | 否 | string | 门控设备编号列表,用逗号“,”分隔 | | remark | 否 | string | 备注 | | netType | 否 | string | 网络类型 0 以太网 1 wifi | | wifiSsid | 否 | string | wifi账号 | | wifiPassword | 否 | string | wifi密码 | | netMode | 否 | string | 网络模式 0 动态 1 静态 | | netIp | 否 | string | IP | | netGateway | 否 | string | 网关 | | netDns | 否 | string | DNS | | netMask |否 | string | 掩码 | | safeOpen | 否 | integer | 安全模块使能,0:关闭,1:打开 | | safeKeyType | 否 | integer | keyType 密钥类型 Int 是 安全模块所有密钥类型,1:AES,2:SM2,4:SM4 | | safeKey1 | 否 | string | key1 密钥/公钥 String 是 密钥或SM2的公钥 | | safeKey2 | 否 | string | key2 向量/私钥 String 是 向量或SM2的私钥 | | language | 否 | integer | 中英文 Int 是 0:中文, 1:英文 | **Body示例:** ```json { "deptId": "", "type": 0, "name": "", "uuid": "", "mac": "", "model": "", "gateControls": "", "remark": "", "netType": "", "wifiSsid": "", "wifiPassword": "", "netMode": "", "netIp": "", "netGateway": "", "netDns": "", "netMask": "", "safeOpen": 0, "safeKeyType": 0, "safeKey1": "", "safeKey2": "", "language": 0 } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 8.2 更新 > 基础信息 **路径:** /saas/webadmin/device/update **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | deptId | 是 | string | 组织id | | type | 是 | integer | 类型:0 门禁,1 考勤、2 门禁+考勤 | | name | 是 | string | 设备名称 | | uuid | 是 | string | 设备sn,真实的设备sn | | mac | 否 | string | 设备mac | | model | 是 | string | 设备型号 | | gateControls | 否 | string | 门控设备编号列表,用逗号“,”分隔 | | remark | 否 | string | 备注 | | netType | 否 | string | 网络类型 0 以太网 1 wifi | | wifiSsid | 否 | string | wifi账号 | | wifiPassword | 否 | string | wifi密码 | | netMode | 否 | string | 网络模式 0 动态 1 静态 | | netIp | 否 | string | IP | | netGateway | 否 | string | 网关 | | netDns | 否 | string | DNS | | netMask | 否 | string | 掩码 | | safeOpen | 否 | integer | 安全模块使能,0:关闭,1:打开 | | safeKeyType | 否 | integer | keyType 密钥类型 Int 是 安全模块所有密钥类型,1:AES,2:SM2,4:SM4 | | safeKey1 | 否 | string | key1 密钥/公钥 String 是 密钥或SM2的公钥 | | safeKey2 | 否 | string | key2 向量/私钥 String 是 向量或SM2的私钥 | | language | 否 | integer | 中英文 Int 是 0:中文, 1:英文 | | id | string | 是 | 设备唯一标识id | **Body示例:** ```json { "deptId": "", "type": 0, "name": "", "uuid": "", "mac": "", "model": "", "gateControls": "", "remark": "", "netType": "", "wifiSsid": "", "wifiPassword": "", "netMode": "", "netIp": "", "netGateway": "", "netDns": "", "netMask": "", "safeOpen": 0, "safeKeyType": 0, "safeKey1": "", "safeKey2": "", "language": 0, "id": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 8.4 删除--批量 > 基础信息 **路径:** /saas/webadmin/device/deleteAll **请求方法:** DELETE > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | uuids | 是 | array | 设备uuid列表 | **Body示例:** ```json { "uuids": [ "" ] } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 8.5 配置查询 > 基础信息 **路径:** /saas/webadmin/deviceConfig/findDeviceData **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | uuid | string | 否 | 设备uuid/SN码 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "uuid": "", "faceStranger": 0, //未注册人脸提示 0:无语音, 1:播放请先注册, 2:播放陌生人你好 "faceVoiceMode": 0, //识别成功后播放语音 0:无语音,1:播放名字, 2:播放问候语 "faceSimilarity": 0, //人脸识别相似度 (默认 0.5,范围0-1) "faceLivenessOff": 0, //活体检测 1 开 0 关 默认开 "faceLivenessVal": 0, //活体检测阈值 (默认 5,范围0-10 "faceShowNir": 0, //红外框 1 开 0 关 默认关 "baseVolume": 0, //喇叭音量:0-10 "baseBacklight": 0, //背光亮度 "baseSleepSwitch": 0, //休眠开关,0:关,1:开 "baseSleepTime": 0, //休眠时间,单位毫秒 "baseShowUnlocking": 0, 开锁按钮是否显示,0:隐藏,1:显示 "baseUnlockingPosition": "",//开锁按钮坐标,格式 x,y "baseShowDoorbell": 0, //门铃按钮是否显示,0:隐藏,1:显示 "baseDoorbellPosition": "", //门铃按钮坐标,格式 x,y "baseTheme": 0, //工作主题,0:标准,1:动态表情 "baseShowSn": 0, //SN 显示/隐藏 "baseShowIp": 0, //IP 显示/隐藏 "baseLanguage": 0, //语言,0-CN中文,1—EN英语,2-ES西班牙语,3-FR法语,4-DE德语,5-RU俄语,6-AR阿拉伯,7-PT葡萄牙语,8-KO韩语 "netMode": "", //网络模式 0 动态 1 静态 "netIp": "", //IP "netGateway": "", //网关 "netDns": "", //DNS "netMask": "", //掩码 "ntpTimeZone": "", //时区名称 "sysNfc": 0, //NFC 刷卡功能开关,1:打开,0:关闭 "sysTamperSwitch": 0, //防拆开关,1:打开,0:关闭 "scanCodeSwitch": 0, //扫码开关 0 关 1 开 "accessRelayTime": 0 //开门时长,单位毫秒 } } ``` --- ### 8.6 配置修改 > 基础信息 **路径:** /saas/webadmin/deviceConfig/updateDeviceData **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | uuid | 是 | string | uuid | | faceStranger | 否 | integer | 未注册人脸提示 0:无语音, 1:播放请先注册, 2:播放陌生人你好 | | faceVoiceMode | 否 | integer | 识别成功后播放语音 0:无语音,1:播放名字, 2:播放问候语 | | faceSimilarity | 否 | integer | 人脸识别相似度 (默认 0.5,范围0-1) | | faceLivenessOff | 否 | integer | 活体检测 1 开 0 关 默认开 | | faceLivenessVal | 否 | integer | 活体检测阈值 (默认 5,范围0-10 | | faceShowNir | 否 | integer | 红外框 1 开 0 关 默认关 | | baseVolume | 否 | integer | 喇叭音量:0-10 | | baseBacklight | 否 | integer | 背光亮度 | | baseSleepSwitch | 否 | integer | 休眠开关,0:关,1:开 | | baseSleepTime | 否 | integer | 休眠时间,单位毫秒 | | baseShowUnlocking | 否 | integer | 开锁按钮是否显示,0:隐藏,1:显示 | | baseUnlockingPosition | 否 | string | 开锁按钮坐标,格式 x,y | | baseShowDoorbell | 否 | integer | 门铃按钮是否显示,0:隐藏,1:显示 | | baseDoorbellPosition | 否 | string | 门铃按钮坐标,格式 x,y | | baseTheme | 否 | integer | 工作主题,0:标准,1:动态表情 | | baseShowSn | 否 | integer | SN 显示/隐藏 | | baseShowIp | 否 | integer | IP 显示/隐藏 | | baseLanguage | 否 | integer | 语言,0-CN中文,1—EN英语,2-ES西班牙语,3-FR法语,4-DE德语,5-RU俄语,6-AR阿拉伯,7-PT葡萄牙语,8-KO韩语 | | netMode | 否 | string | 网络模式 0 动态 1 静态 | | netIp | 否 | string | IP | | netGateway | 否 | string | 网关 | | netDns | 否 | string | DNS | | netMask | 否 | string | 掩码 | | ntpTimeZone | 否 | string | 时区名称 | | sysNfc | 否 | integer | NFC 刷卡功能开关,1:打开,0:关闭 | | sysTamperSwitch | 否 | integer | 防拆开关,1:打开,0:关闭 | | scanCodeSwitch | 否 | integer | 扫码开关 0 关 1 开 | | accessRelayTime | 否 | integer | 开门时长,单位毫秒 | **Body示例:** ```json { "uuid": "", "faceStranger": 0, "faceVoiceMode": 0, "faceSimilarity": 0, "faceLivenessOff": 0, "faceLivenessVal": 0, "faceShowNir": 0, "baseVolume": 0, "baseBacklight": 0, "baseSleepSwitch": 0, "baseSleepTime": 0, "baseShowUnlocking": 0, "baseUnlockingPosition": "", "baseShowDoorbell": 0, "baseDoorbellPosition": "", "baseTheme": 0, "baseShowSn": 0, "baseShowIp": 0, "baseLanguage": 0, "netMode": "", "netIp": "", "netGateway": "", "netDns": "", "netMask": "", "ntpTimeZone": "", "sysNfc": 0, "sysTamperSwitch": 0, "scanCodeSwitch": 0, "accessRelayTime": 0 } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 8.7 查询设备类型 > 基础信息 **路径:** /saas/webadmin/device/findAllModel **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "model": "", //型号 "subModel": "", //子型号 "firmwareProtocol": "", //固件协议 "version": "", //固件协议版本 "gateControl": "", //闸门控制-指1控多的 子设备编号 逗号分割 "remarks": "" //备注 } ] } ``` --- ### 8.8 查询所有 > 基础信息 **路径:** /saas/webadmin/device/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | startTime | string | 否 | 开始时间 | | endTime | string | 否 | 结束时间 | | tenantId | string | 否 | 租户id | | deptId | string | 否 | 组织Id | | deptIdLink | string | 否 | 组织idLink | | name | string | 否 | 设备名称 | | model | string | 否 | 设备型号 | | uuid | string | 否 | 设备SN | | state | integer | 否 | 状态(0启用、1禁用) | | online | integer | 否 | 在线状态;0 离线、1 在线 | | firmwareProtocol | string | 否 | 设备类型 | > 返回数据 **Headers:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | content-type | application/json;charset=UTF-8 | 否 | | **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 返回内容,详见下方响应示例 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "id": "", "tenantId": "", //租户id "deptId": "", //组织id "deptIdLink": "", //组织idLink "deptName": "", //组织名称 "model": "", //设备型号 "firmwareProtocol": "", //设备固件协议 "type": 0, //类型:0 门禁,1 考勤、2 门禁+考勤 "uuid": "", //设备SN "name": "", //设备名称 "no": "", //门控编号 "state": "", //状态0启用、1禁用 "online": 0, //在线状态:0 离线、1 在线 "gateControls": "", //门控设备编号列表,用逗号“,”分隔 "fireSensorState": 0, //火警状态,1:火警开、0:火警关 "doorSensorState": 0, //门磁状态,1:门磁开、0:门磁关 "oldTenantId": "", //旧租户id "remark": "", //备注 "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} } } ], "pageable": {}, "total": 0 } } ``` --- ### 8.9 获取门控设备详情 > 基础信息 **路径:** /saas/webadmin/device/find **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 是 | 设备id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─id | string | | |   |─createById | string | | |   |─createTime | object | | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─updateById | string | | |   |─updateTime | object | | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─tenantId | string | 租户id | |   |─uuid | string | 主控设备SN | |   |─name | string | 门控名称 | |   |─no | string | 门控编号 | |   |─doorSensorState | integer | 门磁状态,1:门磁开、0:门磁关 | |   |─remark | string | 备注 | |   |─oldTenantId | string | 旧租户id(退货较多,二次录入有问题,屏蔽成品库) | |   |─model | string | 设备型号 | |   |─state | string | 状态0启用、1禁用 | |   |─firmwareProtocol | string | 设备使用固件协议 | |   |─gateControls | string | 门控设备编号列表,用逗号“,”分隔 | |   |─online | integer | 在线状态:0 离线、1 在线 | |   |─configAccess | string | 通行配置--DeviceConfigAccessVm | |   |─configOfflinePwd | string | 离线密码配置--DeviceConfigOfflinePwdVm | |   |─configTimezone | string | 时区配置--String | |   |─configLanguage | string | 语言配置--String | |   |─configTime | string | 日期时间配置--DeviceConfigTimeVm | |   |─configUi | string | UI配置--DeviceConfigUiVm | |   |─netType | string | 1-WIFI, 0-以太网 只有设备支持此网络类型时才可以配置成功 | |   |─wifiSsid | string | wifi账号 | |   |─wifiPassword | string | wifi密码 | |   |─netMode | string | 网络模式 0 动态 1 静态 | |   |─netIp | string | IP | |   |─netGateway | string | 网关 | |   |─netDns | string | DNS | |   |─netMask | string | 掩码 | |   |─relayCtrl | integer | 双门双控与四门控制切换:0双门双控,1四门控制 | |   |─safeOpen | integer | 安全模块使能,0:关闭,1:打开 | |   |─safeKeyType | integer | keyType 密钥类型 Int 是 安全模块所有密钥类型,1:AES,2:SM2,4:SM4 | |   |─safeKey1 | string | key1 密钥/公钥 String 是 密钥或SM2的公钥 | |   |─safeKey2 | string | key2 向量/私钥 String 是 向量或SM2的私钥 | |   |─language | integer | 中英文 Int 是 0:中文, 1:英文 | |   |─configJson | string | 配置参数 | |   |─type | integer | 类型:0 门禁,1 考勤、2 门禁+考勤 | |   |─deptId | string | 组织id | |   |─deptIdLink | string | 组织id链 | |   |─deptName | string | 组织名称 | |   |─uploadToCloud | integer | 通行时 人脸图片是否上传云端 1 上传 0 不上传 | |   |─intercomSn | string | 设备授权标识(呼叫模块:APP呼叫设备使用) | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "tenantId": "", //租户id "uuid": "", //主控设备SN "name": "", //门控名称 "no": "", //门控编号 "doorSensorState": 0, //门磁状态,1:门磁开、0:门磁关 "remark": "", //备注 "oldTenantId": "", //旧租户id "model": "", //设备型号 "state": "", //状态0启用、1禁用 "firmwareProtocol": "", //设备使用固件协议 "gateControls": "", //门控设备编号列表,用逗号“,”分隔 "online": 0, //在线状态:0 离线、1 在线 "configAccess": "", //通行配置 "configOfflinePwd": "", //离线密码配置--DeviceConfigOfflinePwdVm "configTimezone": "", //时区配置--String "configLanguage": "", //语言配置--String "configTime": "", //日期时间配置--DeviceConfigTimeVm "configUi": "", //UI配置--DeviceConfigUiVm "netType": "", //1-WIFI, 0-以太网 只有设备支持此网络类型时才可以配置成功 "wifiSsid": "", //wifi账号 "wifiPassword": "", "netMode": "", "netIp": "", "netGateway": "", "netDns": "", "netMask": "", "relayCtrl": 0, "safeOpen": 0, "safeKeyType": 0, "safeKey1": "", "safeKey2": "", "language": 0, "configJson": "", "type": 0, "deptId": "", "deptIdLink": "", "deptName": "", "uploadToCloud": 0, "intercomSn": "" } } ``` --- ### 8.10 修改设备所在组织 > 基础信息 **路径:** /saas/webadmin/device/updateDept **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | deptId | 是 | string | 设备分组id | | ids |是 | array | 设备id列表 | **Body示例:** ```json { "deptId": "", "ids": [ "" ] } ``` > 返回数据 **Headers:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | content-type | application/json;charset=UTF-8 | 否 | | **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 8.11 切换为写卡模式 > 基础信息 **路径:** /saas/webadmin/device/writeCardModel **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | uuid | string | 是 | 设备uuid/SN码 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 8.12 生成配置码--未加入系统(使用默认秘钥) > 基础信息 **路径:** /saas/webadmin/device/getConfigQrcodeNew **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | type | 否 | integer | 网络类型 :1 有线、2 WiFi | | ssid | 否 | string | wifi账号 | | password | 否 | string | wifi密码 | | dhcp | 否 | integer | DHCP模式 :1 启用(动态)、2 禁用(静态) | | ip | 否 | string | ip ip地址 | | gateway | 否 | string | gateway 网关 | | dns | 否 | string | DNS | | mask | 否 | string | 子网掩码 | | model | 否 | string | 设备型号 | **Body示例:** ```json { "type": 0, "ssid": "", "password": "", "dhcp": 0, "ip": "", "gateway": "", "dns": "", "mask": "", "model": "" } ``` > 返回数据 **Headers:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | content-type | application/json;charset=UTF-8 | 否 | | **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 8.13 生成配置码--已加入系统(使用租户秘钥) > 基础信息 **路径:** /saas/webadmin/device/getConfigQrcodeExist **请求方法:** POST > 请求参数 **Body:** | 名称 | 类型 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | type | 否 | integer | 网络类型 :1 有线、2 WiFi | | ssid | 否 | string | wifi账号 | | password | 否 | string | wifi密码 | | dhcp | 否 | integer | DHCP模式 :1 启用(动态)、2 禁用(静态) | | ip | 否 | string | ip ip地址 | | gateway | 否 | string | gateway 网关 | | dns | 否 | string | DNS | | mask | 否 | string | 子网掩码 | | model | 否 | string | 设备型号 | **Body示例:** ```json { "type": 0, "ssid": "", "password": "", "dhcp": 0, "ip": "", "gateway": "", "dns": "", "mask": "", "model": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 8.14 远程开门 > 基础信息 **路径:** /saas/webadmin/device/openDoor **请求方法:** POST > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | uuid | string | 是 | 设备uuid/SN码 | | no | string | 否 | 序列号 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 8.15 重启 > 基础信息 **路径:** /saas/webadmin/device/restart **请求方法:** POST > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | uuid | string | 是 | 设备uuid/SN码 | | no | string | 否 | 序列号 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ## 9.首页统计 ### 9.1 基础统计信息,按天,周,月统计设备数量,通行人次,访客数量 > 基础信息 **路径:** /saas/webadmin/dashBoard/basicStatistic **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─totalDeviceByDay | integer | 设备数量统计-天 | |   |─totalDeviceByWeek | integer | 设备数量统计-周 | |   |─totalDeviceByMonth | integer | 设备数量统计-月 | |   |─totalPassRecordByDay | integer | 通行人次-天 | |   |─totalPassRecordByWeek | integer | 通行人次-周 | |   |─totalPassRecordByMonth | integer | 通行人次-月 | |   |─totalVisitorByDay | integer | 访客人次-天 | |   |─totalVisitorByWeek | integer | 访客人次-周 | |   |─totalVisitorByMonth | integer | 访客人次-月 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "totalDeviceByDay": 0, "totalDeviceByWeek": 0, "totalDeviceByMonth": 0, "totalPassRecordByDay": 0, "totalPassRecordByWeek": 0, "totalPassRecordByMonth": 0, "totalVisitorByDay": 0, "totalVisitorByWeek": 0, "totalVisitorByMonth": 0 } } ``` --- ### 9.2 实时通行检测(显示最新的10条) > 基础信息 **路径:** /saas/webadmin/dashBoard/latestPassRecord **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 响应业务体 | |   |─ | object | | |     |─id | string | | |     |─tenantId | string | 租户id | |     |─type | integer | 类型:0 门禁、1 考勤、2 读卡 | |     |─deptId | string | 组织id--根据用户赋值,用户不存在根据设备赋值 | |     |─deptIdLink | string | 组织idLink | |     |─deviceUuid | string | 设备id; | |     |─deviceNo | string | 门控编号 | |     |─deviceName | string | 设备名称; | |     |─userId | string | 用户id; | |     |─userName | string | 用户姓名; | |     |─userPhone | string | 用户手机号; | |     |─userEmail | string | 用户邮箱; | |     |─personTypes | string | 人员类型 0访客 1组织人员; 查询到多个人,人员类型通过 逗号分割 | |     |─voucherType | string | 凭证类型;卡;二维码;人脸;身份证号;护照号 | |     |─voucherValue | string | 凭证值;卡号,人员编号,身份证号,自定义编号<br>人脸的时候对应的值是存储的照片文件对应的id | |     |─twoFactor | integer | 双因子:0表示第一个因子,1表示第二个因子 | |     |─result | integer | 通行结果;1成功、0失败 | |     |─time | object | 通行时间 | |       |─dateTime | string | The local date-time. | |       |─offset | object | The offset from UTC/Greenwich. | |         |─totalSeconds | integer | The total offset in seconds. | |       |─zone | object | The time-zone. | |     |─message | string | 成功或失败的信息 | |     |─extra | string | 扩展数据<br>人脸的时候对应的值是抓拍实时的照片文件对应的url{"pic":"http:..."} | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "id": "", "tenantId": "", "type": 0, "deptId": "", "deptIdLink": "", "deviceUuid": "", "deviceNo": "", "deviceName": "", "userId": "", "userName": "", "userPhone": "", "userEmail": "", "personTypes": "", "voucherType": "", "voucherValue": "", "twoFactor": 0, "result": 0, "time": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "message": "", "extra": "" } ] } ``` --- ## 10.预警记录 ### 10.1 查询所有 > 基础信息 **路径:** /saas/webadmin/alarmRecord/findAll **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | 是 | integer | 第几页(缺省1) | | size | 是 | integer | 每页大小(缺省10) | | startTime | 否 | string | 开始时间 | | endTime | 否 | string | 结束时间 | | deviceName | 否 | string | 设备名称 | | uuid | 否 | string | 设备uuid | | level | 否 | integer | 报警等级(低0,中1,高2) | | type | 否 | string | 报警类型 | **Body示例:** ```json { "page": 0, "size": 0, "startTime": "", "endTime": "", "deviceName": "", "uuid": "", "level": 0, "type": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": {} } ``` --- ## 11.导出 ### 11.1 导出 > 基础信息 **路径:** /saas/webadmin/exportRecord/export **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | 是 | integer | 第几页(缺省1) | | size | 是 | integer | 每页大小(缺省10) | | startTime | 否 | string | 开始时间 | | endTime | 否 | string | 结束时间 | | userName | 否 | string | 人员姓名 | | userIds | 否 | array | 人员id | | userEmail | 否 | string | 人员邮箱 | | userPhone | 否 | string | 人员电话 | | personTypes | 否 | integer | 人员类型 -1所有、0访客 1组织人员; | | deviceName | 否 | string | 设备名称 | | uuid | 否 | string | 设备uuid | | model | 否 | string | 设备型号 | | state | 否 | string | 状态(0启用、1禁用) | | online | 否 | integer | 在线状态 | | firmwareProtocol | 否 | string | 设备类型 | | voucherType | 否 | string | 凭证类型;人脸:face;卡:card;二维码:qrcode;指纹:fingerprint;密码:password; | | voucherValue | 否 | string | 凭证值 | | result | 否 | integer | 通行结果(-1所有、1成功、0失败) | | type | 否 | integer | 记录类型:0 工作日、1 休息日 | | startDate | 否 | string | 开始日期--筛选考勤日期 2025-04-17(统计必传) | | endDate | 否 | string | 结束日期--筛选考勤日期 2025-04-17(统计必传) | | deptIdLink | 否 | string | 组织idLink | | deptId | 否 | string | 组织id | | exportType | 是 | integer | 类型: 0-打卡明细 1-日统计 2-月统计 3-设备 4-操作日志 5-人员 6—通行记录 7-预警记录 | | month | 否 | string | 月份:2025-04 | | module | 否 | string | 功能模块 | | action | 否 | string | 动作名称 | | tenantId | 否 | string | 租户id | | level | 否 | integer | 报警等级(低0,中1,高2) | | alarmType | 否 | string | 报警类型 | **Body示例:** ```json { "page": 0, "size": 0, "startTime": "", "endTime": "", "userName": "", "userIds": [ "" ], "userEmail": "", "userPhone": "", "personTypes": 0, "deviceName": "", "uuid": "", "model": "", "state": "", "online": 0, "firmwareProtocol": "", "voucherType": "", "voucherValue": "", "result": 0, "type": 0, "startDate": "", "endDate": "", "deptIdLink": "", "deptId": "", "exportType": 0, "month": "", "module": "", "action": "", "tenantId": "", "level": 0, "alarmType": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 11.2 查询所有导出记录列表 > 基础信息 **路径:** /saas/webadmin/exportRecord/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | startTime | string | 否 | | | endTime | string | 否 | | | exportType | integer | 否 | | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─id | string | | |       |─createById | string | | |       |─createTime | object | | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─updateById | string | | |       |─updateTime | object | | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─tenantId | string | 租户id | |       |─userName | string | 操作人员名称 | |       |─userId | string | 操作人id | |       |─exportType | integer | 类型 打卡明细:0 日统计:1 月统计:2 | |       |─state | integer | 状态 0正在导出,-1导出失败,1导出成功 | |       |─url | string | 下载地址 | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "tenantId": "", "userName": "", "userId": "", "exportType": 0, "state": 0, "url": "" } ], "pageable": {}, "total": 0 } } ``` --- ### 11.3 删除记录 > 基础信息 **路径:** /saas/webadmin/exportRecord/delete **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | recordId | string | 否 | 导出记录id | > 返回数据 **Headers:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | content-type | application/json;charset=UTF-8 | 否 | | **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ## 12.操作 ### 12.1 分页查询 > 基础信息 **路径:** /saas/webadmin/operationLog/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | startTime | string | 否 | | | endTime | string | 否 | | | module | string | 否 | 功能模块 | | action | string | 否 | 动作名称 | | userPhone | string | 否 | 手机号 | | userIds[0] | array | 否 | 人员id | | username | string | 否 | 人员姓名 | | userEmail | string | 否 | 邮箱 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─id | string | | |       |─tenantId | string | 租户id | |       |─time | object | 告警时间; | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─action | string | 名称动作; | |       |─userId | string | user_id | |       |─username | string | 姓名; | |       |─userPhone | string | 手机号; | |       |─userEmail | string | 邮箱; | |       |─module | string | 模块; | |       |─result | integer | 结果;1成功;0失败 | |       |─ip | string | ip; | |       |─data | string | data; | |       |─deptId | string | 组织id | |       |─deptIdLink | string | 组织idLink | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "id": "", "tenantId": "", "time": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "action": "", "userId": "", "username": "", "userPhone": "", "userEmail": "", "module": "", "result": 0, "ip": "", "data": "", "deptId": "", "deptIdLink": "" } ], "pageable": {}, "total": 0 } } ``` --- ## 13.通行记录 ### 13.1 查询所有通行记录列表 > 基础信息 **路径:** /saas/webadmin/passRecord/findAll **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | 是 | integer | 第几页(缺省1) | | size | 是 | integer | 每页大小(缺省10) | | startTime | 否 | string | | | endTime | 否 | string | | | type | 否 | integer | 类型:0 门禁、1 考勤、2 读卡 | | userName | 否 | string | 人员姓名 | | userPhone | 否 | string | 0<br>人员手机 | | userEmail | 否 | string | 人员邮箱 | | deviceName | 否 | string | 设备名称 | | uuid | 否 | string | 设备uuid | | voucherType | 否 | string | 凭证类型;人脸:face;卡:card;二维码:qrcode;指纹:fingerprint;密码:password; | | voucherValue | 否 | string | 凭证值 | | result | 否 | integer | 通行结果(-1所有、1成功、0失败) | | personTypes | 否 | integer | 人员类型 -1所有、0访客 1组织人员; | **Body示例:** ```json { "page": 0, "size": 0, "startTime": "", "endTime": "", "type": 0, "userName": "", "userPhone": "", "userEmail": "", "deviceName": "", "uuid": "", "voucherType": "", "voucherValue": "", "result": 0, "personTypes": 0 } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": {} } ``` --- ### 13.2 读卡 > 基础信息 **路径:** /saas/webadmin/passRecord/readCard **请求方法:** GET > 请求参数 **Query:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | uuid | | 否 | 设备sn号 | | deleteCardCode | | 否 | 被取消的卡号 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ "" ] } ``` --- ### 13.3 停止读卡 > 基础信息 **路径:** /saas/webadmin/passRecord/stopReadCard **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | uuid | string | 否 | 设备sn号 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ## 14.权限组 ### 14.1 新增 > 基础信息 **路径:** /saas/webadmin/permission/group/insert **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | 否 | string | id | | name | 是 | string | 权限组名称 | | permissionTime | 否 | object | 权限组时间 | |   |─type | | integer | 时间类型 | |   |─startTime | | integer | 时间区间开始时间戳(毫秒) | |   |─endTime | | integer | 时间区间结束时间戳(毫秒) | |   |─weekPeriodTime | | string | TYPE_WEEK_PERIOD类型下设置周一到周日的开始时间到结束时间,每天可以设置多个时间段,中间用\|隔开,时间段之间不能重叠<br>{<br>"1":"9:00-10:00\|11:00-13:30",<br>"2":"8:00-10:00",<br>"4":"00:00-24:00"<br>}<br>如上示例,“1”表示周一,“2”表示周二,示例没有“3”,那么周三就全天无效,“4”表示周四全天有效<br>String时间的格式是"HH:mm"<br>这里面必须是一个json格式的完整string | |   |─dayPeriodTime | | string | 每日模式,示例:"12:00-13:30\|15:00-16:30" | |   |─count | | integer | 次数 | **Body示例:** ```json { "id": "", "name": "", "permissionTime": { "type": 0, "startTime": 0, "endTime": 0, "weekPeriodTime": "", "dayPeriodTime": "", "count": 0 } } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─id | string | | |   |─createById | string | | |   |─createTime | object | | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─updateById | string | | |   |─updateTime | object | | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─tenantId | string | 租户id | |   |─name | string | 名称 | |   |─type | string | 权限组类型 | |   |─deptId | string | 组织id | |   |─deptIdLink | string | 组织路径,多级id用“_”分割 | |   |─timePeriod | string | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "tenantId": "", "name": "", "type": "", "deptId": "", "deptIdLink": "", "timePeriod": "" } } ``` --- ### 14.2 更新 > 基础信息 **路径:** /saas/webadmin/permission/group/update **请求方法:** PUT > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ |------------ | ------------ | | groupId | 是 | string | 权限组id | | groupName | 是 | string | 权限组名称 | **Body示例:** ```json { "groupId": "", "groupName": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 14.3 新增设备 > 基础信息 **路径:** /saas/webadmin/permission/group/insertDevices **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | | 是 | array | 设备列表 | | | 是 | object | 设备信息 | |   |─permissionGroupId | 是 | string | 权限组id | |   |─deviceUuid | 是 | string | 设备SN | |   |─gateControlNo | 是 | string | 门控编号 | |   |─extra | 否 | string | extra(梯控设备这里放梯控内容) | **Body示例:** ```json [ { "permissionGroupId": "", "deviceUuid": "", "gateControlNo": "", "extra": "" } ] ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 14.4 删除设备 > 基础信息 **路径:** /saas/webadmin/permission/group/deleteDevices **请求方法:** DELETE > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | permissionGroupId | 是 | string | 权限组id | | items | 是 | array | 设备uuid列表 | |   |─ | | object | | |     |─uuid | 是 | string | 设备SN | |     |─gateControlNo | 是 | string | 门控编号 | **Body示例:** ```json { "permissionGroupId": "", "items": [ { "uuid": "", "gateControlNo": "" } ] } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 14.5 全量更新用户 > 基础信息 **路径:** /saas/webadmin/permission/group/fullUpdateUsers **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | permissionGroupId | 是 | string | 权限组id | | users | 是 | array | | |   |─ | | string | | **Body示例:** ```json { "permissionGroupId": "", "users": [ "" ] } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 14.6 调整时间 > 基础信息 **路径:** /saas/webadmin/permission/group/updateTimePeriod **请求方法:** PUT > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | groupId | 是 | string | 权限组id | | timePeriod | 是 | object | 权限时间规则 | |   |─type | 是 | integer | 时间类型:0:永久有效、1: 特定时间区间内一直有效(startTime->endTime)、2:每日模式,每日特定时间到特定时间内有效(时间戳为当日零点到该时间的秒数)、3:特定时间区间内(startTime->endTime)的每周每天的特定时间区间内一直有效(weekPeriodTimes)、5:次数模式| |   |─startTime | 否 | integer | 时间区间开始时间戳(毫秒) | |   |─endTime | 否 | integer | 时间区间结束时间戳(毫秒) | |   |─weekPeriodTime | 否 | string | TYPE_WEEK_PERIOD类型下设置周一到周日的开始时间到结束时间,每天可以设置多个时间段,中间用\|隔开,时间段之间不能重叠<br>{<br>"1":"9:00-10:00\|11:00-13:30",<br>"2":"8:00-10:00",<br>"4":"00:00-24:00"<br>}<br>如上示例,“1”表示周一,“2”表示周二,示例没有“3”,那么周三就全天无效,“4”表示周四全天有效<br>String时间的格式是"HH:mm"<br>这里面必须是一个json格式的完整string | |   |─dayPeriodTime | 否 | string | 每日模式,示例:"12:00-13:30\|15:00-16:30" | |   |─count | 否 | integer | 次数 | **Body示例:** ```json { "groupId": "", "timePeriod": { "type": 0, "startTime": 0, "endTime": 0, "weekPeriodTime": "", "dayPeriodTime": "", "count": 0 } } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 14.7 权限组列表--其他模块下拉选择使用 > 基础信息 **路径:** /saas/webadmin/permission/group/findList **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 响应业务体 | |   |─ | object | | |     |─id | string | | |     |─createById | string | | |     |─createTime | object | | |       |─dateTime | string | The local date-time. | |       |─offset | object | The offset from UTC/Greenwich. | |         |─totalSeconds | integer | The total offset in seconds. | |       |─zone | object | The time-zone. | |     |─updateById | string | | |     |─updateTime | object | | |       |─dateTime | string | The local date-time. | |       |─offset | object | The offset from UTC/Greenwich. | |         |─totalSeconds | integer | The total offset in seconds. | |       |─zone | object | The time-zone. | |     |─tenantId | string | 租户id | |     |─name | string | 名称 | |     |─type | string | 权限组类型 | |     |─deptId | string | 组织id | |     |─deptIdLink | string | 组织路径,多级id用“_”分割 | |     |─timePeriod | string | | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "tenantId": "", "name": "", "type": "", "deptId": "", "deptIdLink": "", "timePeriod": "" } ] } ``` --- ### 14.8 权限组列表--带权限组 人数量、设备数量 > 基础信息 **路径:** /saas/webadmin/permission/group/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | name | string | 否 | 权限组名称 | | email |string | 否 | 人员手机号 | | phone | string | 否 | 人员手机号 | | uuid | string | 否 | 设备sn号 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─groupId | string | 权限组id | |       |─name | string | 权限组名称 | |       |─userCount | integer | 用户数量 | |       |─deviceCount | integer | 设备数量 | |       |─timePeriod | string | 权限时间规则 | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "groupId": "", "name": "", "userCount": 0, "deviceCount": 0, "timePeriod": "" } ], "pageable": {}, "total": 0 } } ``` --- ### 14.9 权限组删除--批量 > 基础信息 **路径:** /saas/webadmin/permission/group/deleteAll **请求方法:** DELETE > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | ids | 是 | array | 权限组id | |   |─ | string | | **Body示例:** ```json { "ids": [ "" ] } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 14.10 权限组用户--已添加用户列表 > 基础信息 **路径:** /saas/webadmin/permission/group/findAllSelectedUser **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | groupId |string | 是 | 权限组id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 响应业务体 | |   |─ | object | | |     |─userId | string | 人员ID | |     |─userName | string | 人员名称 | |     |─userEmail | string | 人员邮箱 | |     |─userPhone | string | 人员手机 | |     |─deptId | string | 组织id | |     |─deptName | string | 组织Name | |     |─deptIdLink | string | 组织id链接 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "userId": "", "userName": "", "userEmail": "", "userPhone": "", "deptId": "", "deptName": "", "deptIdLink": "" } ] } ``` --- ### 14.11 权限组设备--已添加设备列表 > 基础信息 **路径:** /saas/webadmin/permission/group/findSelectedDevice **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | groupId | string | 是 | 权限组id | | deviceUuid | string | 否 | 设备SN | | deviceName | string | 否 | 设备名称 | | deviceModel | string | 否 | 设备型号 | | online | string | 否 | 设备在线状态 | | selectState | string | 否 | 选中状态:0 未选中、1 选中 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─gateControlId | string | 门控设备id | |       |─deptId | string | 组织id | |       |─deptIdLink | string | 组织idLink | |       |─deptName | string | 组织名称 | |       |─deviceUuid | string | 设备SN | |       |─deviceName | string | 设备名称 | |       |─gateControlNo | string | 门控编号 | |       |─deviceModel | string | 设备型号 | |       |─online | integer | 设备在线状态 | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "gateControlId": "", "deptId": "", "deptIdLink": "", "deptName": "", "deviceUuid": "", "deviceName": "", "gateControlNo": "", "deviceModel": "", "online": 0 } ], "pageable": {}, "total": 0 } } ``` --- ### 14.12 权限组设备--所有设备列表(设备管理列表)--标记是否已选择 > 基础信息 **路径:** /saas/webadmin/permission/group/findAllDeviceWithSelected **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | groupId | string | 是 | 权限组id | | deviceUuid | string | 否 | 设备SN | | deviceName | string | 否 | 设备名称 | | deviceModel | string | 否 | 设备型号 | | online | integer | 否 | 设备在线状态 | | selectState | integer | 否 | 选中状态:0 未选中、1 选中 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─gateControlId | string | 门控设备id | |       |─deptId | string | 组织id | |       |─deptIdLink | string | 组织idLink | |       |─deptName | string | 组织名称 | |       |─deviceUuid | string | 设备SN | |       |─deviceName | string | 设备名称 | |       |─gateControlNo | string | 门控编号 | |       |─deviceModel | string | 设备型号 | |       |─online | integer | 设备在线状态 | |       |─isSelected | boolean | 是否被选中:true 选中、false 未选中 | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "gateControlId": "", "deptId": "", "deptIdLink": "", "deptName": "", "deviceUuid": "", "deviceName": "", "gateControlNo": "", "deviceModel": "", "online": 0, "isSelected": false } ], "pageable": {}, "total": 0 } } ``` --- ### 14.13 设备查人 > 基础信息 **路径:** /saas/webadmin/permission/group/findUserByUuid **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | uuid | string | 是 | 设备uuid/SN号 | | no | string | 是 | 序列号 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 响应业务体 | |   |─ | object | | |     |─id | string | | |     |─createById | string | | |     |─createTime | object | | |       |─dateTime | string | The local date-time. | |       |─offset | object | The offset from UTC/Greenwich. | |         |─totalSeconds | integer | The total offset in seconds. | |       |─zone | object | The time-zone. | |     |─updateById | string | | |     |─updateTime | object | | |       |─dateTime | string | The local date-time. | |       |─offset | object | The offset from UTC/Greenwich. | |         |─totalSeconds | integer | The total offset in seconds. | |       |─zone | object | The time-zone. | |     |─type | integer | 用户类型 0:访客、1:组织人员 | |     |─name | string | 姓名 | |     |─email | string | 邮箱 | |     |─phone | string | 手机 | |     |─idCardNum | string | 身份证号 | |     |─password | string | 密码 | |     |─sex | integer | 性别;1男2女0未设置 | |     |─remark | string | 备注 | |     |─isRegister | integer | 是否注册 | |     |─appPhoneType | string | 手机类型:android 、ios | |     |─appPhoneToken | string | 手机推送Token:google推送使用 | |     |─inviteCode | string | | |     |─openId | string | 小程序openId | |     |─modelConfig | string | 小程序模块显示配置<br>例如:true为展示,false为不展示<br>{<br>"permission":true,<br>"visitor":true,<br>"share":false,<br>"attendance":false,<br>"passRecord":true<br>} | |     |─permissionIds | string | | |     |─avatarId | string | | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "type": 0, "name": "", "email": "", "phone": "", "idCardNum": "", "password": "", "sex": 0, "remark": "", "isRegister": 0, "appPhoneType": "", "appPhoneToken": "", "inviteCode": "", "openId": "", "modelConfig": "", "permissionIds": "", "avatarId": "" } ] } ``` --- ### 14.14 查与人员关联的设备 > 基础信息 **路径:** /saas/webadmin/permission/group/findDeviceByUserId **请求方法:** GET > 请求参数 **Query:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | userId | string | 是 | 人员id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 响应业务体 | |   |─ | object | | |     |─deviceUuid | string | 设备SN | |     |─deviceName | string | 设备名称 | |     |─deviceNo | string | 设备no | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "deviceUuid": "", "deviceName": "", "deviceNo": "" } ] } ``` --- ## 15.访客管理 ### 15.1 新增--被访人(系统内人员)邀请 > 基础信息 **路径:** /saas/webadmin/visit/insertTenant **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | permissionGroupId | 是 | string | 权限组id | | userName | 是 | string | 访客姓名 | | userEmail | 否 | string | 访客邮箱(邮箱和手机不可同时为空) | | userPhone | 否 | string | 访客手机 (邮箱手机不可同时为空)| | userPhoto | 否 | string | 访客人脸照片id | | startTime | 是 | string | 来访开始时间 | | endTime | 是 | string | 来访结束时间 | | remark | 否 | string | 备注 | **Body示例:** ```json { "permissionGroupId": "", "userName": "", "userEmail": "", "userPhone": "", "userPhoto": "", "startTime": "", "endTime": "", "remark": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 15.2 访客码表单--获取配置信息(h5使用) > 基础信息 **路径:** /saas/webadmin/visit/getVisitorCodeForm **请求方法:** GET > 返回数据 **Headers:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | content-type | application/json;charset=UTF-8 | 否 | | **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 15.3 访客码表单--保存 > 基础信息 **路径:** /saas/webadmin/visit/setVisitorCodeForm **请求方法:** PUT > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | value | 是 | string | 配置值 | **Body示例:** ```json ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 15.4 获取访客申请二维码 > 基础信息 **路径:** /saas/webadmin/visit/getInviteCode **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | sysName | string | 否 | 系统名称: us 海外、cn 国内 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 15.5 照片文件上传(base64) > 基础信息 **路径:** /saas/webadmin/visit/upload **请求方法:** POST > 请求参数 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | picBase64 | string | 照片的base64数据 | | name | string | 照片名称(前端可以使用"userName_userId"填充) | | userId | string | 用户id,照片和用户id关联起来,一个用户id只有一个图片 | **Body示例:** ```json { "picBase64": "", "name": "", "userId": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 15.6 删除访客 > 基础信息 **路径:** /saas/webadmin/visit/deleteAllUser **请求方法:** DELETE > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | userIds | array | 是 | 人员id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 15.7 列表--访客 > 基础信息 **路径:** /saas/webadmin/visit/findAllUser **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | startTime | string | 否 | | | endTime | string | 否 | | | name | string | 否 | 访客姓名 | | email | string | 否 | 邮箱 | | phone | string | 否 | 手机号 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─id | string | 人员id | |       |─name | string | 姓名 | |       |─email | string | 邮箱 | |       |─phone | string | 手机 | |       |─idCardNum | string | 身份证号 | |       |─permissionGroupId | string | 权限组id | |       |─permissionGroupName | string | 权限组名称 | |       |─remark | string | 备注 | |       |─updateTime | object | 更新时间 | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─createTime | object | 创建时间 | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─voucherCountList | object | 凭证数量列表[{"face",1},...] | |         |─key | integer | | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "id": "", "name": "", "email": "", "phone": "", "idCardNum": "", "permissionGroupId": "", "permissionGroupName": "", "remark": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "voucherCountList": { "": 0 } } ], "pageable": {}, "total": 0 } } ``` --- ### 15.8 新增访客门禁组 > 基础信息 **路径:** /saas/webadmin/visit/permission/group/insert **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | 是 | string | 门禁组id | | name | 是 | string | 权限组名称 | | permissionTime |是 | object | 权限组时间 | |   |─type | 是 | integer | 时间类型:0:永久有效、1: 特定时间区间内一直有效(startTime->endTime)、2:每日模式,每日特定时间到特定时间内有效(时间戳为当日零点到该时间的秒数)、3:特定时间区间内(startTime->endTime)的每周每天的特定时间区间内一直有效(weekPeriodTimes)、5:次数模式 | |   |─startTime | 否 | integer | 时间区间开始时间戳(毫秒) | |   |─endTime | 否 | integer | 时间区间结束时间戳(毫秒) | |   |─weekPeriodTime | 否 | string | TYPE_WEEK_PERIOD类型下设置周一到周日的开始时间到结束时间,每天可以设置多个时间段,中间用\|隔开,时间段之间不能重叠<br>{<br>"1":"9:00-10:00\|11:00-13:30",<br>"2":"8:00-10:00",<br>"4":"00:00-24:00"<br>}<br>如上示例,“1”表示周一,“2”表示周二,示例没有“3”,那么周三就全天无效,“4”表示周四全天有效<br>String时间的格式是"HH:mm"<br>这里面必须是一个json格式的完整string | |   |─dayPeriodTime | 否 | string | 每日模式,示例:"12:00-13:30\|15:00-16:30" | |   |─count | 否 | integer | 次数 | **Body示例:** ```json { "id": "", "name": "", "permissionTime": { "type": 0, "startTime": 0, "endTime": 0, "weekPeriodTime": "", "dayPeriodTime": "", "count": 0 } } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 15.9 findAll > 基础信息 **路径:** /saas/webadmin/visit/permission/group/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | name | string | 否 | 权限组名称 | | email | string | 否 | 人员手机号 | | phone | string | 否 | 人员手机号 | | uuid | string | 否 | 设备sn号 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─groupId | string | 权限组id | |       |─name | string | 权限组名称 | |       |─userCount | integer | 用户数量 | |       |─deviceCount | integer | 设备数量 | |       |─timePeriod | string | 权限时间规则 | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "groupId": "", "name": "", "userCount": 0, "deviceCount": 0, "timePeriod": "" } ], "pageable": {}, "total": 0 } } ``` --- ### 15.10 删除访客门禁组 > 基础信息 **路径:** /saas/webadmin/visit/permission/group/deleteAll **请求方法:** DELETE > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | ids | 是 | array | 权限组id | |   |─ | string | | **Body示例:** ```json { "ids": [ "" ] } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 15.11 权限组设备--新增设备 > 基础信息 **路径:** /saas/webadmin/visit/permission/group/insertDevices **请求方法:** POST > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | | 是 | array | | | | 是 | object | | |   |─permissionGroupId | 是 | string | 权限组id | |   |─deviceUuid | 是 | string | 设备SN | |   |─gateControlNo | 是 | string | 门控编号 | |   |─extra | 否 | string | extra(梯控设备这里放梯控内容) | **Body示例:** ```json [ { "permissionGroupId": "", "deviceUuid": "", "gateControlNo": "", "extra": "" } ] ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 15.12 权限组设备--删除设备 > 基础信息 **路径:** /saas/webadmin/visit/permission/group/deleteDevices **请求方法:** DELETE > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | permissionGroupId | 是 | string | 权限组id | | items | 是 | array | 设备uuid列表 | |   |─ | object | | |     |─uuid | 是 | string | 设备SN | |     |─gateControlNo | 是 | string | 门控编号 | **Body示例:** ```json { "permissionGroupId": "", "items": [ { "uuid": "", "gateControlNo": "" } ] } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", #### "data": "" } ``` --- ### 15.13 权限组设备--已添加设备列表 > 基础信息 **路径:** /saas/webadmin/visit/permission/group/findSelectedDevice **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | groupId | string | 是 | 权限组id | | deviceUuid | string | 否 | 设备SN | | deviceName | string | 否 | 设备名称 | | deviceModel | string | 否 | 设备型号 | | online | integer | 否 | 设备在线状态 | | selectState | integer | 否 | 选中状态:0 未选中、1 选中 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─gateControlId | string | 门控设备id | |       |─deptId | string | 组织id | |       |─deptIdLink | string | 组织idLink | |       |─deptName | string | 组织名称 | |       |─deviceUuid | string | 设备SN | |       |─deviceName | string | 设备名称 | |       |─gateControlNo | string | 门控编号 | |       |─deviceModel | string | 设备型号 | |       |─online | integer | 设备在线状态 | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "gateControlId": "", "deptId": "", "deptIdLink": "", "deptName": "", "deviceUuid": "", "deviceName": "", "gateControlNo": "", "deviceModel": "", "online": 0 } ], "pageable": {}, "total": 0 } } ``` --- ### 15.14 权限组设备--所有设备列表(设备管理列表)--标记是否已选择 > 基础信息 **路径:** /saas/webadmin/visit/permission/group/findAllDeviceWithSelected **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | groupId | string | 是 | 权限组id | | deviceUuid | string | 否 | 设备SN | | deviceName | string | 否 | 设备名称 | | deviceModel | string | 否 | 设备型号 | | online | integer | 否 | 设备在线状态 | | selectState | integer | 否 | 选中状态:0 未选中、1 选中 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─gateControlId | string | 门控设备id | |       |─deptId | string | 组织id | |       |─deptIdLink | string | 组织idLink | |       |─deptName | string | 组织名称 | |       |─deviceUuid | string | 设备SN | |       |─deviceName | string | 设备名称 | |       |─gateControlNo | string | 门控编号 | |       |─deviceModel | string | 设备型号 | |       |─online | integer | 设备在线状态 | |       |─isSelected | boolean | 是否被选中:true 选中、false 未选中 | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "gateControlId": "", "deptId": "", "deptIdLink": "", "deptName": "", "deviceUuid": "", "deviceName": "", "gateControlNo": "", "deviceModel": "", "online": 0, "isSelected": false } ], "pageable": {}, "total": 0 } } ``` --- ### 15.15 列表--访客申请 > 基础信息 **路径:** /saas/webadmin/visit/findAllRecord **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | userName | string | 否 | 访客姓名 | | userEmail | string | 否 | 访客邮箱 | | userPhone | string | 否 | 访客手机 | | startTime | string | 否 | 访问开始时间 | | endTime | string | 否 | 访问结束时间 | | states | integer | 否 | 状态--多个逗号分隔:-1 已取消、0 待审核、2 已到、3 未到 | | verified | boolean | 否 | 是否已审核(ture查询非待审核状态state不可用;false或不存在则state正常使用) | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─id | string | | |       |─createById | string | | |       |─createTime | object | | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─updateById | string | | |       |─updateTime | object | | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─tenantId | string | 租户id | |       |─permissionGroupId1 | string | 权限组id1--逻辑关联 | |       |─permissionGroupId2 | string | 权限组id2--业务关联 | |       |─state | integer | 状态:-1 已取消、0 待审核、1 已通过、2 已到、3 未到 | |       |─userId | string | 访客userId | |       |─userName | string | 访客姓名 | |       |─userEmail | string | 访客邮箱 | |       |─userPhone | string | 访客手机 | |       |─userPhoto | string | 访客人脸照片id | |       |─userIdCardNum | string | 访客身份证号 | |       |─startTime | object | 来访开始时间 | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─endTime | object | 来访结束时间 | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─inviteId | string | 被访人id | |       |─inviteName | string | 被访人姓名 | |       |─inviteEmail | string | 被访人邮箱 | |       |─invitePhone | string | 被访人手机 | |       |─inviteDeptId | string | 被访人组织Id | |       |─inviteDeptIdLink | string | 被访人组织IdLink | |       |─approvalId | string | 审批人id | |       |─approvalName | string | 审批人名称 | |       |─approvalTime | object | 审批时间 | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─visitorCodeUrl | string | 访客码链接 | |       |─remark | string | 备注 | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "tenantId": "", "permissionGroupId1": "", "permissionGroupId2": "", "state": 0, "userId": "", "userName": "", "userEmail": "", "userPhone": "", "userPhoto": "", "userIdCardNum": "", "startTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "endTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "inviteId": "", "inviteName": "", "inviteEmail": "", "invitePhone": "", "inviteDeptId": "", "inviteDeptIdLink": "", "approvalId": "", "approvalName": "", "approvalTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "visitorCodeUrl": "", "remark": "" } ], "pageable": {}, "total": 0 } } ``` --- ### 15.16 修改状态--审核、取消等操作 > 基础信息 **路径:** /saas/webadmin/visit/updateState **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | 是 | string | 访客申请id | | state | 是 | integer | 状态: -1 已取消、0 待审核、1 已通过、2 已到、3 未到<br>访客状态(状态:1已通过;0待审核;-1已取消) | | permissionGroupId | 是 | string | 权限组id | **Body示例:** ```json { "id": "", "state": 0, "permissionGroupId": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ## 16.考勤 ### 16.1 考勤组 #### 16.1.1 新增 > 基础信息 **路径:** /saas/webadmin/attendance/insert **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | name | 是 | string | 名称 | | type | 是 | integer | 类型:1 固定排班、2 自由班、3 排班制 | | workTime | 是 | string | 工作日设置:1,2,3 代表星期1、星期二、星期三 | | rule | 是 | string | 上下班设置 jsonString<br><p><br>固定排班、自由班 :object; 排班制:array<br><p><br>id: id<br>name: 名称<br>startTime: 开始时间<br>endTime: 结束时间<br>isDefault: 是否默认上下班规则设置<br>lateUpNum: 上班晚多少分钟记为迟到<br>lateDownNum: 下班早多少分钟记为早退<br>missUpNum: 上班晚多少分钟记为缺卡<br>missDownNum: 下班早多少分钟记为缺卡<br>maxUpNum: 最早提前多少分钟打卡<br>maxDownNum: 最晚延后多少分钟打卡<br>isRest: 是否开启休息时间 0 否、1 是 默认否<br>restStartTime: 休息时间--开始<br>restEndTime: 休息时间--结束<br>isAutoOvertime 自动统计加班工时:0 否、1 是 默认否<br>overtimeStart: 下班多少分钟后开始计入加班<br>overtimeLate: 加班少于多少分钟不计入加班 | | period | 是 | string | 周期定义 jsonString<br><p><br>固定排班、自由班 :null; 排班制:array<br><p><br>id: id<br>name: 名称<br>num: 周期天数<br>rules:[{ 数组数量和num保持一致,休息使用 id:rest, name:rest 标记<br>id: 上下班设置id,<br>name: 上下班设置名称开始时间+结束时间<br>}] | | workDate | 否 | string | 新建工作日 | | restDate | 否 | string | 新建休息日 | | userIds | 是 | string | 用户ids | | deviceUuids | 是 | string | 设备uuids | | attendanceDeviceAuth | 是 | array | 考勤规则下不同设备的的打卡方式 | |   |─ | | object | | |     |─deviceUuid | 是 | string | 设备Uuid | |     |─deviceName | 是 | string | 设备名 | |     |─attendanceAuth | 是 | string | 设备支持的考勤打卡方式 | **Body示例:** ```json { "name": "", "type": 0, "workTime": "", "rule": "", "period": "", "workDate": "", "restDate": "", "userIds": "", "deviceUuids": "", "attendanceDeviceAuth": [ { "deviceUuid": "", "deviceName": "", "attendanceAuth": "" } ] } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- #### 16.1.2 更新 > 基础信息 **路径:** /saas/webadmin/attendance/update **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | name | 是 | string | 名称 | | type | 是 | integer | 类型:1 固定排班、2 自由班、3 排班制 | | workTime | 是 | string | 工作日设置:1,2,3 代表星期1、星期二、星期三 | | rule | 是 | string | 上下班设置 jsonString<br><p><br>固定排班、自由班 :object; 排班制:array<br><p><br>id: id<br>name: 名称<br>startTime: 开始时间<br>endTime: 结束时间<br>isDefault: 是否默认上下班规则设置<br>lateUpNum: 上班晚多少分钟记为迟到<br>lateDownNum: 下班早多少分钟记为早退<br>missUpNum: 上班晚多少分钟记为缺卡<br>missDownNum: 下班早多少分钟记为缺卡<br>maxUpNum: 最早提前多少分钟打卡<br>maxDownNum: 最晚延后多少分钟打卡<br>isRest: 是否开启休息时间 0 否、1 是 默认否<br>restStartTime: 休息时间--开始<br>restEndTime: 休息时间--结束<br>isAutoOvertime 自动统计加班工时:0 否、1 是 默认否<br>overtimeStart: 下班多少分钟后开始计入加班<br>overtimeLate: 加班少于多少分钟不计入加班 | | period | 是 | string | 周期定义 jsonString<br><p><br>固定排班、自由班 :null; 排班制:array<br><p><br>id: id<br>name: 名称<br>num: 周期天数<br>rules:[{ 数组数量和num保持一致,休息使用 id:rest, name:rest 标记<br>id: 上下班设置id,<br>name: 上下班设置名称开始时间+结束时间<br>}] | | workDate | 否 | string | 新建工作日 | | restDate | 否 | string | 新建休息日 | | userIds | 是 | string | 用户ids | | deviceUuids | 是 | string | 设备uuids | | attendanceDeviceAuth | 是 | array | 考勤规则下不同设备的的打卡方式 | |   |─ | | object | | |     |─deviceUuid | 是 | string | 设备Uuid | |     |─deviceName | 是 | string | 设备名 | |     |─attendanceAuth | 是 | string | 设备支持的考勤打卡方式 | | id | 是 | string | 考勤组id | **Body示例:** ```json { "name": "", "type": 0, "workTime": "", "rule": "", "period": "", "workDate": "", "restDate": "", "userIds": "", "deviceUuids": "", "attendanceDeviceAuth": [ { "deviceUuid": "", "deviceName": "", "attendanceAuth": "" } ], "id": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- #### 16.1.3 删除 > 基础信息 **路径:** /saas/webadmin/attendance/deleteById **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | 是 | 否 | 资源id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- #### 16.1.4 查询所有 > 基础信息 **路径:** /saas/webadmin/attendance/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | name | string | 否 | 名称 | | type | integer | 否 | 类型:1 固定排班、2 自由班 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─id | string | id | |       |─name | string | 名称 | |       |─type | integer | 类型:1 固定排班、2 自由班 | |       |─userNum | integer | 考勤人数 | |       |─ruleTimeDisplay | string | 考勤时间 | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "id": "", "name": "", "type": 0, "userNum": 0, "ruleTimeDisplay": "" } ], "pageable": {}, "total": 0 } } ``` --- #### 16.1.5 详情 > 基础信息 **路径:** /saas/webadmin/attendance/findById **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 否 | 考勤组id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─id | string | | |   |─createById | string | | |   |─createTime | object | | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─updateById | string | | |   |─updateTime | object | | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─tenantId | string | | |   |─permissionGroupId | string | 权限组id | |   |─name | string | 名称 | |   |─type | integer | 类型:1 固定排班、2 自由班 | |   |─workTime | string | 工作日设置:1,2,3 代表星期1、星期二、星期三 | |   |─workNum | integer | 上下班次数:默认1 | |   |─rule | string | 上下班设置 jsonString<br><p><br>id: id<br>name: 名称<br>startTime: 开始时间<br>endTime: 结束时间<br>isDefault: 是否默认上下班规则设置<br>lateUpNum: 上班晚多少分钟记为迟到<br>lateDownNum: 下班早多少分钟记为早退<br>missUpNum: 上班晚多少分钟记为缺卡<br>missDownNum: 下班早多少分钟记为缺卡<br>maxUpNum: 最早提前多少分钟打卡<br>maxDownNum: 最晚延后多少分钟打卡<br>isRest: 是否开启休息时间 0 否、1 是 默认否<br>restStartTime: 休息时间--开始<br>restEndTime: 休息时间--结束<br>isAutoOvertime 自动统计加班工时:0 否、1 是 默认否<br>overtimeStart: 下班多少分钟后开始计入加班<br>overtimeLate: 加班少于多少分钟不计入加班 | |   |─period | string | 周期定义 jsonString--排班制使用,Array类型<br><p><br>id: id<br>name: 名称<br>num: 周期天数<br>rules:[{ 数组数量和num保持一致,休息使用 id:rest, name:rest 标记<br>id: 上下班设置id,<br>name: 上下班设置名称开始时间+结束时间<br>}] | |   |─workDate | string | 新建工作日 | |   |─restDate | string | 新建休息日 | |   |─attendanceDeviceAuth | string | 考勤规则下不同设备的的打卡方式 | |   |─userNames | string | 用户名称列表 | |   |─userList | array | | |     |─ | object | | |       |─userId | string | 人员ID | |       |─userName | string | 人员名称 | |       |─userEmail | string | 人员邮箱 | |       |─userPhone | string | 人员手机 | |       |─deptId | string | 组织id | |       |─deptName | string | 组织Name | |       |─deptIdLink | string | 组织id链接 | |   |─deviceNames | string | 设备名称列表 | |   |─deviceList | array | | |     |─ | object | | |       |─gateControlId | string | 门控设备id | |       |─deptId | string | 组织id | |       |─deptIdLink | string | 组织idLink | |       |─deptName | string | 组织名称 | |       |─deviceUuid | string | 设备SN | |       |─deviceName | string | 设备名称 | |       |─gateControlNo | string | 门控编号 | |       |─deviceModel | string | 设备型号 | |       |─online | integer | 设备在线状态 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "tenantId": "", "permissionGroupId": "", "name": "", "type": 0, "workTime": "", "workNum": 0, "rule": "", "period": "", "workDate": "", "restDate": "", "attendanceDeviceAuth": "", "userNames": "", "userList": [ { "userId": "", "userName": "", "userEmail": "", "userPhone": "", "deptId": "", "deptName": "", "deptIdLink": "" } ], "deviceNames": "", "deviceList": [ { "gateControlId": "", "deptId": "", "deptIdLink": "", "deptName": "", "deviceUuid": "", "deviceName": "", "gateControlNo": "", "deviceModel": "", "online": 0 } ] } } ``` --- #### 16.1.6 校验人员是否在其他考勤组中 > 基础信息 **路径:** /saas/webadmin/attendance/checkUserExitOtherAttendance **请求方法:** POST > 请求参数 **Headers:** **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | 是 | string | 考勤组id | | userIds | 是 | string | 用户ids | **Body示例:** ```json { "id": "", "userIds": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- #### 16.1.7 设备支持的考勤方式 > 基础信息 **路径:** /saas/webadmin/attendance/getSupportedPermissionTypes **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | uuids | array | 是 | 设备uuid | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 响应业务体 | |   |─ | object | | |     |─deviceUuid | string | 设备Uuid | |     |─deviceName | string | 设备名 | |     |─attendanceAuth | string | 设备支持的考勤打卡方式 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "deviceUuid": "", "deviceName": "", "attendanceAuth": "" } ] } ``` --- ### 16.2 排班 #### 16.2.1 包含展示的table列表、考勤组信息 > 基础信息 **路径:** /saas/webadmin/attendanceShift/findTableData **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | attendanceId | string | 否 | 考勤组id | | searchDate | string | 否 | | | userId | string | 否 | 用户id | | userName | string | 否 | 用户名称 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─attendance | object | 考勤数据 | |     |─id | string | | |     |─createById | string | | |     |─createTime | object | | |       |─dateTime | string | The local date-time. | |       |─offset | object | The offset from UTC/Greenwich. | |         |─totalSeconds | integer | The total offset in seconds. | |       |─zone | object | The time-zone. | |     |─updateById | string | | |     |─updateTime | object | | |       |─dateTime | string | The local date-time. | |       |─offset | object | The offset from UTC/Greenwich. | |         |─totalSeconds | integer | The total offset in seconds. | |       |─zone | object | The time-zone. | |     |─tenantId | string | | |     |─permissionGroupId | string | 权限组id | |     |─name | string | 名称 | |     |─type | integer | 类型:1 固定排班、2 自由班 | |     |─workTime | string | 工作日设置:1,2,3 代表星期1、星期二、星期三 | |     |─workNum | integer | 上下班次数:默认1 | |     |─rule | string | 上下班设置 jsonString<br><p><br>id: id<br>name: 名称<br>startTime: 开始时间<br>endTime: 结束时间<br>isDefault: 是否默认上下班规则设置<br>lateUpNum: 上班晚多少分钟记为迟到<br>lateDownNum: 下班早多少分钟记为早退<br>missUpNum: 上班晚多少分钟记为缺卡<br>missDownNum: 下班早多少分钟记为缺卡<br>maxUpNum: 最早提前多少分钟打卡<br>maxDownNum: 最晚延后多少分钟打卡<br>isRest: 是否开启休息时间 0 否、1 是 默认否<br>restStartTime: 休息时间--开始<br>restEndTime: 休息时间--结束<br>isAutoOvertime 自动统计加班工时:0 否、1 是 默认否<br>overtimeStart: 下班多少分钟后开始计入加班<br>overtimeLate: 加班少于多少分钟不计入加班 | |     |─period | string | 周期定义 jsonString--排班制使用,Array类型<br><p><br>id: id<br>name: 名称<br>num: 周期天数<br>rules:[{ 数组数量和num保持一致,休息使用 id:rest, name:rest 标记<br>id: 上下班设置id,<br>name: 上下班设置名称开始时间+结束时间<br>}] | |     |─workDate | string | 新建工作日 | |     |─restDate | string | 新建休息日 | |     |─attendanceDeviceAuth | string | 考勤规则下不同设备的的打卡方式 | |   |─headers | array | 表头 | |     |─ | string | | |   |─tableUsers | array | 行数据--每行一个用户 | |     |─ | object | | |       |─userId | string | 用户Id | |       |─userName | string | 用户名称 | |       |─tableDays | object | 列数据--日期列表<br><p><br>没设置:只有日期<br>设置休息:有日期,id=rest<br>设置班次:有日期,id=班次Id | |         |─key | object | | |           |─ruleId | string | | |           |─ruleName | string | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "attendance": { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "tenantId": "", "permissionGroupId": "", "name": "", "type": 0, "workTime": "", "workNum": 0, "rule": "", "period": "", "workDate": "", "restDate": "", "attendanceDeviceAuth": "" }, "headers": [ "" ], "tableUsers": [ { "userId": "", "userName": "", "tableDays": { "": { "ruleId": "", "ruleName": "" } } } ] } } ``` --- #### 16.2.2 排班--通过班次 > 基础信息 **路径:** /saas/webadmin/attendanceShift/saveToRuleId **请求方法:** POST > 请求参数 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | attendanceId | string | 考勤组id | | userId | string | 用户id | | attendanceDate | string | 考勤日期--例如 2025-05-17 | | ruleId | string | 班次id--休息日 传rest固定值 | **Body示例:** ```json { "attendanceId": "", "userId": "", "attendanceDate": "", "ruleId": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- #### 16.2.3 排班--通过周期 > 基础信息 **路径:** /saas/webadmin/attendanceShift/saveToPeriodId **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | attendanceId | 是 | string | 考勤组id | | userId | 是 | string | 用户id | | attendanceDate | 是 | string | 考勤日期--例如 2025-05-17 | | periodId | 是 | string | 周期id | **Body示例:** ```json { "attendanceId": "", "userId": "", "attendanceDate": "", "periodId": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- #### 16.2.4 排班--行--通过班次 > 基础信息 **路径:** /saas/webadmin/attendanceShift/saveRowToRuleId **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | attendanceId | 是 | string | 考勤组id | | userId | 是 | string | 用户id--代表选择行 | | attendanceDate | 是 | object | 考勤月--例如 2025-05 | |   |─year | 是 | integer | The year. | |   |─month | 是 | integer | The month-of-year, not null. | | ruleId | 是 | string | 班次id--休息日 传rest固定值 | **Body示例:** ```json { "attendanceId": "", "userId": "", "attendanceDate": { "year": 0, "month": 0 }, "ruleId": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- #### 16.2.5 排班--行--通过周期 > 基础信息 **路径:** /saas/webadmin/attendanceShift/saveRowToPeriodId **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | attendanceId | 是 | string | 考勤组id | | userId | 是 | string | 用户id--代表选择行 | | attendanceDate | 是 | object | 考勤月--例如 2025-05 | |   |─year | 是 | integer | The year. | |   |─month | 是 | integer | The month-of-year, not null. | | periodId | 是 | string | 周期id | **Body示例:** ```json { "attendanceId": "", "userId": "", "attendanceDate": { "year": 0, "month": 0 }, "periodId": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- #### 16.2.6 排班--列--通过班次 > 基础信息 **路径:** /saas/webadmin/attendanceShift/saveColumnToRuleId **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | attendanceId | 是 | string | 考勤组id | | attendanceDate | 是 | string | 考勤日期--代表列--例如 2025-05-17 | | ruleId | 是 | string | 班次id--休息日 传rest固定值 | **Body示例:** ```json { "attendanceId": "", "attendanceDate": "", "ruleId": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- #### 16.2.7 排班--列--通过周期 > 基础信息 **路径:** /saas/webadmin/attendanceShift/saveColumnToPeriodId **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | attendanceId | 是 | string | 考勤组id | | attendanceDate | 是 | string | 考勤日期--列--例如 2025-05-17 | | periodId | 是 | string | 周期id | **Body示例:** ```json { "attendanceId": "", "attendanceDate": "", "periodId": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 16.3 审批 #### 16.3.1 查询所有 > 基础信息 **路径:** /saas/webadmin/attendanceApply/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | deptId | string | 否 | 组织id | | userId | string | 否 | 用户id | | userName | string | 否 | 用户名称 | | userEmail | string | 否 | 用户邮箱 | | userPhone | string | 否 | 用户手机 | | status | integer | 否 | 状态:0 审批中、1 已通过、2 已拒绝、3 已撤销--支持多个逗号分隔 | | type | integer | 否 | 类型:0 补卡申请、1 请假申请、2 外出申请、3 加班申请、4 出差申请 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─id | string | | |       |─createById | string | | |       |─createTime | object | | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─updateById | string | | |       |─updateTime | object | | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─tenantId | string | 租户id | |       |─userId | string | 申请人id | |       |─userName | string | 申请人名称 | |       |─userEmail | string | 申请人邮箱 | |       |─userPhone | string | 申请人手机 | |       |─deptId | string | 申请人组织id | |       |─deptIdLink | string | 申请人组织idLink | |       |─status | integer | 状态:0 审批中、1 已通过、2 已拒绝、3 已撤销 | |       |─type | integer | 类型:0 补卡申请、1 请假申请、2 外出申请、3 加班申请、4 出差申请 (适用旧逻辑,禁用) | |       |─subType | integer | 子类型:0 年假、1 事假、2 丧假、3 婚假、4 产假、5 育儿假、6 陪产假、7 病假、8 调休假 | |       |─vacationId | string | 请假类型 | |       |─startLocation | string | 开始地点 | |       |─endLocation | string | 结束地点 | |       |─startTime | object | 开始时间 | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─endTime | object | 结束时间 | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─applyNum | number | 请假时长(小时) | |       |─reasonApply | string | 申请原因 | |       |─file | string | 附件 | |       |─approvalId | string | 审批人id(适用旧审批逻辑,禁用) | |       |─approvalName | string | 审批人名称(适用旧审批逻辑禁用) | |       |─reasonReject | string | 驳回原因 | |       |─processInstanceId | string | Flowable 流程实例 id,关联工作流 | |       |─approvals | string | 审批人列表(JSON):<br>[{userId,userName,approvalStatus审批状态,approvalComment审批意见}, ...] | |       |─flowableTemplateId | string | 流程模板 id(用于根据模板撤销设置等控制权限) | |       |─code | string | 模板业务编码,模板类型唯一标识<br>leaveApply-请假申请, cardReissue-补卡申请, outApply-外出申请, businessTripApply-出差申请, overtimeApply-加班申请 | |       |─flowableFinalizePostDone | integer | 是否已完成:终态结果消息 + 通过时的补卡/考勤计算;防 runFinalize 重复调用。<br>0 未完成,1 已完成。 | |       |─vacationName | string | 假期类型 | |       |─templateName | string | 流程模板名 | |       |─deptName | string | 申请人所在部门名称 | |       |─attendanceName | string | 考勤组名称 | |       |─isUndo | boolean | 是否可撤销 | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "tenantId": "", "userId": "", "userName": "", "userEmail": "", "userPhone": "", "deptId": "", "deptIdLink": "", "status": 0, "type": 0, "subType": 0, "vacationId": "", "startLocation": "", "endLocation": "", "startTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "endTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "applyNum": 0.0, "reasonApply": "", "file": "", "approvalId": "", "approvalName": "", "reasonReject": "", "processInstanceId": "", "approvals": "", "flowableTemplateId": "", "code": "", "flowableFinalizePostDone": 0, "vacationName": "", "templateName": "", "deptName": "", "attendanceName": "", "isUndo": false } ], "pageable": {}, "total": 0 } } ``` --- #### 16.3.2 审批 > 基础信息 **路径:** /saas/webadmin/attendanceApply/approval **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | 是 | string | 申请id | | status | 是 | integer | 状态:0 审批中、1 已通过、2 已拒绝、3 已撤销 | | reasonReject | 否 | string | 驳回原因(拒绝时必传) | **Body示例:** ```json { "id": "", "status": 0, "reasonReject": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 16.4 考勤打卡记录 #### 16.4.1 查询所有 > 基础信息 **路径:** /saas/webadmin/attendanceRecord/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | personTypes | integer | 否 | 人员类型 -1所有、0访客 1组织人员; | | deptId | string | 否 | 组织id | | attendanceName | string | 否 | 考勤组名称 | | userId | string | 否 | 用户id | | userName | string | 否 | 用户名称 | | userEmail | string | 否 | 用户邮箱 | | userPhone | string | 否 | 用户手机 | | deviceUuid | string | 否 | 设备uuid | | deviceName | string | 否 | 设备名称 | | type | integer | 否 | 记录类型:0 工作日、1 休息日 | | startDate | string | 否 | 开始日期--筛选考勤日期 2025-04-17 | | endDate | string | 否 | 结束日期--筛选考勤日期 2025-04-17 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─id | string | | |       |─createById | string | | |       |─createTime | object | | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─updateById | string | | |       |─updateTime | object | | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─tenantId | string | 租户id | |       |─attendanceId | string | 考勤组id | |       |─attendanceName | string | 考勤组名称 | |       |─attendanceType | integer | 考勤组类型:1 固定排班、2 自由班 | |       |─attendanceRule | string | 考勤组上下班设置 jsonString | |       |─type | integer | 记录类型:0 工作日、1 休息日 | |       |─attendanceApplyId | string | 考勤申请id | |       |─userId | string | 用户Id | |       |─userName | string | 用户名称 | |       |─userEmail | string | 用户邮箱 | |       |─userPhone | string | 用户手机号 | |       |─deptId | string | 组织id | |       |─deptIdLink | string | 组织idLink | |       |─deptName | string | 组织名称 | |       |─deviceUuid | string | 设备uuid | |       |─deviceName | string | 设备名称 | |       |─attendanceDate | string | 考勤日期 | |       |─weekName | string | 周名称 | |       |─workNum | integer | 上下班次数:默认1 | |       |─totalUpResult | integer | total上班打卡结果:0 正常、1 迟到、2 缺卡 | |       |─totalDownResult | integer | total下班打卡结果:0 正常、1 早退、2 缺卡 | |       |─totalLateNum | integer | total迟到时长(分钟) | |       |─totalEarlyNum | integer | total早退时长(分钟) | |       |─totalWorkNum | integer | total工作时长(分钟) | |       |─totalOvertime | integer | total加班时长(分钟) | |       |─oneUpTime | object | one上班打卡时间 | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─oneUpResult | integer | one上班打卡结果:正常、迟到、缺卡 | |       |─oneDownTime | object | one下班打卡时间 | |         |─dateTime | string | The local date-time. | |         |─offset | object | The offset from UTC/Greenwich. | |           |─totalSeconds | integer | The total offset in seconds. | |         |─zone | object | The time-zone. | |       |─oneDownResult | integer | one下班打卡结果:正常、早退、缺卡 | |       |─oneLateNum | integer | one迟到时长(分钟) | |       |─oneEarlyNum | integer | one早退时长(分钟) | |       |─oneWorkNum | integer | one工作时长(分钟) | |       |─oneOvertime | integer | one加班时长(分钟) | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "tenantId": "", "attendanceId": "", "attendanceName": "", "attendanceType": 0, "attendanceRule": "", "type": 0, "attendanceApplyId": "", "userId": "", "userName": "", "userEmail": "", "userPhone": "", "deptId": "", "deptIdLink": "", "deptName": "", "deviceUuid": "", "deviceName": "", "attendanceDate": "", "weekName": "", "workNum": 0, "totalUpResult": 0, "totalDownResult": 0, "totalLateNum": 0, "totalEarlyNum": 0, "totalWorkNum": 0, "totalOvertime": 0, "oneUpTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "oneUpResult": 0, "oneDownTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "oneDownResult": 0, "oneLateNum": 0, "oneEarlyNum": 0, "oneWorkNum": 0, "oneOvertime": 0 } ], "pageable": {}, "total": 0 } } ``` --- ### 16.5 考勤统计 #### 16.5.1 查询所有 > 基础信息 **路径:** /saas/webadmin/attendanceStatistics/dayNum **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | deptId | string | 否 | 组织id | | userName | string | 否 | 用户名称 | | userEmail | string | 否 | 用户邮箱 | | userPhone | string | 否 | 用户手机 | | deviceName | string | 否 | 设备名称 | | day | string | 否 | 月份:2025-04-01 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─numAttendance | integer | 已出勤人数 | |   |─numClockIn | integer | 需打卡人数 | |   |─numOk | integer | 正常卡人数 | |   |─numLate | integer | 迟到人数 | |   |─numEarly | integer | 早退人数 | |   |─numMiss | integer | 缺卡人数 | |   |─numOvertime | integer | 加班人数 | |   |─numNoAttendance | integer | 未打卡人数 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "numAttendance": 0, "numClockIn": 0, "numOk": 0, "numLate": 0, "numEarly": 0, "numMiss": 0, "numOvertime": 0, "numNoAttendance": 0 } } ``` --- #### 16.5.2 查询所有 > 基础信息 **路径:** /saas/webadmin/attendanceStatistics/monthNum **请求方法:** GET > 请求参数 **Query:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | deptId | string | 否 | 组织id | | userName | string | 否 | 用户名称 | | userEmail | string | 否 | 用户邮箱 | | userPhone | string | 否 | 用户手机 | | deviceName | string | 否 | 设备名称 | | month | string | 否 | 月份:2025-04 | | startDate | string | 否 | 开始日期 | | endDate | string | 否 | 结束日期 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─numAttendance | integer | 应考勤人数 | |   |─numLate | integer | 迟到次数 | |   |─numEarly | integer | 早退次数 | |   |─numMiss | integer | 缺卡次数 | |   |─numOvertime | integer | 加班次数 | |   |─numAbsenteeism | integer | 矿工次数 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "numAttendance": 0, "numLate": 0, "numEarly": 0, "numMiss": 0, "numOvertime": 0, "numAbsenteeism": 0 } } ``` --- #### 16.5.3 日统计 > 基础信息 **路径:** /saas/webadmin/attendanceRecord/day **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | personTypes | integer | 否 | 人员类型 -1所有、0访客 1组织人员; | | deptId | string | 否 | 组织id | | attendanceName | string | 否 | 考勤组名称 | | userId | string | 否 | 用户id | | userName | string | 否 | 用户名称 | | userEmail | string | 否 | 用户邮箱 | | userPhone | string | 否 | 用户手机 | | deviceUuid | string | 否 | 设备uuid | | deviceName | string | 否 | 设备名称 | | type | integer | 否 | 记录类型:0 工作日、1 休息日 | | startDate | string | 否 | 开始日期--筛选考勤日期 2025-04-17 | | endDate | string | 否 | 结束日期--筛选考勤日期 2025-04-17 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─userName | string | 姓名 | |       |─employeeNumber | string | 工号 | |       |─attendanceName | string | 部门 | |       |─position | string | 职位 | |       |─attendanceDate | string | 日期 | |       |─attendanceType | string | 考勤规则 | |       |─firstCheckInTimeForWork1 | string | 上班 1 打卡时间 | |       |─firstCheckOutTimeForWork1 | string | 下班 1 打卡时间 | |       |─attendanceResult | string | 考勤结果 | |       |─requiredWorkingHours | number | 应出勤时长(小时) | |       |─totalWorkingHours | number | 实际出勤时长(小时) | |       |─lateArrivalDuration | integer | 迟到时长(分) | |       |─earlyDepartureDuration | integer | 早退时长(分) | |       |─oneOvertime | number | 加班时长(小时) | |       |─applyNum | string | 请假时长(小时) | |       |─SubType | string | 请假类型 | |       |─durationOfBusinessTrip | string | 出差天数 | |       |─durationOfGoingOut | string | 外出时长(小时) | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "userName": "", "employeeNumber": "", "attendanceName": "", "position": "", "attendanceDate": "", "attendanceType": "", "firstCheckInTimeForWork1": "", "firstCheckOutTimeForWork1": "", "attendanceResult": "", "requiredWorkingHours": 0.0, "totalWorkingHours": 0.0, "lateArrivalDuration": 0, "earlyDepartureDuration": 0, "oneOvertime": 0.0, "applyNum": "", "SubType": "", "durationOfBusinessTrip": "", "durationOfGoingOut": "" } ], "pageable": {}, "total": 0 } } ``` --- #### 16.5.4 日统计 第一次进入页面时调用,返回默认未选中 request 对象 > 基础信息 **路径:** /saas/webadmin/attendanceRecord/init **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | module | string | 否 | 类型 day-日统计 month-月统计 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | basicInfo | object | 基本信息 | |   |─userName | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─employeeNumber | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─attendanceName | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─position | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─attendanceDate | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─attendanceType | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | | punchInfo | object | 打卡信息 | |   |─checkedTime | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─attendanceResult | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─punchCount | integer | | | durationInfo | object | 时长统计 | |   |─requiredWorkingHours | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─totalWorkingHours | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─lateArrivalDuration | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─earlyDepartureDuration | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─oneOvertime | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | | exceptionInfo | object | 异常统计 | |   |─applyNum | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─subType | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─durationOfBusinessTrip | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─durationOfGoingOut | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | **响应示例:** ```json { "basicInfo": { "userName": { "label": "", "checked": false }, "employeeNumber": { "label": "", "checked": false }, "attendanceName": { "label": "", "checked": false }, "position": { "label": "", "checked": false }, "attendanceDate": { "label": "", "checked": false }, "attendanceType": { "label": "", "checked": false } }, "punchInfo": { "checkedTime": { "label": "", "checked": false }, "attendanceResult": { "label": "", "checked": false }, "punchCount": 0 }, "durationInfo": { "requiredWorkingHours": { "label": "", "checked": false }, "totalWorkingHours": { "label": "", "checked": false }, "lateArrivalDuration": { "label": "", "checked": false }, "earlyDepartureDuration": { "label": "", "checked": false }, "oneOvertime": { "label": "", "checked": false } }, "exceptionInfo": { "applyNum": { "label": "", "checked": false }, "subType": { "label": "", "checked": false }, "durationOfBusinessTrip": { "label": "", "checked": false }, "durationOfGoingOut": { "label": "", "checked": false } } } ``` --- #### 16.5.5 日统计 每次复选框变化时,前端把新的 request 对象传过来 > 基础信息 **路径:** /saas/webadmin/attendanceRecord/save **请求方法:** POST > 请求参数 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | module | string | | | requestDay | object | | |   |─basicInfo | object | 基本信息 | |     |─userName | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─employeeNumber | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─attendanceName | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─position | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─attendanceDate | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─attendanceType | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |   |─punchInfo | object | 打卡信息 | |     |─checkedTime | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─attendanceResult | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─punchCount | integer | | |   |─durationInfo | object | 时长统计 | |     |─requiredWorkingHours | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─totalWorkingHours | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─lateArrivalDuration | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─earlyDepartureDuration | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─oneOvertime | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |   |─exceptionInfo | object | 异常统计 | |     |─applyNum | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─subType | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─durationOfBusinessTrip | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─durationOfGoingOut | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | | requestMonth | object | | |   |─basicInfo | object | 基本信息 | |     |─userName | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─employeeNumber | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─attendanceName | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─position | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |   |─attendanceInfo | object | 出勤统计 | |     |─requiredWorkingDays | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─totalWorkingDays | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─requiredWorkingHours | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─totalWorkingHours | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |   |─exceptionInfo | object | 异常统计 | |     |─lateArrivalNumber | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─lateArrivalDuration | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─earlyDepartureNumber | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─earlyDepartureDuration | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─workUpNoCard | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─workDownNoCard | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─absenteeismDays | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─durationOfBusinessTrip | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─durationOfGoingOut | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─replaceCardNumber | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |   |─overtimeInfo | object | 加班统计 | |     |─oneOvertime | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |   |─requestLeaveInfo | object | 请假统计 | |     |─applyNum | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | |     |─vacationTypes | object | 动态的假期类型 | |       |─key | object | | |         |─label | string | 复选框配置项 | |         |─checked | boolean | 勾选状态 | |   |─dayInfo | object | 每日统计 | |     |─attendanceResult | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | **Body示例:** ```json { "module": "", "requestDay": { "basicInfo": { "userName": { "label": "", "checked": false }, "employeeNumber": { "label": "", "checked": false }, "attendanceName": { "label": "", "checked": false }, "position": { "label": "", "checked": false }, "attendanceDate": { "label": "", "checked": false }, "attendanceType": { "label": "", "checked": false } }, "punchInfo": { "checkedTime": { "label": "", "checked": false }, "attendanceResult": { "label": "", "checked": false }, "punchCount": 0 }, "durationInfo": { "requiredWorkingHours": { "label": "", "checked": false }, "totalWorkingHours": { "label": "", "checked": false }, "lateArrivalDuration": { "label": "", "checked": false }, "earlyDepartureDuration": { "label": "", "checked": false }, "oneOvertime": { "label": "", "checked": false } }, "exceptionInfo": { "applyNum": { "label": "", "checked": false }, "subType": { "label": "", "checked": false }, "durationOfBusinessTrip": { "label": "", "checked": false }, "durationOfGoingOut": { "label": "", "checked": false } } }, "requestMonth": { "basicInfo": { "userName": { "label": "", "checked": false }, "employeeNumber": { "label": "", "checked": false }, "attendanceName": { "label": "", "checked": false }, "position": { "label": "", "checked": false } }, "attendanceInfo": { "requiredWorkingDays": { "label": "", "checked": false }, "totalWorkingDays": { "label": "", "checked": false }, "requiredWorkingHours": { "label": "", "checked": false }, "totalWorkingHours": { "label": "", "checked": false } }, "exceptionInfo": { "lateArrivalNumber": { "label": "", "checked": false }, "lateArrivalDuration": { "label": "", "checked": false }, "earlyDepartureNumber": { "label": "", "checked": false }, "earlyDepartureDuration": { "label": "", "checked": false }, "workUpNoCard": { "label": "", "checked": false }, "workDownNoCard": { "label": "", "checked": false }, "absenteeismDays": { "label": "", "checked": false }, "durationOfBusinessTrip": { "label": "", "checked": false }, "durationOfGoingOut": { "label": "", "checked": false }, "replaceCardNumber": { "label": "", "checked": false } }, "overtimeInfo": { "oneOvertime": { "label": "", "checked": false } }, "requestLeaveInfo": { "applyNum": { "label": "", "checked": false }, "vacationTypes": { "": { "label": "", "checked": false } } }, "dayInfo": { "attendanceResult": { "label": "", "checked": false } } } } ``` --- #### 16.5.6 详情 > 基础信息 **路径:** /saas/webadmin/attendanceRecord/findById **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 否 | 打卡记录id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─id | string | | |   |─createById | string | | |   |─createTime | object | | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─updateById | string | | |   |─updateTime | object | | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─tenantId | string | 租户id | |   |─attendanceId | string | 考勤组id | |   |─attendanceName | string | 考勤组名称 | |   |─attendanceType | integer | 考勤组类型:1 固定排班、2 自由班 | |   |─attendanceRule | string | 考勤组上下班设置 jsonString | |   |─type | integer | 记录类型:0 工作日、1 休息日 | |   |─attendanceApplyId | string | 考勤申请id | |   |─userId | string | 用户Id | |   |─userName | string | 用户名称 | |   |─userEmail | string | 用户邮箱 | |   |─userPhone | string | 用户手机号 | |   |─deptId | string | 组织id | |   |─deptIdLink | string | 组织idLink | |   |─deptName | string | 组织名称 | |   |─deviceUuid | string | 设备uuid | |   |─deviceName | string | 设备名称 | |   |─attendanceDate | string | 考勤日期 | |   |─weekName | string | 周名称 | |   |─workNum | integer | 上下班次数:默认1 | |   |─totalUpResult | integer | total上班打卡结果:0 正常、1 迟到、2 缺卡 | |   |─totalDownResult | integer | total下班打卡结果:0 正常、1 早退、2 缺卡 | |   |─totalLateNum | integer | total迟到时长(分钟) | |   |─totalEarlyNum | integer | total早退时长(分钟) | |   |─totalWorkNum | integer | total工作时长(分钟) | |   |─totalOvertime | integer | total加班时长(分钟) | |   |─oneUpTime | object | one上班打卡时间 | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─oneUpResult | integer | one上班打卡结果:正常、迟到、缺卡 | |   |─oneDownTime | object | one下班打卡时间 | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─oneDownResult | integer | one下班打卡结果:正常、早退、缺卡 | |   |─oneLateNum | integer | one迟到时长(分钟) | |   |─oneEarlyNum | integer | one早退时长(分钟) | |   |─oneWorkNum | integer | one工作时长(分钟) | |   |─oneOvertime | integer | one加班时长(分钟) | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "tenantId": "", "attendanceId": "", "attendanceName": "", "attendanceType": 0, "attendanceRule": "", "type": 0, "attendanceApplyId": "", "userId": "", "userName": "", "userEmail": "", "userPhone": "", "deptId": "", "deptIdLink": "", "deptName": "", "deviceUuid": "", "deviceName": "", "attendanceDate": "", "weekName": "", "workNum": 0, "totalUpResult": 0, "totalDownResult": 0, "totalLateNum": 0, "totalEarlyNum": 0, "totalWorkNum": 0, "totalOvertime": 0, "oneUpTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "oneUpResult": 0, "oneDownTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "oneDownResult": 0, "oneLateNum": 0, "oneEarlyNum": 0, "oneWorkNum": 0, "oneOvertime": 0 } } ``` --- #### 16.5.7 月统计 第一次进入页面时调用,返回默认未选中 request 对象 > 基础信息 **路径:** /saas/webadmin/attendanceStatistics/init **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | module | string | 否 | 类型 day-日统计 month-月统计 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | basicInfo | object | 基本信息 | |   |─userName | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─employeeNumber | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─attendanceName | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─position | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | | attendanceInfo | object | 出勤统计 | |   |─requiredWorkingDays | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─totalWorkingDays | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─requiredWorkingHours | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─totalWorkingHours | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | | exceptionInfo | object | 异常统计 | |   |─lateArrivalNumber | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─lateArrivalDuration | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─earlyDepartureNumber | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─earlyDepartureDuration | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─workUpNoCard | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─workDownNoCard | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─absenteeismDays | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─durationOfBusinessTrip | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─durationOfGoingOut | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─replaceCardNumber | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | | overtimeInfo | object | 加班统计 | |   |─oneOvertime | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | | requestLeaveInfo | object | 请假统计 | |   |─applyNum | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | |   |─vacationTypes | object | 动态的假期类型 | |     |─key | object | | |       |─label | string | 复选框配置项 | |       |─checked | boolean | 勾选状态 | | dayInfo | object | 每日统计 | |   |─attendanceResult | object | | |     |─label | string | 复选框配置项 | |     |─checked | boolean | 勾选状态 | **响应示例:** ```json { "basicInfo": { "userName": { "label": "", "checked": false }, "employeeNumber": { "label": "", "checked": false }, "attendanceName": { "label": "", "checked": false }, "position": { "label": "", "checked": false } }, "attendanceInfo": { "requiredWorkingDays": { "label": "", "checked": false }, "totalWorkingDays": { "label": "", "checked": false }, "requiredWorkingHours": { "label": "", "checked": false }, "totalWorkingHours": { "label": "", "checked": false } }, "exceptionInfo": { "lateArrivalNumber": { "label": "", "checked": false }, "lateArrivalDuration": { "label": "", "checked": false }, "earlyDepartureNumber": { "label": "", "checked": false }, "earlyDepartureDuration": { "label": "", "checked": false }, "workUpNoCard": { "label": "", "checked": false }, "workDownNoCard": { "label": "", "checked": false }, "absenteeismDays": { "label": "", "checked": false }, "durationOfBusinessTrip": { "label": "", "checked": false }, "durationOfGoingOut": { "label": "", "checked": false }, "replaceCardNumber": { "label": "", "checked": false } }, "overtimeInfo": { "oneOvertime": { "label": "", "checked": false } }, "requestLeaveInfo": { "applyNum": { "label": "", "checked": false }, "vacationTypes": { "": { "label": "", "checked": false } } }, "dayInfo": { "attendanceResult": { "label": "", "checked": false } } } ``` --- #### 16.5.8 月统计 每次复选框变化时,前端把新的 request 对象传过来 > 基础信息 **路径:** /saas/webadmin/attendanceStatistics/save **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | module | 是 | string | 类型 day-日统计 month-月统计 | | requestDay | 是 | object | | |   |─basicInfo | 是 | object | 基本信息 | |     |─userName | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─employeeNumber | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─attendanceName | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─position | | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─attendanceDate | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─attendanceType | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |   |─punchInfo | 是 | object | 打卡信息 | |     |─checkedTime | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─attendanceResult | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─punchCount | 是 | integer | | |   |─durationInfo | 是 | object | 时长统计 | |     |─requiredWorkingHours | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─totalWorkingHours | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─lateArrivalDuration | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─earlyDepartureDuration | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─oneOvertime | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |   |─exceptionInfo | 是 | object | 异常统计 | |     |─applyNum | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─subType | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─durationOfBusinessTrip | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─durationOfGoingOut | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | | requestMonth | 是 | object | | |   |─basicInfo | 是 | object | 基本信息 | |     |─userName | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─employeeNumber | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─attendanceName | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─position | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |   |─attendanceInfo | 是 | object | 出勤统计 | |     |─requiredWorkingDays | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─totalWorkingDays | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─requiredWorkingHours | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─totalWorkingHours | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |   |─exceptionInfo | 是 | object | 异常统计 | |     |─lateArrivalNumber | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─lateArrivalDuration | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─earlyDepartureNumber | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─earlyDepartureDuration | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─workUpNoCard | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─workDownNoCard | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─absenteeismDays | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─durationOfBusinessTrip | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─durationOfGoingOut | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─replaceCardNumber | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |   |─overtimeInfo | 是 | object | 加班统计 | |     |─oneOvertime | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |   |─requestLeaveInfo | 是 | object | 请假统计 | |     |─applyNum | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | |     |─vacationTypes | 是 | object | 动态的假期类型 | |       |─key | 是 | object | | |         |─label | 是 | string | 复选框配置项 | |         |─checked | 是 | boolean | 勾选状态 | |   |─dayInfo | 是 | object | 每日统计 | |     |─attendanceResult | 是 | object | | |       |─label | 是 | string | 复选框配置项 | |       |─checked | 是 | boolean | 勾选状态 | **Body示例:** ```json { "module": "", "requestDay": { "basicInfo": { "userName": { "label": "", "checked": false }, "employeeNumber": { "label": "", "checked": false }, "attendanceName": { "label": "", "checked": false }, "position": { "label": "", "checked": false }, "attendanceDate": { "label": "", "checked": false }, "attendanceType": { "label": "", "checked": false } }, "punchInfo": { "checkedTime": { "label": "", "checked": false }, "attendanceResult": { "label": "", "checked": false }, "punchCount": 0 }, "durationInfo": { "requiredWorkingHours": { "label": "", "checked": false }, "totalWorkingHours": { "label": "", "checked": false }, "lateArrivalDuration": { "label": "", "checked": false }, "earlyDepartureDuration": { "label": "", "checked": false }, "oneOvertime": { "label": "", "checked": false } }, "exceptionInfo": { "applyNum": { "label": "", "checked": false }, "subType": { "label": "", "checked": false }, "durationOfBusinessTrip": { "label": "", "checked": false }, "durationOfGoingOut": { "label": "", "checked": false } } }, "requestMonth": { "basicInfo": { "userName": { "label": "", "checked": false }, "employeeNumber": { "label": "", "checked": false }, "attendanceName": { "label": "", "checked": false }, "position": { "label": "", "checked": false } }, "attendanceInfo": { "requiredWorkingDays": { "label": "", "checked": false }, "totalWorkingDays": { "label": "", "checked": false }, "requiredWorkingHours": { "label": "", "checked": false }, "totalWorkingHours": { "label": "", "checked": false } }, "exceptionInfo": { "lateArrivalNumber": { "label": "", "checked": false }, "lateArrivalDuration": { "label": "", "checked": false }, "earlyDepartureNumber": { "label": "", "checked": false }, "earlyDepartureDuration": { "label": "", "checked": false }, "workUpNoCard": { "label": "", "checked": false }, "workDownNoCard": { "label": "", "checked": false }, "absenteeismDays": { "label": "", "checked": false }, "durationOfBusinessTrip": { "label": "", "checked": false }, "durationOfGoingOut": { "label": "", "checked": false }, "replaceCardNumber": { "label": "", "checked": false } }, "overtimeInfo": { "oneOvertime": { "label": "", "checked": false } }, "requestLeaveInfo": { "applyNum": { "label": "", "checked": false }, "vacationTypes": { "": { "label": "", "checked": false } } }, "dayInfo": { "attendanceResult": { "label": "", "checked": false } } } } ``` --- #### 16.5.9 获取动态的假期类型 > 基础信息 **路径:** /saas/webadmin/attendanceStatistics/getVacationName **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 响应业务体 | |   |─ | string | | **响应示例:** ```json { "code": 0, "msg": "", "data": [ "" ] } ``` --- #### 16.5.10 月统计列表 > 基础信息 **路径:** /saas/webadmin/attendanceStatistics/findMonth **请求方法:** GET > 请求参数 **Query:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | deptId | string | 否 | 组织id | | userName | string | 否 | 用户名称 | | userEmail | string | 否 | 用户邮箱 | | userPhone | string | 否 | 用户手机 | | deviceName | string | 否 | 设备名称 | | month | string | 否 | 月份:2025-04 | | startDate | string | 否 | 开始日期 | | endDate | string | 否 | 结束日期 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─userName | string | 姓名 | |       |─employeeNumber | string | 工号 | |       |─attendanceName | string | 部门 | |       |─position | string | 职位 | |       |─requiredWorkingDays | integer | 应出勤天数 | |       |─totalWorkingDays | integer | 实际出勤天数 | |       |─requiredWorkingHours | number | 应出勤时长(小时) | |       |─totalWorkingHours | number | 实际出勤时长(小时) | |       |─lateArrivalNumber | integer | 迟到次数 | |       |─lateArrivalDuration | integer | 迟到时长(分) | |       |─earlyDepartureNumber | integer | 早退次数 | |       |─earlyDepartureDuration | integer | 早退时长(分) | |       |─workUpNoCard | integer | 上班卡缺卡 | |       |─workDownNoCard | integer | 下班卡缺卡 | |       |─absenteeismDays | integer | 矿工天数 | |       |─durationOfBusinessTrip | number | 出差天数 | |       |─durationOfGoingOut | number | 外出时长(小时) | |       |─replaceCardNumber | integer | 补卡次数 | |       |─oneOvertime | number | 加班时长(小时) | |       |─applyNum | number | 请假时长(小时) | |       |─attendanceResult | string | 考勤结果 | |       |─vacationNum | string | 各类型请假时长 | |       |─dailyRecords | string | 每日明细 | |       |─paidLeaveNum | number | 带薪休假工时 | |       |─unpaidLeaveNum | number | 无薪休假工时 | |       |─startDate | string | 开始日期 | |       |─endDate | string | 结束日期 | |       |─regularHours | number | 正常工时 | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "userName": "", "employeeNumber": "", "attendanceName": "", "position": "", "requiredWorkingDays": 0, "totalWorkingDays": 0, "requiredWorkingHours": 0.0, "totalWorkingHours": 0.0, "lateArrivalNumber": 0, "lateArrivalDuration": 0, "earlyDepartureNumber": 0, "earlyDepartureDuration": 0, "workUpNoCard": 0, "workDownNoCard": 0, "absenteeismDays": 0, "durationOfBusinessTrip": 0.0, "durationOfGoingOut": 0.0, "replaceCardNumber": 0, "oneOvertime": 0.0, "applyNum": 0.0, "attendanceResult": "", "vacationNum": "", "dailyRecords": "", "paidLeaveNum": 0.0, "unpaidLeaveNum": 0.0, "startDate": "", "endDate": "", "regularHours": 0.0 } ], "pageable": {}, "total": 0 } } ``` --- ## 17.假期管理 ### 17.1 新增 > 基础信息 **路径:** /saas/webadmin/attendanceVacation/insert **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | name | 是 | string | 假期名 | | minTime | 是 | number | 最小请假单位(h) | | status | 否 | integer | 状态 0:启用 1:禁用 | | paid | 是 | integer | 是否带薪 0:带薪 1:不带薪 | **Body示例:** ```json { "name": "", "minTime": 0.0, "status": 0, "paid": 0 } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 17.2 更新 > 基础信息 **路径:** /saas/webadmin/attendanceVacation/update **请求方法:** POST > 请求参数 **Body:** | 名称 | 必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | name | 是 | string | 假期名 | | minTime | 是 | number | 最小请假单位(h) | | status | 否 | integer | 状态 0:启用 1:禁用 | | paid | 是 | integer | 是否带薪 0:带薪 1:不带薪 | | id | 是 | string | id | **Body示例:** ```json { "name": "", "minTime": 0.0, "status": 0, "paid": 0, "id": "" } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 17.3 删除--单个 > 基础信息 **路径:** /saas/webadmin/attendanceVacation/deleteByUuid **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 否 | 假期id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 17.4 删除--批量 > 基础信息 **路径:** /saas/webadmin/attendanceVacation/deleteAll **请求方法:** DELETE > 请求参数 **Body:** | 名称 |必填 | 类型 | 备注 | | ------------ | ------------ | ------------ | ------------ | | ids | 是 | array | 批量删除Id | |   |─ | string | | **Body示例:** ```json { "ids": [ "" ] } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 17.5 查询所有 > 基础信息 **路径:** /saas/webadmin/attendanceVacation/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | name | string | 否 | 假期名 | | status | integer | 否 | 状态 0:启用 1:禁用 | | paid | integer | 否 | 是否带薪 0:带薪 1:不带薪 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─content | array | | |     |─ | object | | |       |─id | string | ID | |       |─displayUnit | string | 最小请假单位(转换后) | |       |─minTime | number | 最小请假单位(小时) | |       |─name | string | 假期名 | |       |─status | integer | 状态 0:启用 1:禁用 | |       |─paid | integer | 是否带薪 0:带薪 1:不带薪 | |   |─pageable | object | | |   |─total | integer | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "content": [ { "id": "", "displayUnit": "", "minTime": 0.0, "name": "", "status": 0, "paid": 0 } ], "pageable": {}, "total": 0 } } ``` --- ### 17.6 详情 > 基础信息 **路径:** /saas/webadmin/attendanceVacation/findById **请求方法:** GET > 请求参数 **Query:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | | 否 | | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─id | string | ID | |   |─displayUnit | string | 最小请假单位(转换后) | |   |─minTime | number | 最小请假单位(小时) | |   |─name | string | 假期名 | |   |─status | integer | 状态 0:启用 1:禁用 | |   |─paid | integer | 是否带薪 0:带薪 1:不带薪 | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", "displayUnit": "", "minTime": 0.0, "name": "", "status": 0, "paid": 0 } } ``` --- ### 17.7 查询所有假期 > 基础信息 **路径:** /saas/webadmin/attendanceVacation/findAllList **请求方法:** GET > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 响应业务体 | |   |─ | object | | |     |─id | string | | |     |─createById | string | | |     |─createTime | object | | |       |─dateTime | string | The local date-time. | |       |─offset | object | The offset from UTC/Greenwich. | |         |─totalSeconds | integer | The total offset in seconds. | |       |─zone | object | The time-zone. | |     |─updateById | string | | |     |─updateTime | object | | |       |─dateTime | string | The local date-time. | |       |─offset | object | The offset from UTC/Greenwich. | |         |─totalSeconds | integer | The total offset in seconds. | |       |─zone | object | The time-zone. | |     |─name | string | 假期名 | |     |─minTime | number | 最小请假单位(h) | |     |─status | integer | 状态 0:启用 1:禁用 | |     |─tenantId | string | 租户Id | |     |─isDelete | integer | 是否删除 | |     |─paid | integer | 是否带薪 | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "id": "", "createById": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateById": "", "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "name": "", "minTime": 0.0, "status": 0, "tenantId": "", "isDelete": 0, "paid": 0 } ] } ``` --- ## 18.审批流程 ### 18.1 上传 BPMN XML 并立即激活(/templates + /activate 合并): > 基础信息 **路径:** /saas/webadmin/templates/activate/{id} **请求方法:** POST **备注:** - 先保存模板 - 再发布到引擎 - 返回发布后的模板信息 > 请求参数 **路径参数:** | 名称 | 类型 | 必填 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 是 | 模板id | **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | name | string | 模板名称 | | bpmnXml | string | BPMN XML 内容 | | variablesJson | string | 审批人/变量 JSON 字符串 | | visibleRange | integer | 可见范围 0-所有部门 1-手动选择 | | dept | string | 可见部门id | | undoUnapproved | integer | 未审批申请:0-可撤销 1-不可撤销 | | undoApproving | integer | 审批中申请:0-可撤销 1-不可撤销 | **Body示例:** ```json { "name": "", "bpmnXml": "", "variablesJson": "", "visibleRange": 0, "dept": "", "undoUnapproved": 0, "undoApproving": 0 } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─id | string | | |   |─name | string | 展示名称:随当前请求语言国际化(默认模板按 code 解析;自定义模板为库中名称) | |   |─storageName | string | 数据库持久化的名称,管理端编辑/保存时可与 name 区分使用 | |   |─variablesJson | string | 审批人/变量 JSON,上传时定义 | |   |─published | boolean | 是否已发布 | |   |─enabled | boolean | 是否启用:1-可发起该流程申请,0-停用后不可发起(已发起的流程不受影响) | |   |─processDefinitionKey | string | 发布后的流程定义 key,用于启动流程 | |   |─dept | array | 可见部门id | |     |─ | object | | |       |─deptId | string | | |       |─deptName | string | | |   |─undoUnapproved | integer | 未审批申请:0-可撤销 1-不可撤销 | |   |─undoApproving | integer | 审批中申请:0-可撤销 1-不可撤销 | |   |─visibleRange | integer | 可见范围 0-所有部门 1-手动选择 | |   |─versionNo | string | 模板版本号,如 1.0.0 | |   |─cleanupDeploymentIds | string | 待清理旧 deploymentId 列表,多个英文逗号分隔 | |   |─createTime | object | | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─updateTime | object | | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─route | string | 前端路由编码(用于模板入口) | |   |─icon | string | 前端图标 | |   |─code | string | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", "name": "", "storageName": "", "variablesJson": "", "published": false, "enabled": false, "processDefinitionKey": "", "dept": [ { "deptId": "", "deptName": "" } ], "undoUnapproved": 0, "undoApproving": 0, "visibleRange": 0, "versionNo": "", "cleanupDeploymentIds": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "route": "", "icon": "", "code": "" } } ``` --- ### 18.2 查询流程模板列表,按租户过滤 > 基础信息 **路径:** /saas/webadmin/templates/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | tenantId | string | 是 | 必填,租户 id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | array | 响应业务体 | |   |─ | object | | |     |─id | string | | |     |─name | string | 展示名称:随当前请求语言国际化(默认模板按 code 解析;自定义模板为库中名称) | |     |─storageName | string | 数据库持久化的名称,管理端编辑/保存时可与 name 区分使用 | |     |─variablesJson | string | 审批人/变量 JSON,上传时定义 | |     |─published | boolean | 是否已发布 | |     |─enabled | boolean | 是否启用:1-可发起该流程申请,0-停用后不可发起(已发起的流程不受影响) | |     |─processDefinitionKey | string | 发布后的流程定义 key,用于启动流程 | |     |─dept | array | 可见部门id | |       |─ | object | | |         |─deptId | string | | |         |─deptName | string | | |     |─undoUnapproved | integer | 未审批申请:0-可撤销 1-不可撤销 | |     |─undoApproving | integer | 审批中申请:0-可撤销 1-不可撤销 | |     |─visibleRange | integer | 可见范围 0-所有部门 1-手动选择 | |     |─versionNo | string | 模板版本号,如 1.0.0 | |     |─cleanupDeploymentIds | string | 待清理旧 deploymentId 列表,多个英文逗号分隔 | |     |─createTime | object | | |       |─dateTime | string | The local date-time. | |       |─offset | object | The offset from UTC/Greenwich. | |         |─totalSeconds | integer | The total offset in seconds. | |       |─zone | object | The time-zone. | |     |─updateTime | object | | |       |─dateTime | string | The local date-time. | |       |─offset | object | The offset from UTC/Greenwich. | |         |─totalSeconds | integer | The total offset in seconds. | |       |─zone | object | The time-zone. | |     |─route | string | 前端路由编码(用于模板入口) | |     |─icon | string | 前端图标 | |     |─code | string | | **响应示例:** ```json { "code": 0, "msg": "", "data": [ { "id": "", "name": "", "storageName": "", "variablesJson": "", "published": false, "enabled": false, "processDefinitionKey": "", "dept": [ { "deptId": "", "deptName": "" } ], "undoUnapproved": 0, "undoApproving": 0, "visibleRange": 0, "versionNo": "", "cleanupDeploymentIds": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "route": "", "icon": "", "code": "" } ] } ``` --- ### 18.3 根据模板 id 获取模板详情(含 variablesJson),供前端在点击审批人节点时展示审批人 > 基础信息 **路径:** /saas/webadmin/templates/templates/{id} **请求方法:** GET > 请求参数 **路径参数:** | 名称 | 类型 | 必填 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 是 | 模板id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | |   |─id | string | | |   |─name | string | 展示名称:随当前请求语言国际化(默认模板按 code 解析;自定义模板为库中名称) | |   |─storageName | string | 数据库持久化的名称,管理端编辑/保存时可与 name 区分使用 | |   |─variablesJson | string | 审批人/变量 JSON,上传时定义 | |   |─published | boolean | 是否已发布 | |   |─enabled | boolean | 是否启用:1-可发起该流程申请,0-停用后不可发起(已发起的流程不受影响) | |   |─processDefinitionKey | string | 发布后的流程定义 key,用于启动流程 | |   |─dept | array | 可见部门id | |     |─ | object | | |       |─deptId | string | | |       |─deptName | string | | |   |─undoUnapproved | integer | 未审批申请:0-可撤销 1-不可撤销 | |   |─undoApproving | integer | 审批中申请:0-可撤销 1-不可撤销 | |   |─visibleRange | integer | 可见范围 0-所有部门 1-手动选择 | |   |─versionNo | string | 模板版本号,如 1.0.0 | |   |─cleanupDeploymentIds | string | 待清理旧 deploymentId 列表,多个英文逗号分隔 | |   |─createTime | object | | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─updateTime | object | | |     |─dateTime | string | The local date-time. | |     |─offset | object | The offset from UTC/Greenwich. | |       |─totalSeconds | integer | The total offset in seconds. | |     |─zone | object | The time-zone. | |   |─route | string | 前端路由编码(用于模板入口) | |   |─icon | string | 前端图标 | |   |─code | string | | **响应示例:** ```json { "code": 0, "msg": "", "data": { "id": "", "name": "", "storageName": "", "variablesJson": "", "published": false, "enabled": false, "processDefinitionKey": "", "dept": [ { "deptId": "", "deptName": "" } ], "undoUnapproved": 0, "undoApproving": 0, "visibleRange": 0, "versionNo": "", "cleanupDeploymentIds": "", "createTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "updateTime": { "dateTime": "", "offset": { "totalSeconds": 0 }, "zone": {} }, "route": "", "icon": "", "code": "" } } ``` --- ### 18.4 根据模板 id 获取 BPMN XML(用于前端编辑或预览) > 基础信息 **路径:** /saas/webadmin/templates/templates/{id}/bpmn **请求方法:** GET > 请求参数 **路径参数:** | 名称 | 类型 | 必填 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 是 | 模板id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 18.5 启用/停用模板 > 基础信息 **路径:** /saas/webadmin/templates/enable/{id} **请求方法:** POST > 请求参数 **路径参数:** | 名称 | 类型 | 必填 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 是 | 模板id | **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | enabled | boolean | enabled=true 启用(发布)<br>enabled=false 停用(取消发布) | **Body示例:** ```json { "enabled": false } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ## 19、对讲配置管理 ### 19.1 分页查询 > 基础信息 **路径:** /saas/webadmin/intercom/config/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | startTime | string | 否 | | | endTime | string | 否 | | | deviceUuid | string | 否 | 设备uuid/SN码 | | userId | string | 否 | 人员id | | userName | string | 否 | 人员名 | | deptId | string | 否 | 部门id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": {} } ``` --- ### 19.2 所有用户列表 --标记是否已选择 > 基础信息 **路径:** /saas/webadmin/intercom/config/findAllUserWithSelected **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | startTime | string | 否 | | | endTime | string| 否 | | | deptId | string | 否 | 组织Id | | deptIdLink | string | 否 | 组织idLink | | keyword | string | 否 | 关键字--同时检索名称、邮箱 | | name | string | 否 | 姓名 | | phone | string | 否 | 手机号 | | email | string | 否 | 邮箱 | | isActive | integer | 否 | 组织邀请是否同意,0 未处理、1 已同意、2 已拒绝 | | userIdList[0] | string | 否 | 人员idList | | deviceUuid | string | 否 | | > 返回数据 **Headers:** | 名称 | 值 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | content-type | application/json;charset=UTF-8 | 否 | | **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": {} } ``` --- ### 19.3 新增绑定 > 基础信息 **路径:** /saas/webadmin/intercom/config/insert **请求方法:** POST > 请求参数 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | id | string | id | | deviceUuid | string | | | userIds | array | | |   |─ | string | | **Body示例:** ```json { "id": "", "deviceUuid": "", "userIds": [ "" ] } ``` > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 19.4 删除绑定 > 基础信息 **路径:** /saas/webadmin/intercom/config/delete **请求方法:** DELETE > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | id | string | 否 | 可视对讲配置id | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | string | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": "" } ``` --- ### 19.5 分页查询对讲记录 > 基础信息 **路径:** /saas/webadmin/intercom/log/findAll **请求方法:** GET > 请求参数 **Query:** | 名称 | 类型 | 必须 | 备注 | | ------------ | ------------ | ------------ | ------------ | | page | integer | 否 | 第几页(缺省1) | | size | integer | 否 | 每页大小(缺省10) | | startTime | string | 否 | | | endTime | string | 否 | | | deviceUuid | string | 否 | 设备uudi/SN码 | | deviceName |string | 否 | 设备名称 | | userName | string | 否 | 人员姓名 | | callResult | string | 否 | 通话结果状态: CALLING(呼叫中)、CONNECTED(已接通)、NOT_ANSWERED(未接听/无人接听)、TIMEOUT(呼叫超时)、REJECTED(用户拒绝)、BUSY(忙线中)、CANCEL(呼叫取消)、ERROR(异常中断) | | callDirection | integer | 否 | 呼叫方向: 1-设备呼叫APP, 2-APP呼叫设备 | > 返回数据 **Body:** | 名称 | 类型 | 备注 | | ------------ | ------------ | ------------ | | code | integer | 结果状态码(成功:1 失败:0) | | msg | string | 结果描述信息 | | data | object | 响应业务体 | **响应示例:** ```json { "code": 0, "msg": "", "data": {} } ```
zhangkexin
2026年5月22日 14:37
82
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期