Skip to content

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)
参数类型描述
idString账号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)
参数类型描述
queryInformatQuery账号查询条件

过滤器中可以使用的字段列表

字段类型描述
idString账号ID
nameString名称
userNameString用户名
mobileNoString手机号
emailString邮箱
oidString第三方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)
参数类型描述
filterInformatFilter查询条件

返回值

返回账号列表总数,类型为Integer

示例

javascript
informat.system.queryAccountList({
    pageIndex: 1,
    pageSize: 10,
    filter: {
        conditionList: [
            {
                fieldId: 'userName',
                opt: 'contains',
                value: 'zhang'
            }
        ]
    }
}); // 返回值 3

addAccount

新增账号

javascript
informat.system.addAccount(account)
参数类型描述
accountAccount账号信息,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)
参数类型描述
accountAccount账号信息

可以更新的字段列表

字段类型描述
oidString标识符
nameString名称
userNameString用户名
mobileNoString手机号
emailString邮箱
avatarString头像
languageString语言
needUpdatePasswordBoolean是否需要强转修修改密码

返回值 返回更新的账号数量,类型为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)
参数类型描述
accountAccount账号信息
filterInformatFilter查询条件

可以更新的字段列表

字段类型描述
oidString标识符
nameString名称
userNameString用户名
mobileNoString手机号
emailString邮箱
avatarString头像
languageString语言
needUpdatePasswordBoolean是否需要强转修修改密码

返回值 返回更新的账号数量,类型为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)
参数类型描述
accountIdString账号ID
pwdString密码

createToken

为账号创建登录授权TOKEN

javascript
informat.system.createToken(accountId, type)
参数类型描述
accountIdString账号ID
typeStringToken类型
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)
参数类型描述
tokenStringTOKEN

返回值

返回账号信息,如果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)
参数类型描述
loginFormLoginForm用户名或者手机号、邮箱

返回值

返回值为登录结果,类型为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)
参数类型描述
userString用户名或者手机号
pwdString密码

返回值

如果用户名密码符合则返回true否则返回false,类型为Boolean

javascript
informat.system.validateAccount('zhangsan', '12345678')// false

setAccountValid

启用/禁用账号

javascript
informat.system.setAccountValid(accountId, isValid)
参数类型描述
accountIdString账号ID
isValidBoolean启用或禁用

示例

javascript
// 禁用张三的账号
informat.system.setAccountValid('lwfwqr67xsvup', false);
// 启用张三的账号
informat.system.setAccountValid('lwfwqr67xsvup', true);

invokeLibrary

调用扩展库中的函数

关于扩展库的详细介绍,请参考 扩展库

javascript
informat.system.invokeLibrary(libraryId, className, method, args)
参数类型描述
libraryIdString扩展库标识符
classNameString需要调用的扩展库中的类的全路径,如com.mycompany.MyLibaray
methodString需要调用的扩展库中的方法,此方法必须为静态类型
args参数数组传递给方法的参数

返回值

扩展库中方法的返回值,类型为Object

以下为一个示例

javascript
informat.system.invokeLibrary('mylibrary','com.mycompany.MyLibaray','add',[1,2])

更详细的说明可以参考扩展库

runProcess

启动一个新的进程

javascript
informat.system.runProcess(args)
参数类型描述
argsProcessRunArgs执行参数

ProcessRunArgs 结构如下

属性类型说明
argsArray<String>执行的命令
timeoutInteger超时时间,毫秒数,0表示忽略超时

返回值

类型为ProcessRunResult,结构如下

属性类型说明
exitValueInteger退出码
outString标准输出
errString错误输出

以下为一个示例

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)
参数类型描述
argsRunNodeJSArgs执行参数

RunNodeJSArgs 结构如下

属性类型说明
scriptString执行的脚本文件 例如:test/helloworld.js
cmdlineArray<String>操作系统对命令行参数的长度有限制,linux下最长131071,如果需要传递大量数据需要使用stdin传递
stdinString标准输入
envObject环境变量

返回值

类型为ProcessRunResult,结构如下

属性类型说明
exitValueInteger退出码
outString标准输出
errString错误输出

以下为一个示例

有测试脚本文件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)
参数类型描述
queryInformatQuery查询条件

过滤器中可以使用的字段列表

