API接口文档(pgsql)
在线使用:https://v.le5le.com/
采用前后端分离架构,乐吾乐后端服务提供一整套完整的web组态编辑器的所有数据接口,包含2D/3D图纸接口服务、文件接口服务和用户接口服务等,安装包版本提供后端可执行程序文件,后端源码版提供Java源码。用户也可以自行按照接口文档去实现部分必要的接口,参考接口文档如下:
全局规则
默认:所有接口返回通过是否包含error字段来判断结果成功。
•调用调用成功:直接返回数据,不能包含error字段
// 例如:请求用户信息返回结构
{"id": 1,"username": "用户名"
}
•调用失败时,返回: { error: '错误原因'}
Copy
// 例如:请求用户信息返回结构
{"error": "请先登录","xxx": "其他可选自定义错误信息"
}
Copy
以下接口除非特殊说明都需要携带以下参数
名称 | 位置 | 类型 | 说明 |
Authorization | header | string | 用户登录token |
大屏接口列表
获取登录信息
URL:
/api/account/profile
Method:
GET
参数
无需多余参数
返回
名称 | 类型 | 必选 | 中文名 |
id | string | 是 | 用户id |
account | string | 是 | 账户 |
avatarUrl | string | 是 | 头像url |
username | string | 是 | 用户名 |
phone | string | 是 | |
string | 是 | ||
teams | [object] | 是 | 团队 |
id | string | 是 | |
name | string | 是 | |
company | object | 是 | 公司 |
id | string | 是 | |
name | string | 是 | |
department | object | 是 | 部门 |
id | string | 是 | |
name | string | 是 | |
roles | [string] | 是 | 角色 |
inviteCode | string | 是 | 邀请码 |
string | 是 | 关联微信账号 | |
github | string | 是 | 关联GitHub账号 |
sina | string | 是 | 关联新浪账号 |
vip | integer | 是 | 会员有效期截至时间 |
corporation | object | 是 | 企业 |
id | string | 是 | |
name | string | 是 | |
owner | boolean | 是 | |
license | string | 是 | 营业执照 |
示例:
{"id": "44","account": "enim dolor","avatarUrl": "http://dummyimage.com/100x100","username": "夏超","phone": "18139363365","email": "e.snrsqift@qq.com","teams": [{"id": "39","name": "设反下门持"},{"id": "77","name": "院装先口任年"},{"id": "76","name": "研色问严"}],"company": {"id": "31","name": "来教元理但百"},"department": {"id": "94","name": "的分上适传候"},"roles": ["in sit qui","tempor in exercitation aliqua officia"],"inviteCode": "32","wechat": "aliqua ut aliquip in","github": "ut aliquip","sina": "consequat exercitation dolor cillum mollit","vip": 1662364456
}// 例如:请求用户信息返回结构
{error: '请先登录',xxx: '其他可选自定义错误信息'
}
Copy
新增大屏项目
URL:
/api/data/v/add
Method:
POST
Body
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
name | body | string | 是 | 数据项 | none |
image | body | string | 是 | 缩略图地址 | |
data | body | object | 是 | 图纸数据 | |
type | body | string | 否 | 数据分类 | |
case | body | string | 否 | 应用场景 | |
folder | body | string | 否 | 所属文件夹 |
示例:
// 下面为通用大屏项目文件示例
{"data": {//图纸数据"x": 32,"y": 32,"scale": 1,"pens": [...],"origin": {"x": 0,"y": 0},"center": {"x": 0,"y": 0},"paths": {},"template": "5580654","enableMock": true,"tags": ["方案"],"scaleMode": "1","groups": [],"iconUrls": [],"version": "1.0.23","component": false},"image": "xxx","name": "xxx","folder": "xxx","shared": true,"userFlag": 1
}
Copy
返回
应包含新增大屏文件时,所有数据
// 下面为通用大屏文件示例
{"id": "018d16da-33fb-7f5b-80e8-0e3c32c23983","name": "新建项目","image": "xxx","data": {...},"shared": true,"userFlag": 1,"folder": "新建文件夹","ownerId": "xxx","ownerName": "xxx","createdAt": "2021-01-17T17:56:55.41911+08:00","updatedAt": "2021-01-17T17:56:55.41911+08:00"
}
Copy
更新大屏项目
URL:
/api/data/v/update
Method:
POST
Body
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
id | body | string | 是 | 数据Id | none |
name | body | string | 是 | 数据项 | none |
image | body | string | 是 | 缩略图地址 | |
data | body | object | 是 | 图纸数据 | |
type | body | string | 否 | 数据分类 | |
case | body | string | 否 | 应用场景 |
示例:
// 相对完整的更新示例
{"id": "xxx","data": {"x": 32,"y": 32,"scale": 1,"pens": [...],"origin": {"x": 0,"y": 0},"center": {"x": 0,"y": 0},"paths": {},"template": "186fe58c","tags": ["方案"],"groups": [],"version": "1.0.23","iconUrls": [],"component": false,"scaleMode": "1","enableMock": true,},"image": "xxx","name": "xxx","folder": "xxx","shared": true,"userFlag": 1 //1 - 用户方案 2 - 用户模板
}
Copy
返回
应包含新增大屏文件时,所有数据
// 下面为通用大屏文件示例
{"id": "018d16da-33fb-7f5b-80e8-0e3c32c23983","name": "新建项目","image": "xxx","data": {...},"shared": true,"userFlag": 1,"folder": "新建文件夹","ownerId": "xxx","ownerName": "xxx","createdAt": "2021-01-17T17:56:55.41911+08:00","updatedAt": "2021-01-17T17:56:55.41911+08:00"
}
Copy
获取大屏项目
URL:
/api/data/v/get
Method:
POST
Body
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
id | body | string | 否 | none | |
projection | body | string | 否 | 返回字段 | 英文逗号分隔,例如:id,name,data |
示例:
{"id": "xxx"
}
Copy
返回
应包含新增大屏文件时,所有数据
// 下面为通用大屏文件示例
{"id": "xxx","name": "xxx","image": "xxx","data": {"x": 32,"y": 32,"pens": [...],"tags": ["模板"],"paths": {},"scale": 1,"center": {"x": 0,"y": 0},"groups": [],"origin": {"x": 0,"y": 0},"version": "1.0.23","iconUrls": [],"template": "2830eac2","component": false,"scaleMode": "1","enableMock": true},"shared": true,"folder": "xxx","teams": [],"ownerId": "xxx","ownerName": "xxx","updatedAt": "2021-01-17T17:56:55.41911+08:00"
}
Copy
删除大屏项目
URL:
/api/data/v/delete
Method:
POST
Body
{"id": "大屏项目id"
}
Copy
返回
没有特别要求,参考全局规则。
获取大屏项目列表
URL:
/api/data/v/list
Method:
POST
Query
{current: 1,pageSize: 1000,
}
Copy
Body
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
name | body | string | 否 | 模糊查询name属性 | none |
folder | body | string | 否 | 所属文件夹 | none |
systemFlag | body | integer | 否 | 系统标识 | 1 - 系统方案 2 - 系统模板。请求公共解决方案(非个人)时,必传 |
userFlag | body | integer | 否 | 用户标识 | 1 - 用户方案 2 - 用户模板 |
ownerId | body | string | 否 | 创建者ID | none |
ownerName | body | string | 否 | 创建者名称 | none |
departmentId | body | string | 否 | 部门ID | none |
teamId | body | string | 否 | 团队ID | none |
createdStart | body | integer | 否 | 创建时间起始点 | none |
createdEnd | body | integer | 否 | 创建时间截至点 | none |
shared | body | boolean | 否 | false - 未分享 true - 分享 ,不传 - 全部 | |
sort | body | object | 否 | none | |
key | body | integer | 否 | 排序字段名 | > 0 升序,其他 降序 |
projection | body | string | 否 | 返回字段 | 英文逗号分隔,例如:id,name,data |
示例:
{"userFlag": "1""projection":"id,name,image..."//返回字段,不传默认返回所有字段
}
Copy
返回
// 下面为通用大屏文件示例
{"total": 1,//总共项目数"list": [{"id": "018d16da-33fb-7f5b-80e8-0e3c32c23983","name": "新建项目","image": "xxx","shared": true,"userFlag": 1,"folder": "新建文件夹","ownerId": "xxx","ownerName": "xxx","createdAt": "2021-01-17T17:56:55.41911+08:00","updatedAt": "2021-01-17T17:56:55.41911+08:00"},...]
}
Copy
新增大屏组件
URL:
/api/data/v.component/add
Method:
POST
Body
同“大屏接口列表” - “新增大屏项目”,仅用户组件和系统组件标识不同,详见下方示例
// 下面为通用示例
{"data": {"x": 32,"y": 32,"scale": 1,"pens": [...],"origin": {"x": 0,"y": 0},"center": {"x": 0,"y": 0},"paths": {},"template": "c3e2009","enableMock": true,"tags": ["组件"],"scaleMode": "1","groups": [],"iconUrls": [],"component": true,"version": "1.0.23","componentDatas": [...]},"image": "xxx","name": "xxx","folder": "xxx","shared": true,"userFlag": 1//用户组件//"systemFlag":1//系统组件
}
Copy
返回
应包含新增大屏文件时的数据
// 下面为通用大屏文件示例
{"id": "018d16e5-9223-7539-bc58-f35a2e20ee8b","name": "新建项目","image": "xxx","data": {...},"shared": true,"userFlag": 1,"folder": "新建文件夹","ownerId": "xxx","ownerName": "xx","editorId": "xxx","editorName": "xx","createdAt": "2023-01-17T10:09:20.419817181Z","updatedAt": "2023-01-17T10:09:20.419817181Z"
}
Copy
更新大屏组件
URL:
/api/data/v.component/update
Method:
POST
Body
同“大屏接口列表” - “更新大屏项目”,仅用户组件和系统组件标识不同,详见下方示例
// 下面为通用示例
{"data": {"x": 32,"y": 32,"scale": 1,"pens": [...],"origin": {"x": 0,"y": 0},"center": {"x": 0,"y": 0},"paths": {},"template": "c3e2009","enableMock": true,"tags": ["组件"],"scaleMode": "1","groups": [],"iconUrls": [],"component": true,"version": "1.0.23","componentDatas": [...]},"image": "xxx","name": "xxx","folder": "xxx","shared": true,"userFlag": 1//用户组件//"systemFlag":1//系统组件
}
Copy
返回
应包含新增大屏文件时,所有数据
// 下面为通用大屏文件示例
{"id": "018d16e5-9223-7539-bc58-f35a2e20ee8b","name": "新建项目","image": "xxx","data": {...},"shared": true,"userFlag": 1,"folder": "新建文件夹","ownerId": "xxx","ownerName": "xx","editorId": "xxx","editorName": "xx","createdAt": "2023-01-17T10:09:20.419817181Z","updatedAt": "2023-01-17T10:09:20.419817181Z"
}
Copy
获取大屏组件
URL:
/api/data/v.component/get
Method:
POST
Body
{"id": "大屏组件id"
}
Copy
返回
应包含新增大屏文件时,所有数据
// 下面为通用示例
{"id": "018d16e5-9223-7539-bc58-f35a2e20ee8b","name": "新建项目","image": "xxx","data": {…},"shared": true,"userFlag": 1,"folder": "新建文件夹","ownerId": "xxx","ownerName": "xx","editorId": "xxx","editorName": "xx","createdAt": "2023-01-17T10:09:20.419817181Z","updatedAt": "2023-01-17T10:09:20.419817181Z"
}
Copy
删除大屏组件
URL:
/api/data/v.component/delete
Method:
POST
Body
{"id": "大屏组件id"
}
Copy
返回
没有特别要求,参考全局规则。
获取大屏组件列表
URL:
/api/data/v.component/list
Method:
POST
Query
{"current": 1,//当前第几页,默认1"pageSize": 1000,//每页记录数,默认10
}
Copy
Body
同“大屏接口列表” - “获取大屏项目列表”
示例:
{"userFlag": 1//用户组件//"systemFlag":1//系统组件"projection":"id,name,image..."//返回字段,不传默认返回所有字段
}
Copy
返回
{"total":3,"list":[{"id": "018d16e5-9223-7539-bc58-f35a2e20ee8b","name": "新建项目","image": "xxx","shared": true,"userFlag": 1,"folder": "新建文件夹","ownerId": "xxx","ownerName": "xx","editorId": "xxx","editorName": "xx","createdAt": "2023-01-17T10:09:20.419817181Z","updatedAt": "2023-01-17T10:09:20.419817181Z"},...]
}
Copy
获取3D组件列表
URL:
/api/data/3d/list
Method:
POST
Query
{"current": 1,//当前第几页,默认1"pageSize": 1000,//每页记录数,默认10
}
Copy
Body
同“大屏接口列表” - “获取大屏项目列表”
示例:
{"projection":"id,name,image..."//返回字段,不传默认返回所有字段
}
Copy
返回
{"total":1,"list":[{"id": "018d16e5-9223-7539-bc58-f35a2e20ee8b","name": "新建项目","image": "xxx","createdAt": "2023-01-17T10:09:20.419817181Z","updatedAt": "2023-01-17T10:09:20.419817181Z"}]
}
Copy
新建文件夹
URL:
/api/directory/add
Method:
POST
Body
{"fullpath": "/大屏/{case}/新建文件夹的名称"//case:方案|模板|组件|图片//示例:"fullpath": "/大屏/方案/新建文件夹"
}
Copy
返回
{"id": "018d16eb-8077-7252-89c9-aad43dd3d72f",//文件夹id"ownerId": "0182199f-42e0-70cd-809a-3a35b7e9b39d",//文件夹创建者id"fullpath": "/大屏/组件/新建文件夹",//文件夹完整路径"createdAt": "2024-01-17T10:15:49.111891848Z","updatedAt": "0001-01-01T00:00:00Z"
}
Copy
更新文件夹
URL:
/api/directory/update
Method:
POST
Body
{"oldFullpath": "xxx",//旧文件夹"newFullpath": "xxx"//新文件夹
}
Copy
返回
无特别要求
删除文件夹
URL:
/api/directory/delete
Method:
POST
Body
{"fullpaths": ["/大屏/方案/新建文件夹"//待删除文件夹],"physically": true//true-物理删除 false-逻辑删除
}
Copy
返回
无特别要求
获取文件夹列表
不超过16M的小文件,使用mongodb的二进制存储,非gridfs
URL:
/api/directory/list
Method:
POST
Query
{"current": 1,//当前第几页,默认1"pageSize": 1000,//每页记录数,默认10
}
Copy
Body
{"fullpath": "/大屏/{case}"//case:方案|模板|组件|图片
}
Copy
返回
{"total":1,"list":[{"id": "018d16eb-8077-7252-89c9-aad43dd3d72f","ownerId": "0182199f-42e0-70cd-809a-3a35b7e9b39d","fullpath": "/大屏/组件/新建文件夹","createdAt": "2024-01-17T10:15:49.111891848Z","updatedAt": "0001-01-01T00:00:00Z"}]
}
Copy
上传图片
URL:
/api/image/upload
Method:
POST
FormData
•filename:string 文件名,可选
•shared:string 是否共享,默认为true
•conflict:string directory+name 如果存在,处理方式:默认不穿覆盖;new-自动重命名为一个新文件;其他-不做任何操作,返回报错
•file:Blob 文件二进制
•directory:string 文件存放文件夹,例如:'/2D/缩略图'
返回
{"id": "018d1b1f-eb0b-7ca5-9a31-56269e3095a6","name": "test.png",//图片名称自动获取"fullname": "/2021/0118/1/1/3d5_4680f5a0.png",//图片完整文件名"url": "/2021/0118/1/1/3d5_4680f5a0.png",//图片路径"directory": "/大屏/图片/新建文件夹",//图片所在文件夹"shared": true,"size": 1871165,"ownerId": "xxx","ownerName": "xxx","createdAt": "2021-01-18T05:51:33.131708608Z","updatedAt": "0001-01-01T00:00:00Z"
}
Copy
删除图片
URL:
/api/files/delete
Method:
POST
Body
{"fullnames": ["/2021/0118/1/1/3d5_4680f5a0.png"//图片返回的完整文件名],"physically": true//true-物理删除 false-逻辑删除
}
Copy
返回
无特别要求
获取文件列表
URL:
/api/file/list
Method:
POST
Query
名称 | 类型 | 必选 | 说明 |
current | string | 否 | 当前页 |
pageSize | string | 否 | 每页记录数 |
Body
名称 | 类型 | 必选 | 说明 |
tag | string | 否 | none |
shared | boolean | 否 | false - 未分享 true - 分享 ,不传 - 全部 |
type | string | 否 | none |
name | string | 否 | none |
directory | string | 否 | none |
children | boolean | 否 | 包含所有子目录文件,联合directory使用 |
deleted | integer | 否 | 0 - 未删除, 1 - 删除 ,其他 - 全部 |
remarks | string | 否 | 备注 |
sort | object | 否 | 检索结果排序规则,大于0:升序;小于0:降序 |
{"tag": "string","shared": true,"type": "string","name": "string","directory": "string","children": true,"deleted": 0,"remarks": "string","sort": {"owner_id": 1,"created_at": -1}
}
Copy
返回
{"total": 0,"list": [{"filename": "string","metadata": {}}]
}
Copy
获取素材或png、svg分组列表
用于获取远程指定类型(素材、图元(png、svg))的静态图片资源目录
URL:
/api/assets/folders
Method:
POST
Body
获取素材分组列表
{"path": "v/material"
}
获取png分组列表
{"path": "png"
}
获取svg分组列表
{"path": "svg"
}
Copy
返回
{"list": ["常用图标","智能家居","标题","电信机房","装饰","面板"],"prefix": false,"total":6
}
或
{"list": ["v/material/常用图标/","v/material/智能家居/","v/material/标题/","v/material/电信机房/","v/material/装饰/","v/material/面板/"],"prefix": true,"total":6
}
Copy
获取素材或png、svg文件列表
用于获取远程指定类型(素材、图元(png、svg))的静态图片资源文件列表
URL:
/api/assets/files
Method:
POST
Body
获取素材分组列表
{"path": "v/material"
}
获取png分组列表
{"path": "png"
}
获取svg分组列表
{"path": "svg"
}
Copy
返回
{"list": ["v/material/常用图标/地图标注.svg","v/material/智能家居/太阳能板温度.png","v/material/智能家居/指标.png",],"prefix": true,"total":3
}
//或者
{"total": 2,"list": ["png/2.5D-采暖系统","png/2.5D-制冷站"],"prefix": true
}
Copy
新增数据源
URL:
/api/data/datasources/add
Method:
POST
Body
不同类型,数据结构不一样,建议为文档类型
// 订阅实时数据类型
{"name": "xxx","type": "subscribe","data": {"protocol": "http","url": "/xxx","options": {"clientId": "","username": "","password": "","customClientId": false},"httpTimeInterval": 1000,"headers": "","method": "GET","body": ""}
}// 向后台发送类型
{"name": "test","data": {"body": "","headers": "","httpTimeInterval": 1000,"method": "GET","options": {"clientId": "test","customClientId": true,"password": "test","username": "test"},"protocol": "mqtt","topics": "test","url": "/xxx"},"shared": false,"type": "publish","createdAt": "2024-01-18T09:30:53.856752442Z","updatedAt": "2024-01-18T09:30:53.856752442Z"
}
// 数据集类型
{"name": "test","type": "dataset","data": {"devices": [//数据集{"device": "设备1","label": "整数0-100","id": "data-001","type": "integer","mock": "0-100"}],"mode": "",//数据方式,默认 api-HTTP请求,空字符串-自定义"url": ""//获取数据集的接口,}
}
Copy
返回
应包含新增时,所有数据
// 下面为通用示例
{"id": "018d16f2-55e5-743c-a498-0053afd9b219","name": "test","data": {"body": "","headers": "","httpTimeInterval": 1000,"method": "GET","options": {"clientId": "","customClientId": false,"password": "","username": ""},"protocol": "http","url": "/xxxx"},"shared": false,"type": "subscribe","ownerId": "xxx","ownerName": "xxx","editorId": "xxx","editorName": "xxx","createdAt": "2024-01-17T10:23:16.965635509Z","updatedAt": "2024-01-17T10:23:16.965635509Z"
}
Copy
更新数据源
URL:
/api/data/datasources/update
Method:
POST
Body
// 订阅实时数据类型
{"id": "018d1be8-bc20-756d-bf81-7f1218668059","name": "xxx","data": {"url": "/xxx","body": "","method": "GET","headers": "","options": {"clientId": "","password": "","username": "","customClientId": false},"protocol": "http","httpTimeInterval": 1000},"type": "subscribe",
}// 向后台发送类型
{"id": "018d1be8-bc20-756d-bf81-7f1218668059","type": "publish","name": "xxx""data": {"protocol": "http","options": {"clientId": "","password": "","username": "","customClientId": false},"httpTimeInterval": 1000,"headers": "","method": "GET","body": "","url": "/xxx"},
}// 数据集类型
{"id": "018d1be8-bc20-756d-bf81-7f1218668059","name": "test","type": "dataset","data": {"devices": [//数据集{"device": "设备1","label": "整数0-100","id": "data-001","type": "integer","mock": "0-100"}],"mode": "",//数据方式,默认 api-HTTP请求,空字符串-自定义"url": ""//获取数据集的接口,}
}
Copy
返回
新增是配置的所有数据
// 下面为通用大屏文件示例
{"id": "018d16f2-55e5-743c-a498-0053afd9b219","name": "test","data": {"body": "","headers": "","httpTimeInterval": 1000,"method": "GET","options": {"clientId": "","customClientId": false,"password": "","username": ""},"protocol": "http","url": "/xxxx"},"shared": false,"type": "subscribe","createdAt": "2024-01-17T10:23:16.965635509Z","updatedAt": "2024-01-17T10:23:16.965635509Z"
}
Copy
获取数据源
URL:
/api/data/datasources/get
Method:
POST
Body
{"id": "数据源id"
}
Copy
返回
应包含新增时,所有数据
// 订阅实时数据类型
{"id": "018d16f2-55e5-743c-a498-0053afd9b219","name": "xxx","data": {"url": "/xxx","body": "","method": "GET","headers": "","options": {"clientId": "","password": "","username": "","customClientId": false},"protocol": "http","httpTimeInterval": 1000},"createdAt": "2024-01-17T10:23:16.965635509Z","updatedAt": "2024-01-17T10:23:16.965635509Z"
}// 向后台发送类型
{"id": "018d16f2-55e5-743c-a498-0053afd9b219","name": "test","data": {"body": "","headers": "","httpTimeInterval": 1000,"method": "GET","options": {"clientId": "","customClientId": false,"password": "","username": ""},"protocol": "http","url": "/xxxx"},"shared": false,"type": "subscribe","createdAt": "2024-01-17T10:23:16.965635509Z","updatedAt": "2024-01-17T10:23:16.965635509Z"
}// 数据集类型
{"id": "xxx","name": "test","data": {"devices": [//数据集{"device": "设备1","label": "整数0-100","id": "data-001","type": "integer","mock": "0-100"}],"mode": "",//数据方式,默认 api-HTTP请求,空字符串-自定义"url": ""//获取数据集的接口,}"createdAt": "2024-01-17T10:23:16.965635509Z","updatedAt": "2024-01-17T10:23:16.965635509Z"
}
Copy
删除数据源
URL:
/api/data/datasources/delete
Method:
POST
Body
{"id": "数据源id"
}
Copy
返回
没有特别要求,参考全局规则。
后台管理接口列表
2D图纸列表
URL:
/api/data/2d/list
Method:
POST
Query
{"current": 1,//当前第几页,默认1"pageSize": 1000,//每页记录数,默认10
}
Copy
Body
同“大屏接口列表” - “获取大屏项目列表”
示例:
{"name": "文件名"// 模糊查询
}
Copy
返回
// 下面为通用文件列表示例
{"total": 1,//总共项目数"list": [{"id": "018d16da-33fb-7f5b-80e8-0e3c32c23983","name": "新建项目","image": "xxx","shared": true,"userFlag": 1,"folder": "新建文件夹","ownerId": "xxx","ownerName": "xxx","createdAt": "2021-01-17T17:56:55.41911+08:00","updatedAt": "2021-01-17T17:56:55.41911+08:00"}]
}
Copy
3D图纸列表
URL:
/api/data/3d/list
Method:
POST
Query
{"current": 1,//当前第几页,默认1"pageSize": 1000,//每页记录数,默认10
}
Copy
Body
同“大屏接口列表” - “获取大屏项目列表”
示例:
{"name": "文件名"// 模糊查询
}
Copy
返回
// 下面为通用文件列表示例
{"total": 1,//总共项目数"list": [{"id": "018d1a96-2d16-7094-b298-fbaee854be36","name": "测试","image": "/2021/0118/1/1/7aa4853c-b93f-4272-96f5-42d8c0e0a189_c1a9dede.png","shared": false,"ownerId": "xxx","ownerName": "xxx","createdAt": "2021-01-18T11:21:06.070895+08:00","updatedAt": "2021-01-18T11:21:06.070895+08:00"}]
}
Copy
大屏项目列表
URL:
/api/data/v/list
Method:
POST
Query
{"current": 1,//当前第几页,默认1"pageSize": 1000,//每页记录数,默认10
}
Copy
Body
同“大屏接口列表” - “获取大屏项目列表”
示例:
{"name": "文件名"// 模糊查询
}
Copy
返回
// 下面为通用大屏文件示例
{"total": 1,//总共项目数"list": [{"id": "018d16da-33fb-7f5b-80e8-0e3c32c23983","name": "新建项目","image": "xxx","shared": true,"userFlag": 1,"folder": "新建文件夹","ownerId": "xxx","ownerName": "xxx","createdAt": "2021-01-17T17:56:55.41911+08:00","updatedAt": "2021-01-17T17:56:55.41911+08:00"},...]
}
Copy
更新大屏项目
同“大屏接口列表” - “更新大屏项目”
用户列表
URL:
/api/operation/account/list
Method:
POST
Query
名称 | 类型 | 必选 | 说明 |
current | string | 否 | 当前页 |
pageSize | string | 否 | 每页记录数 |
q | string | 否 | 模糊搜索用户 |
department | string | 否 | 部门id |
team | string | 否 | 团队id |
示例:
{"current": 1,//当前第几页,默认1"pageSize": 1000,//每页记录数,默认10
}
Copy
Body
{"q": "模糊查询,支持用户名、邮箱、手机号等多字段同时模糊查询"
}
Copy
返回
名称 | 类型 | 必选 | 中文名 |
total | number | true | 总数 |
list | [object] | true | 用户信息列表 |
用户信息:
名称 | 类型 | 必选 | 中文名 |
id | string | 是 | 用户id |
account | string | 是 | 账户 |
avatarUrl | string | 是 | 头像url |
username | string | 是 | 用户名 |
phone | string | 是 | |
string | 是 | ||
teams | [object] | 是 | 团队 |
id | string | 是 | |
name | string | 是 | |
company | object | 是 | 公司 |
id | string | 是 | |
name | string | 是 | |
department | object | 是 | 部门 |
id | string | 是 | |
name | string | 是 | |
roles | [string] | 是 | 角色 |
inviteCode | string | 是 | 邀请码 |
string | 是 | 关联微信账号 | |
github | string | 是 | 关联GitHub账号 |
sina | string | 是 | 关联新浪账号 |
vip | integer | 是 | 会员有效期截至时间 |
corporation | object | 是 | 企业 |
id | string | 是 | |
name | string | 是 | |
owner | boolean | 是 | |
license | string | 是 | 营业执照 |
{"total":3,"list":[{"id": "xxx","createdAt": "xxx","department": {"id": "666666666666666666666666","name": "乐吾乐科技"},"email": "","phone": "xxxxxxx","roles": ["系统管理员","运营管理员"],"teams": [],"username": "Alsmile",}]
}
Copy
更新用户信息
URL:
/api/operation/account/update
Method:
POST
Body
同“大屏接口列表” - “用户列表”返回的用户信息字段
{"id": "xxx""xxx": "其他可选"
}
Copy
返回
{"id": "xxx", "xxx": "其他可选"
}
Copy
获取用户头像
URL:
/api/account/avatar/{id}
Method:
GET
Params
名称 | 类型 | 必选 | 说明 |
id | string | 是 | 用户id |
返回
头像文件的二进制内容
获取用户统计信息
URL:
/api/account/statistics
Method:
GET
参数
不需要额外参数
返回
名称 | 类型 | 必选 | 中文名 | 说明 |
userId | string | 否 | 用户ID | none |
used | integer | 否 | 已使用云盘空间容量 | none |
capacity | integer | 否 | 可使用云盘空间容量 | none |
expired | string | 否 | 云盘空间容量到期时间 | none |
VipDataLimit | object | 否 | 允许保存数据最大个数 | VIP会员用户允许保存数据(2D,3D,大屏)最大个数,普通用户返回免费个数。 |
VipDataCount | object | 否 | 实际保存数据个数 | 实际已经保存数据(2D,3D,大屏)个数 |
DeploymentPackageLimit | object | 否 | 允许下载离线部署包的次数 | 大屏、3D、2D |
DeploymentPackageCount | object | 否 | 已经使用的下载离线部署包次数 | none |
{"userId": "01890b98-2a48-70d0-8002-c2db3cf46b85","used": 26723050,"capacity": 10,"expired": "2025-10-23T11:28:36.574333+08:00","vipDataLimit": {"2d": 1000,"3d": 1000,"v": 1000},"vipDataCount": {"2d": 17,"v": 2},"deploymentPackageLimit": {"2d": 5},"deploymentPackageCount": {"2d": 1}
}
Copy
获取统计信息
URL:
/api/operation/statistics
Method:
POST
参数
不需要额外参数
返回
名称 | 类型 | 必选 | 中文名 |
accountCount | number | 是 | 注册用户总数 |
vipCount | number | 是 | 有效VIP用户总数:截止当前查询时间点,还没有过期的VIP用户总数 |
orderCount | number | 是 | 非取消状态的订单总数 |
total2d | number | 是 | 2D图纸数据总数(不包含2D组件) |
last302d | number | 是 | 创建时间为最近30天的2D图纸数据总数(不包含2D组件) |
last602d | number | 是 | 创建时间为最近60天的2D图纸数据总数(不包含2D组件) |
total3d | number | 是 | 同上(不包含组件) |
last303d | number | 是 | 同上(不包含组件) |
last603d | number | 是 | 同上(不包含组件) |
totalV | number | 是 | 同上(不包含组件) |
last30V | number | 是 | 同上(不包含组件) |
last60V | number | 是 | 同上(不包含组件) |
aggregationSignup | [object] | 是 | 近10天,每天的注册账号数。 |
aggregationVip | [object] | 是 | 近10天,每天的充值VIP会员数。(订单状态是完成的订单) |
aggregationCloud | [object] | 是 | 近10天,每天的充值云盘会员数。(订单状态是完成的订单) |
aggregation2d | [string] | 是 | 近10天,每天的2D数据创建数。(不包含组件) |
aggregation3d | [object] | 是 | 近10天,每天的3D数据创建数。(不包含组件) |
aggregationV | [object] | 是 | 近10天,每天的大屏数据创建数。(不包含组件) |
示例
{"accountCount": 18660,"vipCount": 100,"orderCount": 236,"total2d": 24776,"last302d": 33,"last602d": 33,"total3d": 545,"last303d": 16,"last603d": 70,"totalV": 199,"last30V": 18,"last60V": 34,"aggregationSignup": [{"count": 2,"date": "2024-01-04T00:00:00-05:00"}],"aggregationVip": [{"count": 2,"date": "2024-01-09T00:00:00-05:00"},{"count": 7,"date": "2024-01-10T00:00:00-05:00"},{"count": 1,"date": "2024-01-11T00:00:00-05:00"}],"aggregationCloud": null,"aggregation2d": [{"count": 5,"date": "2024-01-04T00:00:00-05:00"},{"count": 1,"date": "2024-01-08T00:00:00-05:00"},{"count": 1,"date": "2024-01-09T00:00:00-05:00"},{"count": 3,"date": "2024-01-10T00:00:00-05:00"},{"count": 6,"date": "2024-01-11T00:00:00-05:00"},{"count": 2,"date": "2024-01-12T00:00:00-05:00"}],"aggregation3d": [{"count": 1,"date": "2024-01-03T00:00:00-05:00"},{"count": 3,"date": "2024-01-08T00:00:00-05:00"},{"count": 1,"date": "2024-01-10T00:00:00-05:00"}],"aggregationV": [{"count": 3,"date": "2024-01-07T00:00:00-05:00"},{"count": 6,"date": "2024-01-10T00:00:00-05:00"},{"count": 2,"date": "2024-01-12T00:00:00-05:00"}]
}
Copy
新建部门信息
URL:
/api/operation/department/create
Method:
POST
Body
名称 | 类型 | 必选 | 中文名 |
name | string | 是 | 名称 |
parentId | string | 是 | 父id |
leader | string | 是 | 负责人 |
{"name": "名称","parentId": "父部门ID","leader":"xxx"
}
Copy
返回
{"id": "xxx", "name": "名称","parentId": "父部门ID","leader":"xxx"
}
Copy
更新部门信息
URL:
/api/operation/department/update
Method:
POST
Body
{"name": "名称","parentId": "父部门ID","leader":"xxx"
}
Copy
返回
{"id": "xxx", "name": "名称","parentId": "父部门ID","leader":"xxx"
}
Copy
删除部门
URL:
/api/operation/department/delete
Method:
POST
Body
{"id": "部门ID",
}
Copy
返回
无特别要求
获取部门列表
URL:
/api/account/departments
Method:
GET
Query
名称 | 类型 | 必选 | 说明 |
q | string | 否 | 部门名称,模糊查询 |
current | string | 否 | 当前页 |
pageSize | string | 否 | 每页记录数 |
返回
{"total": 1,"list": [{"id": "xxx", "name": "名称","parentId": "父部门ID","leader":"xxx"}]
}
Copy
获取企业信息文件内容
URL:
/api/enterprise
Method:
GET
参数
无需多余参数
返回
{"helps": [{"name": "产品介绍","url": "https://doc.le5le.com/document/118756411"},{"name": "快速上手","url": "https://doc.le5le.com/document/119363000"},{"name": "使用手册","url": "https://doc.le5le.com/document/118764244"},{"divider": true,"name": "快捷键","url": "https://doc.le5le.com/document/119620214"},{"divider": true,"name": "企业服务与支持","url": "https://doc.le5le.com/document/119296274"},{"name": "关于我们","url": "https://le5le.com/about.html"}],"home": "https://le5le.com","name": "乐吾乐"
}
Copy
用户中心接口列表
2D图纸列表
URL:
/api/data/2d/list
Method:
POST
Query
{"current": 1,//当前第几页,默认1"pageSize": 1000,//每页记录数,默认10
}
Copy
Body
同“大屏接口列表” - “获取大屏项目列表”
示例:
{"name": "文件名",// 模糊查询"teamId":""//团队id,可不传
}
Copy
返回
// 下面为通用文件列表示例
{"total": 1,//总共项目数"list": [{"id": "018d16da-33fb-7f5b-80e8-0e3c32c23983","name": "新建项目","image": "xxx","shared": true,"userFlag": 1,"folder": "新建文件夹","ownerId": "xxx","ownerName": "xxx","createdAt": "2021-01-17T17:56:55.41911+08:00","updatedAt": "2021-01-17T17:56:55.41911+08:00"}]
}
Copy
3D图纸列表
URL:
/api/data/3d/list
Method:
POST
Query
{"current": 1,//当前第几页,默认1"pageSize": 1000,//每页记录数,默认10
}
Copy
Body
同“大屏接口列表” - “获取大屏项目列表”
示例:
{"name": "文件名",// 模糊查询"teamId":""//团队id,可不传
}
Copy
返回
// 下面为通用文件列表示例
{"total": 1,//总共项目数"list": [{"id": "018d1a96-2d16-7094-b298-fbaee854be36","name": "测试","image": "/2021/0118/1/1/7aa4853c-b93f-4272-96f5-42d8c0e0a189_c1a9dede.png","shared": false,"ownerId": "xxx","ownerName": "xxx","case":"",//场景"createdAt": "2021-01-18T11:21:06.070895+08:00","updatedAt": "2021-01-18T11:21:06.070895+08:00"}]
}
Copy
大屏项目列表
URL:
/api/data/v/list
Method:
POST
Query
{"current": 1,//当前第几页,默认1"pageSize": 1000,//每页记录数,默认10
}
Copy
Body
同“大屏接口列表” - “获取大屏项目列表”
示例:
{"name": "文件名"// 模糊查询"teamId":""//团队id,可不传
}
Copy
返回
// 下面为通用大屏文件示例
{"total": 1,//总共项目数"list": [{"id": "018d16da-33fb-7f5b-80e8-0e3c32c23983","name": "新建项目","image": "xxx","shared": true,"userFlag": 1,"folder": "新建文件夹","ownerId": "xxx","ownerName": "xxx","createdAt": "2021-01-17T17:56:55.41911+08:00","updatedAt": "2021-01-17T17:56:55.41911+08:00"},...]
}
Copy
获取消息列表
URL:
/api/message/list
Method:
POST
Params:
•current 当前页
•pageSize 每页请求数量
Body:
{"q": "",//模糊查询"read": false //是否已读 undefind全部消息 true已读消息 fasle未读消息
}
Copy
返回:
{"list": [{"id": "", //id"title": "a", //标题"html": "a", //内容"to": null, //接收方用户id"from": null, //发送方用户id"data": null, //数据"read": null, //是否已读"createdAt": "2023-09-14T09:59:33.845377+08:00","deletedAt": null}//...],"total": 2
}
Copy
获取未读消息数量
URL:
/api/message/unread/count
Method:
POST
返回:
{"unread": 1 //未读数量
}
Copy
消息标为已读
URL:
/api/message/read
Method:
POST
Body:
{"ids": ["" //消息id列表]
}
Copy
返回:
{}
全部消息标为已读
URL:
/api/message/read/all
Method:
POST
Body:
{}
返回:
{}
删除消息
URL:
/api/message/delete
Method:
POST
Body:
{"ids": [ //消息id列表""]
}
Copy
返回:
{}
获取团队列表
URL:
/api/account/teams
Method:
GET
返回:
{"list": [{"id": "018615fb-1188-70b5-8063-534123f564e3","name": "zzz","avatarUrl": "","description": "测试","ownerId": "0178f286-96d0-70cd-809a-3a16f96435e1","inviteLink": null,"inviteExpiration": null,"inviteApprove": null,"createdAt": "0001-01-01T00:00:00Z","isAdmin": 10}//...],"total": 1
}
Copy
获取团队成员
URL:
/api/account/team/members
Method:
POST
Params:
•current 当前页
•pageSize 每页数量
Body:
{teamId:""//团队id
}
Copy
返回:
{"list": [{"teamId": "","userId": "用户id","username": "",//用户名"isAdmin": 10, //管理员权限, 10 创建者(管理员) 1管理员 0普通用户"pending": false,"createdAt": null},//...],"total": 2
}
Copy
更新团队成员管理权限
URL:
/api/account/team/admin
Method:
POST
Body:
{"teamId": "", //团队id"userId": "",//团队成员id"isAdmin": 1 //权限
}
Copy
返回:
{"teamId": "", //团队id"userId": "",//团队成员id"isAdmin": 1 //权限
}
Copy
移除团队成员
URL:
/api/account/team/member/delete
Method:
POST
Body:
{"teamId": "", //团队id"userId": "",//团队成员id
}
Copy
返回:
{}
创建团队
URL:
/api/account/team/create
Method:
POST
Body:
{"show": true,"files": [],"avatarUrl": "",//头像"name": "",//部门名称"saving": true,"description": "" //部门描述
}
Copy
返回:
{"id": "", //团队id"name": "","avatarUrl": "","description": "","ownerId": "0178f286-96d0-70cd-809a-3a16f96435e1","inviteLink": null,"inviteExpiration": null,"inviteApprove": null,"createdAt": "2024-01-29T09:37:05.565137203Z","isAdmin": null
}
Copy
删除团队
URL:
/api/account/team/delete
Method:
POST
Body:
{"id": "" //团队id
}
Copy
返回:
{}
更新团队信息
URL:
/api/account/team/update
Method:
POST
Body:
{"id": "", //团队id 必传"avatarUrl":"",//"description":"",//团队描述"name":"",//团队名称"inviteLink": true,//允许通过邀请链接加入"inviteApprove": true,//邀请链接加入规则,true表示需要管理员审核"inviteExpiration": ""//邀请链接有效期//... 改什么传什么
}
Copy
返回:
{id:""//团队id
}
Copy
查找账号
URL:
/api/account/find
Method:
POST
Body:
{account: ""//账号
}
Copy
返回:
{"id": "",//用户id"username": "", //用户名"createdAt": "0001-01-01T00:00:00Z","updatedAt": "0001-01-01T00:00:00Z"
}
Copy
团队邀请人员
URL:
/api/account/team/invite
Method:
POST
Body:
{"teamId": "", //团队id"teamName": "",//团队名称"memberId": "",//被邀请成员id"memberName": ""//被邀请成员用户名
}
Copy
返回:
{}
获取账号信息
URL:
/api/account/detail
Method:
POST
返回:
{"id": "","phone": "","username": "","avatarUrl":"",//头像地址"roles": [],//角色"departmentId": "",//部门id"departmentName": "", //部门名称// "vip": "2027-06-02T09:28:34.053+08:0",//vip到期时间// "vipData": { //vip可存图纸数量// "2d": 2000,// "3d": 2000,// "v": 2000// },"teamList": [{"id": "",//团队id"name": "" //团队名称},//...],"createdAt": "","updatedAt": ""
}
Copy
更新账号信息
URL:
/api/account/profile/update
Method:
POST
BODY:
{avatarUrl:""//改什么传什么,例如改头像
}
Copy
返回:
{}
上传头像
URL:
/api/image/upload
Method:
POST
FormData
•file:Blob 文件二进制
•directory:string 文件存放文件夹,'/头像'
返回
{"id": "","name": "test.png",//图片名称自动获取"fullname": "",//图片完整文件名"url": "",//图片路径"directory": "/头像",//图片所在文件夹"shared": true,"size": 1871165,"ownerId": "xxx","ownerName": "xxx","createdAt": "2021-01-18T05:51:33.131708608Z","updatedAt": "0001-01-01T00:00:00Z"
}
Copy
更新登录账号
URL:
/api/account/account/update
Method:
POST
BODY:
{"account": ""//登录账号
}
Copy
返回: {}
更新邮箱
URL:
/api/account/email/update
Method:
POST
Body:
{"show": true,"email": "",//邮箱"code": "",//动态验证码"captcha": ""//图形验证码
}
Copy
返回:
{}
获取图片验证码
URL:
/api/account/captcha?t=时间戳
Method:
GET
返回:
图片资源地址
向邮箱发送动态验证码
URL:
/api/account/email/update
Method:
POST
Body:
{"email": "", //邮箱// "code": "", //图形验证码"type": "email" //类型
}
Copy
返回:
{}
修改密码
URL:
/api/account/password/update
Method:
POST
Body:
{"code": "",//当前密码"password": "" //新密码
}
Copy
返回:
{}