微服务开发文档

微服务使用JS脚本实现,支持模块化管理、高并发访问、数据库管理,主要用于扩展后端服务,或者创建其他独立的业务逻辑。 可用于实现移动端和服务端访问请求,以及通用的数据录入和查询服务。

移动端接口

开发者可以在app脚本中通过callMicroService函数来调用移动端接口。接口可以指定脚本和函数名(默认函数名为main),params直接透传给脚本函数,函数的返回值即为接口返回值。

移动端脚本demo

// 调用接口call_demo,参数分别为'name'和123,返回值为ret
function main() {
    var ret = callMicroService('call_demo', ['name', 123]);
    console.log('ret:' + ret);
}
                                        

服务端脚本demo

// 接口call_demo对应的脚本, name和value为移动端传入的参数
function main(name = '', value = 1) {
    console.log('name:' + name + '  value:' + value);
    return name + value;
}
                                        

服务端接口

第三方服务端可以调用open api:/api/call_micro_service来调用服务端接口,接口可以指定脚本和函数名(默认函数名为main),query参数params直接透传给脚本函数,函数返回值为接口返回值。

第三方调用demo

// 调用服务端接口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
                                        

服务端脚本demo

// 接口call_demo对应的脚本, name和value为移动端传入的参数
function main(name = '', value = 1) {
    console.log('name:' + name + '  value:' + value);
    return name + value;
}
                                        

自定义数据

开发者在「微服务」/「自定义数据」中创建数据项,然后在移动端脚本中调用getCustomData函数来获取数据项,函数返回值为字符串,建议使用json字符串表达更丰富的数据。

数据录入服务

若用户需录入数据,则需创建通用数据录入服务。服务的参数直接透传给脚本。select类型支持两种数据格式:1.用,分割多个item,每个item用:分割name和value,例:微信:1,支付宝:2。2.请求后端接口获取数据,用json对象表示,scriptName表示脚本名,functionName表示函数名,params函数参数,例:{"scriptName": "common", "functionName":"getDevice"}(以下select类型都一样)。

数据录入demo

数据录入参数:
[{
	"name": "支付类型",
	"id": "payType",
	"type": "select",
	"defaultValue": "微信:1,支付宝:2",
	"description": ""
}, {
	"name": "价格",
	"id": "price",
	"type": "float",
	"defaultValue": "",
	"description": ""
}, {
	"name": "设备",
	"id": "deviceId",
	"type": "select",
	"defaultValue": "{\"scriptName\":\"common\", \"functionName\":\"getDevice\"}",
	"description": ""
}]

// 接口对应的处理据脚本如下:(注意,函数参数必须与数据录入参数一致)
function main(payType, price, deviceId) {
    return dbInsert('table_name', {userId:rsOpenId, price:price, payType:payType, deviceId:deviceId});
}
                                            

数据查询服务

若用户需查询数据,则需创建通用数据查询服务,使用表格显示数据。查询参数指查询数据时用户指定的参数,支持text和select;列指显示数据时的表格列;数据操作指对数据item的操作,数据操作可以指定脚本和函数,用于处理操作。

查询脚本demo

    // 用于获取需要显示的表格数据,查询脚本的参数必须是如下格式:fetchCountOnly表示是否仅获取数据总数,conditions表示json数组格式的查询条件,startIndex表示游标值,itemCount表示一页的最大个数
    function main(fetchCountOnly, conditions, startIndex, itemCount) {
        console.log('fetchCountOnly:' + fetchCountOnly + ' conditions:' + conditions + ' startIndex:' + startIndex + '  itemCount:' + itemCount);
        var jsonConditions = JSON.parse(conditions);
        var params = [];
        for (var item of jsonConditions) {
            params.push(item.name + '=' + item.value);
        }

        if (fetchCountOnly) {
            return dbQuery('table_name', 'count(id) as count', params).count;
        } else {
            return dbQuery('table_name', '*', params, startIndex, itemCount);
        }
    }
                                            

数据操作脚本demo

    // 接口call_demo对应删除数据操作脚本, 脚本的参数必须是如下格式,item表示将要操作的数据项
    function main(item) {
        var id = item.id;
        return dbDelete('table_name', [`id=${id}`]);
    }
                                            

后端服务API

后端的脚本可以直接调用这些api,完成业务逻辑。userListdeviceListdeviceStartdeviceResetdbInsertdbQuerydbUpdatedbDeletehttpPosthttpGetcachePutcacheGetcacheRemovelockunlockreleaseLockbase64Encodebase64DecodeencodeURIdecodeURInewFilecloseFile

