触摸精灵控制中心-数据中心界面介绍

发布于 2020-02-21 18:03:19


1.新建数据模板

ID 自动生成无需填写
名称 模板的名称
说明 模板的说明
标签 点击增加标签可增加一个标签,填写你准备记录的数据

2.数据模板列表区域
编辑模板 编辑模板内容
数据列表 根据你设计的模板显示

2.1 数据列表的控制区域
2.2 数据的显示区域

3.接口说明
接口为 设置内的 本地访问地址 + /data
参数 id 为模板的id
predata 为前置数据,即用来确定数据唯一性的数据,例如上面的例子中 账号 区 第几个角色 为前置数据,用于定位数据,请确保前置数据的唯一性!!!
data 更新数据,用于更新的数据,如果将前置数据写入这里会把前置数据也一起更新.
例如 合区后更新前置中的区数据
前置数据 predata={"账号":"evan","区": "1","第几个角色": "1"}
更新数据 data={"区": "2"}
这样会将区更新为2 下次要更新这条数据的时候前置数据中的区也要改成2,否则会找不到数据
predata={"账号":"evan","区": "2","第几个角色": "1"}

上传图片数据需要先使用上传接口将图片上传至目录后在上传数据.图片数据的json为一个数组,可以一次上传多个图片,例如抽卡时可以把每张卡都上传

代码:

function main()
    local ID = '1641a87b-ff0e-4eb1-a5f5-b8fe5ce576f0' --数据模板ID
    predata = {}
    predata['账号'] = 'evan'
    predata['区'] = '1'
    predata['第几个角色'] = '1'
    data = {}
    data['等级'] = 20
    data['金币'] = 666
    local info = net.http.post('http://192.168.31.163:3000/data', {} ,string.format('id=%s&predata=%s&data=%s',ID,codec.json.encode(predata),codec.json.encode(data)))
    sys.log(info)
end

返回内容:如果前置数据匹配则会返回
image.png

如果前置数据无法匹配则会增加一条新数据,返回:
image.png

如果只想获取数据不更新数据,data留空(留空不是不写,见下面代码)

function main()
    local ID = '1641a87b-ff0e-4eb1-a5f5-b8fe5ce576f0' --数据模板ID
    predata = {}
    predata['账号'] = 'evan'
    predata['区'] = '1'
    predata['第几个角色'] = '1'
    data = {}
    local info = net.http.post('http://192.168.31.163:3000/data',{},string.format('id=%s&predata=%s&data=%s',ID,codec.json.encode(predata),codec.json.encode(data)))
    sys.log(info)
end

返回内容同修改数据,但是如果前置数据不匹配则会增加一条数据

上传图片方式如下:

function main()
    local ID = '1641a87b-ff0e-4eb1-a5f5-b8fe5ce576f0' --数据模板ID
    predata = {}
    predata['账号'] = 'evan'
    predata['区'] = '1'
    predata['第几个角色'] = '1'
    data = {}
    data['图片'] = {}
    for i = 1,3 do
        local img = string.format('/var/touchelf/%s.jpg',os.time())
        snapshotRegion(img,100,100,200,200) --截图
        local res = uploads(img) --上传截图获取图片地址
        res = codec.json.decode(res)
        sys.log(res.data)
        table.insert(data['图片'],res.data) --将图片地址写入数组
        mSleep(1000)
    end
    local info = net.http.post('http://192.168.31.163:3000/data',{},string.format('id=%s&predata=%s&data=%s',ID,codec.json.encode(predata),codec.json.encode(data)))
    sys.log(info)
end

function uploads (file)
    local http = require("socket.http")
    local ltn12 = require("ltn12")
    local url = "http://192.168.31.163:3000/uploadFile"
    filename = string.match(file, ".+/([^/]*%.%w+)$")
    local files = io.open(file, "rb")
    local data = files:read("*all")
      files:close();
      local request_body = string.format('------Evan\r\nContent-Disposition: form-data;name="file"; filename="%s"\r\nContent-Type: application/octet-stream\r\n\r\n%s\r\n------Evan--',filename,data)
      --request_body = string.gsub(request_body, '\n', '\r\n')
    local response_body = {}
    local res, code, response_headers = http.request{
        url = url,
        method = "PUT",
        headers =
          {
              ["Content-Type"] = "multipart/form-data; boundary=----Evan";
              ["Content-Length"] = #request_body;
         },
          source = ltn12.source.string(request_body),
          sink = ltn12.sink.table(response_body),
    }
    if type(response_body) == "table" then
      if table.concat(response_body) ~= "error" then
          return table.concat(response_body);
      else
          return -1;
      end
    else
      logDebug("Not a table:", type(response_body))
      return -1;
    end
end

注意图片无法直接追加,如果需要追加可先获取数据,然后在追加图片数据后更新数据
image.png
上传后点击图片可展示图片大图,点击左右两边可切换显示图片

注意字符串和数字类型是有区别的,即{"区": "2"}和{"区": 2}在前置数据中判断会当成是不同的数据.
1 条评论

发布
问题