Appearance
informat.system 系统全局操作
概述
使用informat.system
对象进行系统全局操作。全局操作需要license中的包含系统函数调用
模块。
serverId
查询服务器节点ID
javascript
informat.system.serverId()
返回值 类型为String, 返回服务器节点ID.
服务器节点ID值来自于informat-next/instance/informat-xxxx/application.yml文件中的spring > application > serverId配置项
示例
javascript
informat.system.serverId(); // informat2-biz-prd
host
返回系统的首页地址
javascript
informat.system.host()
返回值 类型为String, 返回系统的首页地址.
示例
javascript
informat.system.host();
返回
https://next.informat.cn/
getAccount
查询账号信息
javascript
informat.system.getAccount(id)
参数 | 类型 | 描述 |
---|---|---|
id | String | 账号ID |
返回值 类型为Account
返回用户信息,如果用户不存在返回null
示例
假设系统中存在账号ID为lwfwqr67xsvup的用户张三
javascript
informat.system.getAccount('lwfwqr67xsvup');
返回值
json
{
"avatar": "pic16.png",
"companyId": "g09aj7cus3d8s",
"createTime": 1664200514136,
"email": "zhangsan@example.com",
"id": "lwfwqr67xsvup",
"isValid": true,
"mobileNo": "13012345678",
"name": "张三",
"oid": "zhangsan",
"updateTime": 1683598262000,
"userName": "zhangsan",
"valid": true
}
queryAccountList
查询账号列表
javascript
informat.system.queryAccountList(query)
参数 | 类型 | 描述 |
---|---|---|
query | InformatQuery | 账号查询条件 |
过滤器中可以使用的字段列表
字段 | 类型 | 描述 |
---|---|---|
id | String | 账号ID |
name | String | 名称 |
userName | String | 用户名 |
mobileNo | String | 手机号 |
String | 邮箱 | |
oid | String | 第三方ID |
返回值 返回账号列表,值类型为**`Account``**
示例
javascript
informat.system.queryAccountList({
pageIndex: 1,
pageSize: 10,
filter: {
conditionList: [
{
fieldId: 'userName',
opt: 'contains',
value: 'zhang'
}
]
}
});
返回值
json
[
{
"avatar": "pic16.png",
"companyId": "g09aj7cus3d8s",
"createTime": 1664200514136,
"email": "zhangsan@example.com",
"id": "lwfwqr67xsvup",
"isValid": true,
"mobileNo": "13012345678",
"name": "张三",
"oid": "zhangsan",
"updateTime": 1683598262000,
"userName": "zhangsan",
"valid": true
},
{
"avatar": "pic23.png",
"createTime": 1675836165076,
"id": "x3q3npo3xsait",
"isValid": true,
"mobileNo": "18291909205",
"name": "张荣立",
"updateTime": 1683594979000,
"userName": "zhangrongli",
"valid": true
},
{
"avatar": "pic13.png",
"createTime": 1682307631474,
"email": "zhangrongfu@itit.io",
"id": "wlt9cgr70o0yi",
"isValid": true,
"mobileNo": "15989268009",
"name": "张荣富",
"updateTime": 1683335991000,
"userName": "zhangrongfu",
"valid": true
}
]
queryAccountListCount
查询账号列表总数
javascript
informat.system.queryAccountListCount(filter)
参数 | 类型 | 描述 |
---|---|---|
filter | InformatFilter | 查询条件 |
返回值
返回账号列表总数,类型为Integer
示例
javascript
informat.system.queryAccountList({
pageIndex: 1,
pageSize: 10,
filter: {
conditionList: [
{
fieldId: 'userName',
opt: 'contains',
value: 'zhang'
}
]
}
}); // 返回值 3
addAccount
新增账号
javascript
informat.system.addAccount(account)
参数 | 类型 | 描述 |
---|---|---|
account | Account | 账号信息,ID、创建时间不用填写 |
返回值 返回新增的账号ID,类型为String
示例1 新增账号
js
informat.system.addAccount({
name: 'test',
avatar: 'pic15.png',
userName: 'test',
mobileNo: '13800000000',
email: 'test@informat.cn',
password: 'youpassword'
});
json
"ap1cew2up9ehq"
示例2 新增指定ID的账号
js
informat.system.addAccount({
id: 'zhangsan',
name: 'test',
avatar: 'pic15.png',
userName: 'zhangsan',
mobileNo: '13800000000',
email: 'zhangsan@informat.cn',
password: 'youpassword'
});
json
"zhangsan"
updateAccount
更新账号信息
javascript
informat.system.updateAccount(account)
参数 | 类型 | 描述 |
---|---|---|
account | Account | 账号信息 |
可以更新的字段列表
字段 | 类型 | 描述 |
---|---|---|
oid | String | 标识符 |
name | String | 名称 |
userName | String | 用户名 |
mobileNo | String | 手机号 |
String | 邮箱 | |
avatar | String | 头像 |
language | String | 语言 |
needUpdatePassword | Boolean | 是否需要强转修修改密码 |
返回值 返回更新的账号数量,类型为Integer
示例
js
informat.system.updateAccount({
id: 'ap1cew2up9ehq',
name: 'test2',
avatar: 'pic16.png',
userName: 'test2',
mobileNo: '13700000000',
email: 'test2@informat.cn'
});
json
1
updateAccountList
更新账号列表
javascript
informat.system.updateAccountList(account, filter)
参数 | 类型 | 描述 |
---|---|---|
account | Account | 账号信息 |
filter | InformatFilter | 查询条件 |
可以更新的字段列表
字段 | 类型 | 描述 |
---|---|---|
oid | String | 标识符 |
name | String | 名称 |
userName | String | 用户名 |
mobileNo | String | 手机号 |
String | 邮箱 | |
avatar | String | 头像 |
language | String | 语言 |
needUpdatePassword | Boolean | 是否需要强转修修改密码 |
返回值 返回更新的账号数量,类型为Integer
示例
javascript
informat.system.updateAccountList(
{
name: 'test2',
avatar: 'pic15.png',
userName: 'test2',
mobileNo: '13900000000',
email: 'test2@informat.cn'
},
{
conditionList: [
{ 'fieldId': 'id', 'opt': 'eq', 'value': 'ap1cew2up9ehq' }
]
}
);
changePassword
修改账号密码
javascript
informat.system.changePassword(accountId, pwd)
参数 | 类型 | 描述 |
---|---|---|
accountId | String | 账号ID |
pwd | String | 密码 |
createToken
为账号创建登录授权TOKEN
javascript
informat.system.createToken(accountId, type)
参数 | 类型 | 描述 |
---|---|---|
accountId | String | 账号ID |
type | String | Token类型PC端 index 移动端 mobile 问卷移动端 survey 问卷PC端 surveyweb 排除系统内置类型,也支持自定义类型(如:app、wechat、wemp等) |
返回值 返回授权的TOKEN,类型为String
示例
javascript
informat.system.createToken('wlt9cgr70o0yi', 'index');
json
"581aa91125e74a74a07747ef6862ba41"
getAccountByToken
通过TOKEN查找账号信息
javascript
informat.system.getAccountByToken(token)
参数 | 类型 | 描述 |
---|---|---|
token | String | TOKEN |
返回值
返回账号信息,如果TOKEN不存在,则返回空;类型为Account
js
informat.system.getAccountByToken("581aa91125e74a74a07747ef6862ba41");
json
{
"avatar": "pic16.png",
"companyId": "g09aj7cus3d8s",
"createTime": 1664200514136,
"email": "zhangsan@example.com",
"id": "lwfwqr67xsvup",
"isValid": true,
"mobileNo": "13012345678",
"name": "张三",
"oid": "zhangsan",
"updateTime": 1683598262000,
"userName": "zhangsan",
"valid": true
}
login
登录系统
javascript
informat.system.login(loginForm)
参数 | 类型 | 描述 |
---|---|---|
loginForm | LoginForm | 用户名或者手机号、邮箱 |
返回值
返回值为登录结果,类型为LoginResult
js
informat.system.login({
userName:'zhangsan',
password:'12345678',
type:'mobile',
ip:'183.46.24.11'
})
json
{
"accountId":"zhangsan",
"companyId":"g09aj7cus3d8s",
"errorCode":0,
"token":"2f7536034b3748c9ba7db15759d01f26"
}
validateAccount
校验用户名密码
javascript
informat.system.validateAccount(user, pwd)
参数 | 类型 | 描述 |
---|---|---|
user | String | 用户名或者手机号 |
pwd | String | 密码 |
返回值
如果用户名密码符合则返回true
否则返回false
,类型为Boolean
javascript
informat.system.validateAccount('zhangsan', '12345678')// false
setAccountValid
启用/禁用账号
javascript
informat.system.setAccountValid(accountId, isValid)
参数 | 类型 | 描述 |
---|---|---|
accountId | String | 账号ID |
isValid | Boolean | 启用或禁用 |
示例
javascript
// 禁用张三的账号
informat.system.setAccountValid('lwfwqr67xsvup', false);
// 启用张三的账号
informat.system.setAccountValid('lwfwqr67xsvup', true);
invokeLibrary
调用扩展库中的函数
关于扩展库的详细介绍,请参考 扩展库
javascript
informat.system.invokeLibrary(libraryId, className, method, args)
参数 | 类型 | 描述 |
---|---|---|
libraryId | String | 扩展库标识符 |
className | String | 需要调用的扩展库中的类的全路径,如com.mycompany.MyLibaray |
method | String | 需要调用的扩展库中的方法,此方法必须为静态类型 |
args | 参数数组 | 传递给方法的参数 |
返回值
扩展库中方法的返回值,类型为Object
以下为一个示例
javascript
informat.system.invokeLibrary('mylibrary','com.mycompany.MyLibaray','add',[1,2])
更详细的说明可以参考扩展库
runProcess
启动一个新的进程
javascript
informat.system.runProcess(args)
参数 | 类型 | 描述 |
---|---|---|
args | ProcessRunArgs | 执行参数 |
ProcessRunArgs 结构如下
属性 | 类型 | 说明 |
---|---|---|
args | Array<String> | 执行的命令 |
timeout | Integer | 超时时间,毫秒数,0表示忽略超时 |
返回值
类型为ProcessRunResult
,结构如下
属性 | 类型 | 说明 |
---|---|---|
exitValue | Integer | 退出码 |
out | String | 标准输出 |
err | String | 错误输出 |
以下为一个示例
javascript
const result = informat.system.runProcess({
cmds: ['java', '-version'],
timeout: 0
});
console.log(result.out); // java version "11.0.5" 2019-10-15 LTS
runNodeJS
启动一个新的进程运行NodeJS,传递参数使用命令行参数cmdline和标准输入stdin,NodeJS进程使用标准输出和错误输出作为返回值
javascript
informat.system.runNodeJS(args)
参数 | 类型 | 描述 |
---|---|---|
args | RunNodeJSArgs | 执行参数 |
RunNodeJSArgs 结构如下
属性 | 类型 | 说明 |
---|---|---|
script | String | 执行的脚本文件 例如:test/helloworld.js |
cmdline | Array<String> | 操作系统对命令行参数的长度有限制,linux下最长131071,如果需要传递大量数据需要使用stdin传递 |
stdin | String | 标准输入 |
env | Object | 环境变量 |
返回值
类型为ProcessRunResult
,结构如下
属性 | 类型 | 说明 |
---|---|---|
exitValue | Integer | 退出码 |
out | String | 标准输出 |
err | String | 错误输出 |
以下为一个示例
有测试脚本文件nodejs/md5test.js内容如下:
javascript
/**
*使用md5库,计算输入字符串的md5值,输入参数使用命令行传递
*/
var arguments = process.argv;
//获取输入参数
let input=arguments[2];
var md5 = require('md5');
//使用标准输出传递结果
console.log(md5(input));
以下是调用NodeJs的代码:
javascript
var result=informat.system.runNodeJS({
'script':'nodejs/md5test.js',
'cmdline':['123456']
});
console.log('md5 value:',result.out);
queryCompanyList
查询团队列表
javascript
informat.system.queryCompanyList(query)
参数 | 类型 | 描述 |
---|---|---|
query | InformatQuery | 查询条件 |
过滤器中可以使用的字段列表
字段 | 类型 | 描述 |
---|---|---|
id | String | 账号ID |
name | String | 名称 |
返回值 返回账号列表,值类型为Array<Company>
示例
js
informat.system.queryCompanyList({
pageIndex: 1,
pageSize: 10,
filter: {
conditionList: [
{
fieldId: 'name',
opt: 'contains',
value: '测试'
}
]
}
});
json
[
{
"createAccountId":"zhangsan",
"createTime":1665404532125,
"dbIndex":0,
"id":"ukswiyvmqlq5n",
"maxApplicationNum":0,
"maxUserNum":0,
"name":"测试创建团队",
"updateTime":1704353335727,
"version":"free"
},
{
"createAccountId":"zhangsan",
"createTime":1669306766288,
"dbIndex":0,
"id":"kkoixbg8ew3ks",
"maxApplicationNum":0,
"maxUserNum":0,
"name":"测试团队",
"updateTime":1713920870106,
"version":"enterprise"
}
]
queryCompanyListCount
查询团队列表总数
javascript
informat.system.queryCompanyListCount(filter)
参数 | 类型 | 描述 |
---|---|---|
query | InformatFilter | 查询过滤器 |
过滤器中可以使用的字段列表
字段 | 类型 | 描述 |
---|---|---|
id | String | 账号ID |
name | String | 名称 |
返回值 返回团队列表总数,值类型为int
示例
js
informat.system.queryCompanyListCount({
conditionList: [
{
fieldId: 'name',
opt: 'contains',
value: '测试'
}
]
});
json
2
addCompanyMember
添加团队成员
javascript
informat.system.addCompanyMember(companyId, accountId, departmentList, roleList)
参数 | 类型 | 描述 |
---|---|---|
companyId | String | 查询过滤器 |
accountId | String | 查询过滤器 |
departmentList | Array<String> | 部门列表 |
roleList | Array<String> | 角色列表 |
示例
javascript
informat.system.addCompanyMember('g09aj7cus3d8s','skydu2',['dev'],['member']);
queryCompanyDeptList
查询部门列表
javascript
informat.system.queryCompanyDeptList(companyId, query)
参数 | 类型 | 描述 |
---|---|---|
companyId | String | 团队ID |
query | InformatQuery | 查询条件 |
过滤器中可以使用的字段列表
字段 | 类型 | 描述 |
---|---|---|
id | String | 部门标识符 |
parentId | String | 父部门标识符 |
name | String | 部门名称 |
createTime | Date | 创建时间 |
返回值 类型为Array<Dept>
返回部门列表
示例1 查询名称包含研发的部门列表
js
informat.system.queryCompanyDeptList(
'g09aj7cus3d8s',{
pageSize:-1,
filter:{
conditionList:[
{"fieldId":"name","opt":"contains","value":"研发"}
]
}
});
json
[
{
"id": "yanfabu",
"name": "研发部",
"parentId": "root",
"remark": "负责研究和开发新产品、技术或服务的部门",
"rowNumber": 2,
"shortName": "研发部"
}
]
getCompanyAllRoles
查询团队所有角色列表
javascript
informat.system.getCompanyAllRoles(companyId)
参数 | 类型 | 描述 |
---|---|---|
companyId | String | 团队ID |
返回值
类型为Array<Role>
,返回所有角色
示例:
js
informat.system.getCompanyAllRoles('g09aj7cus3d8s')
json
[
{
"admin": true,
"createTime": 1664196760903,
"id": "admin",
"isAdmin": true,
"name": "管理员",
"permissionIds": [
]
},
{
"admin": false,
"createTime": 1664196760907,
"id": "member",
"isAdmin": false,
"name": "成员",
"permissionIds": [
"InviteMember"
]
}
]
addOptLog
添加系统日志
js
informat.system.addOptLog(optLog)
入参
参数 | 类型 | 描述 |
---|---|---|
optLog | OptLog | 新增的操作日志 |
OptLog
结构如下:
字段 | 类型 | 描述 |
---|---|---|
id | String | 操作记录ID |
type | String | 操作类型 |
accountId | String | 操作人ID |
companyId | String | 团队ID |
associatedId | String | 关联ID |
remark | String | 备注,拼接在操作详情之后 |
操作类型可选值:
操作类型 | 描述 |
---|---|
CreateAccount | 创建账号 |
UpdateAccount | 更新账号 |
Register | 注册 |
PasswordLogin | 账号密码登录 |
WechatLogin | 微信扫码登录 |
MobileNoLogin | 手机验证码登录 |
DingTalkLogin | 钉钉免登录 |
WeWorkLogin | 企业微信免登录 |
ssoLogin | SSO登录 |
Logout | 登出 |
UpdateUserName | 更换登录名 |
UpdateNickName | 更换昵称 |
UpdateMobileNo | 更换手机号 |
UpdateEmail | 更换邮箱 |
SwitchCompany | 切换团队 |
InviteMember | 邀请成员 |
DeleteMember | 移除成员 |
CreateDepartment | 创建部门 |
UpdateDepartment | 编辑部门 |
DeleteDepartment | 删除部门 |
CreateRole | 创建角色 |
UpdateRole | 编辑角色 |
DeleteRole | 删除角色 |
CreateCompany | 创建团队 |
CompanySetPro | 设置试用 |
CompanySetModule | 设置模块 |
CreateApp | 创建应用 |
UpdateApp | 编辑应用 |
DeleteApp | 删除应用 |
ArchiveApp | 归档应用 |
CreateAppMember | 添加应用成员 |
UpdateAppMember | 编辑应用成员 |
DeleteAppMember | 删除应用成员 |
UpdateAppMemberAccessPassword | 编辑应用成员访问密码 |
CreateAppModule | 添加应用模块 |
DeleteAppModule | 删除应用模块 |
DeleteRecycleBin | 删除回收站数据 |
示例
js
let optlog = {
accountId: informat.app.userId(),
type: 'CreateAccount',
companyId: informat.company.getCompany().id,
remark: '(手动)'
}
informat.system.addOptLog(optlog)
queryOptLogList
查询操作记录列表
js
informat.system.queryOptLogList(query)
入参
参数 | 类型 | 描述 |
---|---|---|
query | Query | 查询条件 |
过滤器中可以使用的字段列表
字段 | 类型 | 描述 |
---|---|---|
type | String | 操作类型 |
accountId | String | 操作用户 |
remark | String | 备注 |
createTime | String | 创建时间 |
updateTime | String | 更新时间 |
操作类型可选值:
操作类型 | 描述 |
---|---|
CreateAccount | 创建账号 |
UpdateAccount | 更新账号 |
Register | 注册 |
PasswordLogin | 账号密码登录 |
WechatLogin | 微信扫码登录 |
MobileNoLogin | 手机验证码登录 |
DingTalkLogin | 钉钉免登录 |
WeWorkLogin | 企业微信免登录 |
ssoLogin | SSO登录 |
Logout | 登出 |
UpdateUserName | 更换登录名 |
UpdateNickName | 更换昵称 |
UpdateMobileNo | 更换手机号 |
UpdateEmail | 更换邮箱 |
SwitchCompany | 切换团队 |
InviteMember | 邀请成员 |
DeleteMember | 移除成员 |
CreateDepartment | 创建部门 |
UpdateDepartment | 编辑部门 |
DeleteDepartment | 删除部门 |
CreateRole | 创建角色 |
UpdateRole | 编辑角色 |
DeleteRole | 删除角色 |
CreateCompany | 创建团队 |
CompanySetPro | 设置试用 |
CompanySetModule | 设置模块 |
CreateApp | 创建应用 |
UpdateApp | 编辑应用 |
DeleteApp | 删除应用 |
ArchiveApp | 归档应用 |
CreateAppMember | 添加应用成员 |
UpdateAppMember | 编辑应用成员 |
DeleteAppMember | 删除应用成员 |
UpdateAppMemberAccessPassword | 编辑应用成员访问密码 |
CreateAppModule | 添加应用模块 |
DeleteAppModule | 删除应用模块 |
DeleteRecycleBin | 删除回收站数据 |
返回值
类型为Array<OptLog>
,操作记录列表
示例
js
let query = {
pageSize:-1,
filter: {
conditionList:[
{fieldId:'type', opt: 'eq', value: 'CreateAccount'}
]
}
}
informat.system.queryOptLogList(query)
json
[
{
"accountAvatar": "2e6e1b0512aa4d4c8c36221cde76027b.jpg",
"accountId": "lisi",
"accountName": "李四",
"associatedId": "zhangsan",
"companyId": "g09asd3qs3d8s",
"companyName": "测试团队",
"createTime": 1709863371382,
"id": "cv7q7u8rnuksb",
"remark": "创建账号:张三",
"type": "CreateAccount",
"updateTime": 1709863371382
}
]
queryOptLogListCount
查询操作记录数量
js
informat.system.queryOptLogListCount(filter)
入参
参数 | 类型 | 描述 |
---|---|---|
filter | Filter | 过滤条件 |
过滤器中可以使用的字段列表
字段 | 类型 | 描述 |
---|---|---|
type | String | 操作类型 |
accountId | String | 操作用户 |
remark | String | 备注 |
操作类型可选值:
操作类型 | 描述 |
---|---|
CreateAccount | 创建账号 |
UpdateAccount | 更新账号 |
Register | 注册 |
PasswordLogin | 账号密码登录 |
WechatLogin | 微信扫码登录 |
MobileNoLogin | 手机验证码登录 |
DingTalkLogin | 钉钉免登录 |
WeWorkLogin | 企业微信免登录 |
ssoLogin | SSO登录 |
Logout | 登出 |
UpdateUserName | 更换登录名 |
UpdateNickName | 更换昵称 |
UpdateMobileNo | 更换手机号 |
UpdateEmail | 更换邮箱 |
SwitchCompany | 切换团队 |
InviteMember | 邀请成员 |
DeleteMember | 移除成员 |
CreateDepartment | 创建部门 |
UpdateDepartment | 编辑部门 |
DeleteDepartment | 删除部门 |
CreateRole | 创建角色 |
UpdateRole | 编辑角色 |
DeleteRole | 删除角色 |
CreateCompany | 创建团队 |
CompanySetPro | 设置试用 |
CompanySetModule | 设置模块 |
CreateApp | 创建应用 |
UpdateApp | 编辑应用 |
DeleteApp | 删除应用 |
ArchiveApp | 归档应用 |
CreateAppMember | 添加应用成员 |
UpdateAppMember | 编辑应用成员 |
DeleteAppMember | 删除应用成员 |
UpdateAppMemberAccessPassword | 编辑应用成员访问密码 |
CreateAppModule | 添加应用模块 |
DeleteAppModule | 删除应用模块 |
DeleteRecycleBin | 删除回收站数据 |
返回值
类型为Integer
,操作记录数量
示例
js
let filter = {
conditionList:[
{fieldId:'type', opt: 'eq', value: 'CreateAccount'}
]
}
}
informat.system.queryOptLogListCount(filter)
js
6
deleteOptLogList
批量删除系统日志
js
informat.system.deleteOptLogList(filter)
入参
参数 | 类型 | 描述 |
---|---|---|
filter | Filter | 过滤条件 |
过滤器中可以使用的字段列表
字段 | 类型 | 描述 |
---|---|---|
type | String | 操作类型 |
accountId | String | 操作用户 |
remark | String | 备注 |
createTime | String | 创建时间 |
updateTime | String | 更新时间 |
返回值
类型为Integer
,操作记录数量
示例
js
let filter = {
conditionList:[
{fieldId:'type', opt: 'eq', value: 'CreateAccount'}
]
}
}
informat.system.deleteOptLogList(filter)
js
6
runWithContext
跨团队及应用执行脚本函数
js
informat.system.runWithContext(context, func)
入参
参数 | 类型 | 描述 |
---|---|---|
context | RunWithContext | 上下文配置 |
func | Function | 执行的函数 |
RunWithContext
结构如下:
参数 | 类型 | 描述 |
---|---|---|
companyId | String | 团队ID,不传默认为当前团队 |
appDefineId | String | 应用标识符,不传默认为当前应用 |
返回值
执行的函数返回值
示例
js
const addMember = () => {
informat.user.addUser(informat.app.userId(), ['admin'])
return true
}
let context = {
companyId: 'xxxxxxxxxx',
appDefineId: 'com.myApp'
}
informat.system.runWithContext(context, addMember)
js
true
uploadFile
将本地文件上传到共享存储中。注意:如果本地存在同名文件,将覆盖同名文件
javascript
informat.system.uploadFile(localPath,remotePath)
入参
参数 | 类型 | 描述 |
---|---|---|
localPath | String | 本地文件路径 |
remotePath | String | 共享存储路径 |
返回值
无
示例
javascript
// 上传头像文件,头像文件需要上传到public目录下
const localPath = 'local.png';
const remotePath = 'public/newAvatar.png';
informat.system.uploadFile(localPath, remotePath);
// 更新用户头像
informat.system.updateAccount({
id: 'ap1cew2up9ehq',
avatar: 'newAvatar.png'
});