userList

返回当前管理员下的用户,类型为json array,每个user为一个json object。
属性:
属性名 类型 必填 说明
startIndex integer 选填 起始位置,默认为0
itemCount integer 选填 一页最大数据项,默认为-1,表示返回startIndex起始位置后的所有数据项
返回用户json object:
名称 类型 说明
openId string 用户id
username string 用户名
phoneNumber string 电话号码
email string 电子邮箱
wx string 微信号
createTime integer 创建时间

deviceList

返回指定用户下的设备,类型json array,每个device为一个json object。
属性:
属性名 类型 必填 说明
openId string 选填 用户的openId,默认为'',表示获取当前管理员的设备
startIndex integer 选填 起始位置,默认为0
itemCount integer 选填 一页最大数据项,默认为-1,表示返回startIndex起始位置后的所有数据项
返回设备json object:
名称 类型 说明
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表示发布模式

deviceStart

启动设备,返回boolean。
属性:
属性名 类型 必填 说明
uuid string 必填 设备uuid

deviceReset

复位设备,返回boolean。
属性:
属性名 类型 必填 说明
uuid string 必填 设备uuid

dbInsert

向数据库插入数据项。成功返回插入数据项的id,失败返回-1。
属性:
属性名 类型 必填 说明
tableName string 必填 表名
data json object 必填 插入数据项,例:{price:1, type: 2, deviceId:'xxxx'}

dbQuery

查询数据库。返回json数组,数组元素为json对象。
属性:
属性名 类型 必填 说明
tableNames string 必填 表名,用','分割多个表名
columns string 必填 返回数据的列名,,用','分割多个列名
conditions json array 必填 查询条件,字符串数组,每个字符串一个条件,例:["type=1", "len>3"]
order string 选填 默认为空,例:order by name desc
offset integer 选填 默认为0
limit integer 选填 默认-1,表示offset之后的所有数据

dbUpdate

更新数据。返回Boolean。
属性:
属性名 类型 必填 说明
tableName string 必填 表名
sets json array 必填 更新值,字符串数组,每个字符串一个赋值列,例:["name='tom'", "value=1"]
conditions json array 必填 更新条件,字符串数组,每个字符串一个条件,例:["type=1", "len>3"]

dbDelete

删除数据。返回Boolean。
属性:
属性名 类型 必填 说明
tableName string 必填 表名
conditions json array 必填 删除条件,字符串数组,每个字符串一个条件,例:["type=1", "len>3"]

httpPost

post。返回json对象, {status: ..., data: ...}。
属性:
属性名 类型 必填 说明
url string 必填 url
bodyParams json object 选填 默认为空
contentType string 选填 application/json;charset=UTF-8
queryParams json object 选填 默认为空

httpGet

get。返回json对象, {status: ..., data: ...}。
属性:
属性名 类型 必填 说明
url string 必填 url
queryParams json object 选填 默认为空

cachePut

往cache存放数据,返回Boolean。
属性:
属性名 类型 必填 说明
key string 必填 key
value object 必填 value
timeout integer 选填 过期时间,毫秒,默认值:120000

cacheGet

从cache取数据,返回Object。
属性:
属性名 类型 必填 说明
key string 必填 key

cacheRemove

从缓存中移除数据,返回boolean。
属性:
属性名 类型 必填 说明
key string 必填 key

lock

加锁,若锁不存在则先创建锁再加锁,用于多线程同步,返回boolean。
属性:
属性名 类型 必填 说明
name string 必填 锁名字

unlock

解锁,用于多线程同步,返回boolean。
属性:
属性名 类型 必填 说明
name string 必填 锁名字

releaseLock

若锁存在则销毁,用于多线程同步,返回boolean。
属性:
属性名 类型 必填 说明
name string 必填 锁名字

base64Encode

base64编码,返回string。
属性:
属性名 类型 必填 说明
data byte[] 必填 待编码的字节数组

base64Decode

base64解码,返回byte[]。
属性:
属性名 类型 必填 说明
data string 必填 待解码的字符串

encodeURI

encode uri,返回string。
属性:
属性名 类型 必填 说明
data string 必填 待编码的字符串

decodeURI

decode uri,返回string。
属性:
属性名 类型 必填 说明
data string 必填 待解码的字符串

newFile

创建file,返回File文件对象。
属性:
属性名 类型 必填 说明
path string 必填 相对路径,不能包含..

closeFile

关闭文件。
属性:
属性名 类型 必填 说明
file object 必填 文件对象
Copyright © 2021 冰狐智能辅助. All rights reserved.