微服务使用JS脚本实现,支持模块化管理、高并发访问、数据库管理,主要用于扩展后端服务,或者创建其他独立的业务逻辑。 可用于实现移动端和服务端访问请求,以及通用的业务处理和数据查询服务。架构图如下所示:
// 调用接口call_demo,参数分别为'name'和123,返回值为ret function main() { var ret = callMicroService('call_demo', ['name', 123]); console.log('ret:' + ret); }
// 接口call_demo对应的脚本, name和value为移动端传入的参数 function main(name = '', value = 1) { console.log('name:' + name + ' value:' + value); return name + value; }
// 调用服务端接口call_demo,参数为['name', 123],clientKey和accessToken请替换成自己的鉴权参数 https://aznfz.com/api/call_micro_service?clientKey=xxxxx&accessToken=yyyyy&name=call_demo&isDev=true& params=%5B'name'%2C%20123%5D
// 接口call_demo对应的脚本, name和value为移动端传入的参数 function main(name = '', value = 1) { console.log('name:' + name + ' value:' + value); return name + value; }
业务参数源码: [{"name":"param","id":"p","type":"int","defaultValue":12,"description":"测试"}] // 业务对应的脚本如下:(注意,函数参数必须与业务参数一致) function main(p=1) { console.log('param:' + p); var users = userList(); console.log('users:' + users); for (var u of users) { console.log('u:' + u); var devices = deviceList(u.openId); console.log('用户:' + u.username + ' 设备:' + devices); } // 获取管理员的设备 var devices = deviceList(''); console.log('管理员设备:' + devices); }
/* [{ "id": 1, "name": "a", "value": "postman" }, { "id": 2, "name": "ab", "value": "freeman" }, { "id": 3, "name": "b", "value": "policeman" }, { "id": 4, "name": "c", "value": "bad guy" }] */ // 用于获取需要显示的表格数据,查询脚本的参数必须是如下格式:fetchCountOnly表示是否仅获取数据总数,conditions表示json数组格式的查询条件,startIndex表示游标值,itemCount表示一页的最大个数 function main(fetchCountOnly, conditions, startIndex, itemCount) { var jsonConditions = JSON.parse(conditions); var data = JSON.parse(getCustomData('query_data')); var ret = data; if (jsonConditions && jsonConditions.length > 0) { ret = []; for (var item of jsonConditions) { if (item.name == 'name') { for (var d of data) { if (d.name.includes(item.value)) { ret.push(d); } } } } } if (fetchCountOnly) { // 返回符合条件的数据个数 return ret.length; } else { // 返回符合条件的格式化数据 return ret; } } // 删除数据操作脚本, 脚本的参数必须如下所示,item表示选中后将要操作的数据项 function deleteItem(item) { var data = JSON.parse(getCustomData('query_data')); var index = 0; for (var d of data) { if (d.id == item.id) { break; } ++index; } data.splice(index, 1); return setCustomData('query_data', data + ''); }
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
openId | string | 选填 | 用户的id |
名称 | 类型 | 说明 |
---|---|---|
openId | string | 用户id |
username | string | 用户名 |
phoneNumber | string | 电话号码 |
string | 电子邮箱 | |
wx | string | 微信号 |
createTime | integer | 创建时间 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
startIndex | integer | 选填 | 起始位置,默认为0 |
itemCount | integer | 选填 | 一页最大数据项,默认为-1,表示返回startIndex起始位置后的所有数据项 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
openId | string | 选填 | 用户的openId,默认为'',表示获取当前管理员的设备 |
startIndex | integer | 选填 | 起始位置,默认为0 |
itemCount | integer | 选填 | 一页最大数据项,默认为-1,表示返回startIndex起始位置后的所有数据项 |
名称 | 类型 | 说明 |
---|---|---|
uuid | string | 设备uuid |
name | string | 设备名 |
phoneNumber | string | 设备手机号 |
extraData | json object string | 用于存放开发者自定义数据 |
enable | boolean | 设备是否可用,false表示设备目前不可用 |
days | integer | 可用天数 |
onlineState | integer | 工作状态,0表示离线,1表示在线,2表示在线但服务不可用 |
workState | integer | 工作状态,0表示空闲,1表示繁忙 |
devState | integer | 开发模式,0表示开发模式,1表示发布模式 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
uuid | string | 必填 | 设备uuid |
scriptName | string | 选填 | 脚本名,默认为空,脚本名为空时执行设备的默认脚本 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
uuid | string | 必填 | 设备uuid |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
openId | string | 选填 | 用户的openId,默认为'',表示获取当前管理员的脚本 |
startIndex | integer | 选填 | 起始位置,默认为0 |
itemCount | integer | 选填 | 一页最大数据项,默认为-1,表示返回startIndex起始位置后的所有数据项 |
名称 | 类型 | 说明 |
---|---|---|
name | string | 脚本名 |
data | string | 脚本调试数据 |
version | integer | 脚本调试版本 |
releaseData | string | 脚本发布数据 |
releaseVersion | integer | 脚本发布版本 |
state | int | 状态,1表示public,0表示private |
modifyTime | timestamp | 修改时间 |
createTime | timestamp | 创建时间 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
scriptName | string | 必填 | 脚本名 |
device uuid | string/json array | 必填 | 设备,当类型为string时表示设备uuid,当类型为json array时表示设备uuid数组 |
params | json array | 选填 | 脚本参数 |
forceRun | boolean | 选填 | 当目标设备繁忙时是否强制执行当前脚本,默认:false |
exeDefaultTaskWhenFinished | boolean | 选填 | 当前脚本结束时是否执行默认脚本,默认:false |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
tableName | string | 必填 | 表名 |
data | json object | 必填 | 插入数据项,例:{price:1, type: 2, deviceId:'xxxx'} |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
tableNames | string | 必填 | 表名,用','分割多个表名 |
columns | string | 必填 | 返回数据的列名,,用','分割多个列名 |
conditions | json array | 必填 | 查询条件,字符串数组,每个字符串一个条件,例:["type=1", "len>3"] |
order | string | 选填 | 默认为空,例:order by name desc |
offset | integer | 选填 | 默认为0 |
limit | integer | 选填 | 默认-1,表示offset之后的所有数据 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
tableName | string | 必填 | 表名 |
sets | json array | 必填 | 更新值,字符串数组,每个字符串一个赋值列,例:["name='tom'", "value=1"] |
conditions | json array | 必填 | 更新条件,字符串数组,每个字符串一个条件,例:["type=1", "len>3"] |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
tableName | string | 必填 | 表名 |
conditions | json array | 必填 | 删除条件,字符串数组,每个字符串一个条件,例:["type=1", "len>3"] |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
url | string | 必填 | url |
bodyParams | json object | 选填 | 默认为空 |
contentType | string | 选填 | application/json;charset=UTF-8 |
queryParams | json object | 选填 | 默认为空 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
url | string | 必填 | url |
queryParams | json object | 选填 | 默认为空 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
key | string | 必填 | key |
value | object | 必填 | value |
timeout | integer | 选填 | 过期时间,毫秒,默认值:120000 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
key | string | 必填 | key |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
key | string | 必填 | key |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
name | string | 必填 | 锁名字 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
name | string | 必填 | 锁名字 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
name | string | 必填 | 锁名字 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
data | byte[] | 必填 | 待编码的字节数组 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
data | string | 必填 | 待解码的字符串 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
data | string | 必填 | 待编码的字符串 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
data | string | 必填 | 待解码的字符串 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
path | string | 必填 | 相对路径,不能包含.. |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
file | object | 必填 | 文件对象 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
name | string | 必填 | 数据名 |
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
name | string | 必填 | 数据名 |
data | string | 必填 | 数据 |