# 设备管理服务平台 版本 | 创建时间 | 作者 | 备注信息 ---|---|---|--- v1.0|2022-01-20|zxfei| 接口文档 ## 数据类型 类型名称|类型描述|参考样例 ---|---|--- String |字符串|A、a、ab Integer|数字类型|1、12、-1 Long|长整型数字|1、12、-1 date|时间类型,单位纳秒数字|167988745573 BigDecimal|小数类型|545.256 object|对象类型|{"name":"zhang3"} arrays|数组类型|[{"name":"zhang3"},{"name":"zhang2"}] ## 设备终端接口服务 ### 服务端地址获取 **广播服务端口:** 8074 **广播客户端口:** 8073 **请求方式:** UDP **内容类型:** application/json;charset=utf-8 **简要描述:** 服务端地址获取 **广播参数:** 参数名称|类型|备注|必填|其它 ---|---|---|---|--- deviceNum|String|设备编码|是|- **请求样例:** ``` { "deviceNum":"12345678" } ``` **响应参数:** 参数名称 |参数类型|备注|其它 ---|---|---|--- code|Integer|结果码(-1.失败,1.成功)|- msg|String|消息|- data|Object|数据对象|-  ip|String|ip|-  port|Integer|port|-  deviceRegisterApi|String|设备注册API|-  deviceInitApi|String|设备初始化信息API|-  deviceUpdateApi|String|设备页面修改API|- **响应消息样例:** ``` { "msg":"获取服务端地址成功", "code":1, "data":{ "ip":"192.168.0.98", "port":11091,, "deviceRegisterApi":"/m/api/register", "deviceInitApi":"/m/api/deviceInit", "deviceUpdateApi":"/m/api/deviceUpdate" } } ``` ### 设备注册 **请求URL:** m/api/register **请求方式:** POST **内容类型:** application/json;charset=utf-8 **简要描述:** 设备注册,成功返回响应rabbmit连接参数,如未找到该设备,系统会根据设备码创建新设备 **请求参数:** 参数名称|类型|备注|必填|其它 ---|---|---|---|--- deviceCode|String|设备编码,唯一|是|可是编码或者mac地址,由平台创建 **请求样例:** ``` { "deviceCode":"a12345678" } ``` **响应参数:** 参数名称 |参数类型|备注|其它 ---|---|---|--- code|Integer|结果码(-1.失败,1.成功)|- msg|String|消息|- data|object|数据对象|-  content|String|加密后的内容|AES加密 **content解密参数:** 参数名称 |参数类型|备注|其它 ---|---|---|--- rabbmitInfo|Object|rabbmit相关链接信息|-  downTopicFilter|String|下行队列topic|-  uploadTopicFilter|String|上行队列topic|-  username|String|rabbmit用户名|-  password|String|rabbmit密码|-  host|String|ip|-  port|String|端口|-  virtualHost|String|虚拟机|-  exchangeName|String|交换机名称|-  messageTtl|String|队列消息超时时间,毫秒|- serviceInfo|Object|服务接口连接信息|-  homeUrl|String|首页|-  serverUrl|String|前端服务接口地址|- deviceInfo|Object|设备基础信息|-  siteId|Long|站点ID|-  siteCode|String|站点编码|-  siteName|String|站点名称|-  productId|Long|设备产品类型Id|-  productName|String|设备产品类型|-  enabled|Integer|设备启用状态 (0.停止,1.启用)|-  source|Integer|设备来源,默认1(0.旧设备,1.新设备)|- **响应消息样例:** ``` { "code":1, "data":{ "content":"hRNPu+V1hc4lGRHtXGyVOF0U7ez8/ZxFke9L4o7DWVLMfsZwkViAChfLKSydAEWAdsbgP1dzfNrQTq7X0diu1awR/qdPNcDcpj5/hBozLn+OmuTKLUWhq9+WGtuoF3BTbtIpWkpQWDGolOCfRadenGUkuMozjEwwkt5CIDa+nzOqh56BJIhGahlx79Qt30ugj3UNhLTfvw5lpN9jY7u+icx+xnCRWIAKF8spLJ0ARYAbMXXhI21dYty7e1b+Cb2wZobupPyXRmyuy8Fkn4bculmkCywq78F6tPlu0rCCgJA=" } } ``` ### 设备初始化信息 **请求URL:** m/api/deviceInit **请求方式:** GET **内容类型:** application/json;charset=utf-8 **简要描述:** 设备初始化信息,提供手机编辑设备入口信息 **请求参数:** 参数名称|类型|备注|必填|其它 ---|---|---|---|--- **请求样例:** ``` {} ``` **响应参数:** 参数名称 |参数类型|备注|其它 ---|---|---|--- code|Integer|结果码(-1.失败,1.成功)|- msg|String|消息|- data|object|数据对象|-  productList|array|产品列表|数组   productId|Long|产品id|-   productName|String|产品名称|-   productCode|String|产品编码|-  firmList|array|设备生产商列表|数组   deviceFirmId|Long|生产商id|-   deviceFirmname|String|生产商名称|-  siteList|array|站点列表|数组   siteId|Long|站点id|-   siteName|String|站点名称|-   siteCode|String|站点编码|- **响应消息样例:** ``` { "code": 1, "data": { "firmList": [ { "deviceFirmId": 1, "deviceFirmname": "四川新鸿翔" } ], "productList": [ { "productCode": "pdj", "productId": 1, "productName": "排队机" }, { "productCode": "ckp", "productId": 2, "productName": "窗口屏" }, { "productCode": "hjq", "productId": 3, "productName": "呼叫器" }, { "productCode": "jzxsp", "productId": 4, "productName": "集中显示屏" }, { "productCode": "dsj", "productId": 5, "productName": "导视机" }, { "productCode": "pjq", "productId": 6, "productName": "评级器" }, { "productCode": "zzfwzd", "productId": 7, "productName": "自助服务终端" }, { "productCode": "tdj", "productId": 8, "productName": "填单机" }, { "productCode": "ybj", "productId": 9, "productName": "样表机" } ], "siteList": [ { "siteCode": "510105521000-0001", "siteId": 1, "siteName": "测试站点1" }, { "siteCode": "513400000000-0001", "siteId": 2, "siteName": "凉山州行政审批局" }, { "siteCode": "513426000000-0001", "siteId": 3, "siteName": "会东县行政审批局" }, { "siteCode": "513401001000-0001", "siteId": 6, "siteName": "test" }, { "siteCode": "513425000000-0001", "siteId": 7, "siteName": "会理市行政审批局" }, { "siteCode": "513425001000-0001", "siteId": 8, "siteName": "会理市城北街道办事处" }, { "siteCode": "510105521000-0002", "siteId": 9, "siteName": "蔡家测试中心" }, { "siteCode": "513301000000-0001", "siteId": 10, "siteName": "康定市行政审批局" }, { "siteCode": "510000000000-0001", "siteId": 12, "siteName": "四川省政务服务中心" } ] } } ``` ### 设备新增或更新 **请求URL:** m/api/deviceUpdate **请求方式:** POST **内容类型:** application/json;charset=utf-8 **简要描述:** 设备新增或更新,提供给前端手机页面更新设备操作 **请求参数:** 参数名称|类型|备注|必填|其它 ---|---|---|---|--- deviceName|String|否|设备名称 deviceCode|String|是|设备编码,默认为MAC地址 deviceMac|String|否|设备MAC地址,如不填写,默认等于deviceCode siteId|Long|是|站点Id siteCode|String|否|站点编号 siteName|String|否|站点名称 productId|Long|是|产品Id deviceFirmId|Long|否|设备生产厂商ID deviceFirmname|String|否|设备生产厂商名称 lon|String|否|经度 lati|String|否|经度 deviceInBuilding|Integer|否|所属楼栋 deviceInFloor|Integer|否|所属楼层 defectsLiabilityPeriod|Date|否|保修期,如2020-08-12 15:00:00 leadingOfficial|String|否|负责人 leadingOfficialTelephone|String|否|联系电话 source|Integer|否|设备来源,默认1(0.旧设备,1.新设备) **请求样例:** ``` { "deviceName":"agpla8", "deviceCode":"a1-a2", "deviceMac":"a1-a2", "siteId":1, "siteCode":"510105521000-0001", "siteName":"测试站点1", "productId":1, "deviceFirmId":1, "lon":"12", "lati":"22", "deviceInBuilding":13, "deviceInFloor":22, "defectsLiabilityPeriod":"2022-06-30", "leadingOfficial":"张三", "leadingOfficialTelephone":"13281114856",, "source":1 } ``` **响应参数:** 参数名称 |参数类型|备注|其它 ---|---|---|--- code|Integer|结果码|见附录码表 msg|String|消息|- data|object|数据对象|-  content|String|加密后的内容|AES加密 **content解密参数:** 参数名称 |参数类型|备注|其它 ---|---|---|--- rabbmitInfo|Object|rabbmit相关链接信息|-  downTopicFilter|String|下行队列topic|-  uploadTopicFilter|String|上行队列topic|-  username|String|rabbmit用户名|-  password|String|rabbmit密码|-  host|String|ip|-  port|String|端口|-  virtualHost|String|虚拟机|-  exchangeName|String|交换机名称|-  messageTtl|String|队列消息超时时间,毫秒|- serviceInfo|Object|服务接口连接信息|-  homeUrl|String|首页|-  serverUrl|String|前端服务接口地址|- serviceInfo|Object|服务接口连接信息|-  homeUrl|String|首页|-  serverUrl|String|前端服务接口地址|- deviceInfo|Object|设备基础信息|-  siteId|Long|站点ID|-  siteCode|String|站点编码|-  siteName|String|站点名称|-  productId|Long|设备产品类型Id|-  productName|String|设备产品类型|-  enabled|Integer|设备启用状态 (0.停止,1.启用)|- **响应消息样例:** ``` { "code":1, "data":{ "content":"hRNPu+V1hc4lGRHtXGyVOF0U7ez8/ZxFke9L4o7DWVLMfsZwkViAChfLKSydAEWAdsbgP1dzfNrQTq7X0diu1awR/qdPNcDcpj5/hBozLn+OmuTKLUWhq9+WGtuoF3BTbtIpWkpQWDGolOCfRadenGUkuMozjEwwkt5CIDa+nzOqh56BJIhGahlx79Qt30ugj3UNhLTfvw5lpN9jY7u+icx+xnCRWIAKF8spLJ0ARYAbMXXhI21dYty7e1b+Cb2wZobupPyXRmyuy8Fkn4bculmkCywq78F6tPlu0rCCgJA=" } } ``` ## 对外平台接口服务 ### 获取接口访问token **请求URL:** m/api/getToken **请求方式:** POST **内容类型:** application/json;charset=utf-8 **简要描述:** 获取接口访问token **请求参数:** 参数名称|类型|备注|必填|其它 ---|---|---|---|--- loginName|String|平台用户名称|是|- password|String|平台用户密码|是|- **请求样例:** ``` ``` **响应参数:** 参数名称 |参数类型|备注|其它 ---|---|---|--- code|Integer|结果码|见附录码表 msg|String|消息|- data|object|数据对象|- **响应消息样例:** ``` ``` ### 接收第三方平台设备消息 **请求URL:** m/api/receive **请求方式:** POST **鉴权头信息:** Authorization: {{token}} **内容类型:** application/json;charset=utf-8 **简要描述:** **请求参数:** 参数名称|类型|备注|必填|其它 :------|:---|:---|:---|:--- receiveMethod|Integer|1:新增,2:修改,3:删除,4:激活,5:启用,6:停用|是|- deviceName|String|设备名称|否|- deviceCode|String|设备编码,如MAC地址|是|- platformCode|String|平台系统编码|是|见平台编码附录 productCode|String|产品编码|是|见产品编码附录 ip|String|设备访问ip|否|- port|String|设备端口|否|- siteId|Long|站点ID,来源基础服务平台|是|- siteCode|String|站点编号,来源基础服务平台|是|- siteName|String|站点名称|是|- homeUrl|String|首页地址|否|- deviceRemark|String|备注|是|- deviceStatus|Integer|设备状态 (0.未激活,1.离线,2.在线)|是|默认0为激活 source|Integer|(0.旧设备,1.新设备)|是|默认1新设备 **请求样例:** ``` {} ``` **响应参数:** 参数名称 |参数类型|备注|其它 ---|---|---|--- code|Integer|结果码|见附录码表 msg|String|消息|- data|object|数据对象|- **响应消息样例:** ``` ``` ### 接收第三方平台命令消息 **请求URL:** m/api/callback **请求方式:** POST **内容类型:** application/json;charset=utf-8 **简要描述:** 以数组方式进行提交 **请求参数:** 参数名称|类型|备注|必填|其它 :------|:---|:---|:---|:--- deviceCode|String|设备编码,如MAC地址|是|- messageType|String|消息类型|是|如HEART_BEAT timestamp|Long|时间戳|是|- data|String|数据体,内容自行定义|否|- **请求样例:** ``` [ { "data":"{xxxx}", "deviceCode":"a1", "messageType":"HEART_BEAT", "timestamp":1654656951795 }, { "data":"{bbbbbb}", "deviceCode":"a2", "messageType":"HEART_BEAT", "timestamp":1654656951795 } ] ``` **响应参数:** 参数名称 |参数类型|备注|其它 ---|---|---|--- code|Integer|结果码|见附录码表 msg|String|消息|- **响应消息样例:** ``` ``` ### 回调各个平台通知消息 **请求URL:** 各平台通知地址 **请求方式:** POST **内容类型:** application/json;charset=utf-8 **简要描述:** 设备消息通知各个平台,当配置了地址时候 **请求参数:** 参数名称|类型|备注|必填|其它 :------|:---|:---|:---|:--- type|Integer|消息类型|是|0:设备增删改查,data数据域封装具体设备消息,1:设备消息类,数据域透传设备上行消息体。 msg|String|消息|否|- data|object|数据对象|是|-  deviceStatus|Integer||是|状态,1:新增,2:修改,3:删除,4:激活,5:启用,6:停用,7:上线,8:下线  deviceName|String|设备名称|否|-  deviceCode|String|设备编码,如MAC地址|是|-  productCode|String|产品编码|是|见附录  ip|String|设备访问ip|否|-  port|String|设备端口|否|-  siteId|Long|站点ID,来源基础服务平台|是|-  siteCode|String|站点编号,来源基础服务平台|是|-  siteName|String|站点名称|是|-  deviceRemark|String|备注|是|- **请求样例:** ``` {} ``` **响应参数:** 参数名称 |参数类型|备注|其它 ---|---|---|--- code|Integer|结果码|见附录码表 msg|String|消息|- data|object|数据对象|- **响应消息样例:** ``` ``` ## 设备消息 ### 上行消息 **topic:** uploadTopicFilter **请求方式:** rabbmitMQ **内容类型:** application/json;charset=utf-8 **简要描述:** 上行消息存放队列 **请求参数:** 参数名称|类型|备注|必填|其它 ---|---|---|---|--- headers|Object|消息头|是|-  data|Object|消息头数据对象|是|-   protocol|String|数据域协议类型,默认json|是|-   messageType|String|上报消息类型|是|HEART_BEAT   deviceCode|String|设备编码信息|是|如:mac地址   sign|String|签名|是|-   timestamp|String|时间戳|是|- data|byte[]|byte数组,base64编码|是|- key|String|消息唯一标识|是|- **请求样例:** ``` { "data":"YWJjZDEyMzQ=", "headers":{ "data":{ "protocol":"json", "messageType":"HEART_BEAT", "deviceCode":"A1:A2:A3:A4:A5:A6", "sign":"abcd1234", "timestamp":"2022-04-15 09:48:05" } }, "key":"d3635cd0597d46c88b85797c3846b04f" } ``` ### 下行消息 **topic:** downTopicFilter **请求方式:** rabbmitMQ **内容类型:** application/json;charset=utf-8 **简要描述:** 下行消息存放队列 **请求参数:** 参数名称|类型|备注|必填|其它 ---|---|---|---|--- headers|Object|消息头|是|-  data|Object|消息头数据对象|是|-   protocol|String|数据域协议类型,默认json|是|-   messageType|String|下发消息类型|是|UPGREAD   deviceCode|String|设备编码信息|是|如:mac地址   sign|String|签名|是|-   timestamp|String|时间戳|是|- data|byte[]|byte数组,base64编码|是|- key|String|消息唯一标识|是|- **请求样例:** ``` { "data":"YWJjZDEyMzQ=", "headers":{ "data":{ "protocol":"json", "messageType":"UPGREAD", "deviceCode":"A1:A2:A3:A4:A5:A6", "sign":"abcd1234", "timestamp":"2022-04-15 09:48:05" } }, "key":"d3635cd0597d46c88b85797c3846b04f" } ``` ## 码表 ### 响应结果码表 结果码|结果|其它 ---|---|--- 1|成功|- 1001|当前设备编码不存在|- 1002|当前设备编码已存在|- 1003|所属产品编码不存在|- 1004|当前设备未激活,请在后台配置后再激活|- 1005|所属平台不存在!请在后台添加后再激活|- 1006|当前设备所属产品平台未配置,请在后台配置后再激活|- 1007|站点ID为空|- 1008|设备已创建,请完善设备配置信息|- -1|系统内部异常|- ## 附录 ### 业务上行下行消息类型 编码|说明|其它 ---|---|--- HEART_BEAT|设备心跳消息|设备上行发送