字段类型描述
idString账号ID
nameString名称

返回值 返回账号列表,值类型为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)
参数类型描述
queryInformatFilter查询过滤器

过滤器中可以使用的字段列表

字段类型描述
idString账号ID
nameString名称

返回值 返回团队列表总数,值类型为int

示例

js
informat.system.queryCompanyListCount({
        conditionList: [
            {
                fieldId: 'name',
                opt: 'contains',
                value: '测试'
            }
        ]
});
json
2

addCompanyMember

添加团队成员

javascript
informat.system.addCompanyMember(companyId, accountId, departmentList, roleList)
参数类型描述
companyIdString查询过滤器
accountIdString查询过滤器
departmentListArray<String>部门列表
roleListArray<String>角色列表

示例

javascript
informat.system.addCompanyMember('g09aj7cus3d8s','skydu2',['dev'],['member']);

queryCompanyDeptList

查询部门列表

javascript
informat.system.queryCompanyDeptList(companyId, query)
参数类型描述
companyIdString团队ID
queryInformatQuery查询条件

过滤器中可以使用的字段列表

字段类型描述
idString部门标识符
parentIdString父部门标识符
nameString部门名称
createTimeDate创建时间

返回值 类型为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)
参数类型描述
companyIdString团队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)

入参

参数类型描述
optLogOptLog新增的操作日志

OptLog结构如下:

字段类型描述
idString操作记录ID
typeString操作类型
accountIdString操作人ID
companyIdString团队ID
associatedIdString关联ID
remarkString备注,拼接在操作详情之后

操作类型可选值:

操作类型描述
CreateAccount创建账号
UpdateAccount更新账号
Register注册
PasswordLogin账号密码登录
WechatLogin微信扫码登录
MobileNoLogin手机验证码登录
DingTalkLogin钉钉免登录
WeWorkLogin企业微信免登录
ssoLoginSSO登录
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)

入参

参数类型描述
queryQuery查询条件

过滤器中可以使用的字段列表

字段类型描述
typeString操作类型
accountIdString操作用户
remarkString备注
createTimeString创建时间
updateTimeString更新时间

操作类型可选值:

操作类型描述
CreateAccount创建账号
UpdateAccount更新账号
Register注册
PasswordLogin账号密码登录
WechatLogin微信扫码登录
MobileNoLogin手机验证码登录
DingTalkLogin钉钉免登录
WeWorkLogin企业微信免登录
ssoLoginSSO登录
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)

入参

参数类型描述
filterFilter过滤条件

过滤器中可以使用的字段列表

字段类型描述
typeString操作类型
accountIdString操作用户
remarkString备注

操作类型可选值:

操作类型描述
CreateAccount创建账号
UpdateAccount更新账号
Register注册
PasswordLogin账号密码登录
WechatLogin微信扫码登录
MobileNoLogin手机验证码登录
DingTalkLogin钉钉免登录
WeWorkLogin企业微信免登录
ssoLoginSSO登录
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)

入参

参数类型描述
filterFilter过滤条件

过滤器中可以使用的字段列表

字段类型描述
typeString操作类型
accountIdString操作用户
remarkString备注
createTimeString创建时间
updateTimeString更新时间

返回值

类型为Integer,操作记录数量

示例

js
let filter = {
        conditionList:[
            {fieldId:'type', opt: 'eq', value: 'CreateAccount'}
        ]
    }
}
informat.system.deleteOptLogList(filter)
js
6

runWithContext

跨团队及应用执行脚本函数

js
informat.system.runWithContext(context, func)

入参

参数类型描述
contextRunWithContext上下文配置
funcFunction执行的函数

RunWithContext结构如下:

参数类型描述
companyIdString团队ID,不传默认为当前团队
appDefineIdString应用标识符,不传默认为当前应用

返回值

执行的函数返回值

示例

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)

入参

参数类型描述
localPathString本地文件路径
remotePathString共享存储路径

返回值

示例

javascript
// 上传头像文件,头像文件需要上传到public目录下
const localPath = 'local.png';
const remotePath = 'public/newAvatar.png'; 
informat.system.uploadFile(localPath, remotePath);
// 更新用户头像
informat.system.updateAccount({
  id: 'ap1cew2up9ehq',
  avatar: 'newAvatar.png'
});