# 设备管理服务平台
版本 |  创建时间   | 作者 |  备注信息
---|---|---|---
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|String|数据对象|-


**响应消息样例:**
```

{
    "msg":"获取服务端地址成功",
    "code":1,
    "data":"http://192.168.0.98:11071/m/api/register"
}

```


### 设备注册

**请求URL:** m/api/register

**请求方式:** POST

**内容类型:** application/json;charset=utf-8

**简要描述:** 设备注册，成功返回响应rabbmit连接参数

**请求参数:**

参数名称|类型|备注|必填|其它
---|---|---|---|---
deviceCode|String|设备编码,唯一|是|可是编码或者mac地址，由平台创建

**请求样例:**
```
{
"deviceCode":"a12345678"
}

```
**响应参数:**

参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码（-1.失败，1.成功）|-
msg|String|消息|-
data|object|数据对象|-
&emsp;content|String|加密后的内容|AES加密


**content解密参数:**

参数名称 |参数类型|备注|其它
---|---|---|---
downTopicFilter|String|下行队列topic|-
uploadTopicFilter|String|上行队列topic|-
username|String|rabbmit用户名|-
password|String|rabbmit密码|-
host|String|ip|-
port|String|端口|-
virtualHost|String|虚拟机|-
exchangeName|String|交换机名称|-
messageTtl|String|队列消息超时时间，毫秒|-
homeUrl|String|首页|-

**响应消息样例:**
```
{
    "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|结果码（-1.失败，1.成功）|-
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|备注|是|-

**请求样例:**
```
{}

```
**响应参数:**

参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码（-1.失败，1.成功）|-
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|结果码（-1.失败，1.接收成功）|-
msg|String|消息|-

**响应消息样例:**
```


```

### 回调各个平台通知消息

**请求URL:** 各平台通知地址

**请求方式:** POST

**内容类型:** application/json;charset=utf-8

**简要描述:** 设备消息通知各个平台，当配置了地址时候

**请求参数:**

参数名称|类型|备注|必填|其它
:------|:---|:---|:---|:---
type|Integer|消息类型|是|0:设备增删改查，data数据域封装具体设备消息，1：设备消息类，数据域透传设备上行消息体。
msg|String|消息|否|-
data|object|数据对象|是|-
&emsp;deviceStatus|Integer||是|状态，1：新增，2：修改，3：删除，4：激活，5：启用，6：停用，7：上线，8：下线
&emsp;deviceName|String|设备名称|否|-
&emsp;deviceCode|String|设备编码，如MAC地址|是|-
&emsp;platformCode|String|平台系统编码|是|见附录
&emsp;productCode|String|产品编码|是|见附录
&emsp;ip|String|设备访问ip|否|-
&emsp;port|String|设备端口|否|-
&emsp;siteId|Long|站点ID，来源基础服务平台|是|-
&emsp;siteCode|String|站点编号，来源基础服务平台|是|-
&emsp;siteName|String|站点名称|是|-
&emsp;deviceRemark|String|备注|是|-

**请求样例:**
```
{}

```
**响应参数:**

参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码（-1.失败，1.成功）|-
msg|String|消息|-
data|object|数据对象|-

**响应消息样例:**
```


```

## 设备消息

### 上行消息

**topic:** uploadTopicFilter

**请求方式:** rabbmitMQ

**内容类型:** application/json;charset=utf-8

**简要描述:** 上行消息存放队列

**请求参数:**

参数名称|类型|备注|必填|其它
---|---|---|---|---
headers|Object|消息头|是|-
&emsp;data|Object|消息头数据对象|是|-
&emsp;&emsp;protocol|String|数据域协议类型，默认json|是|-
&emsp;&emsp;messageType|String|上报消息类型|是|HEART_BEAT
&emsp;&emsp;sign|String|签名|是|-
&emsp;&emsp;timestamp|String|时间戳|是|-
data|byte[]|byte数组，base64编码|是|-
key|String|消息唯一标识|是|-

**请求样例:**
```
{
    "data":"YWJjZDEyMzQ=",
    "headers":{
        "data":{
            "protocol":"json",
            "messageType":"HEART_BEAT",
            "sign":"abcd1234",
            "timestamp":"2022-04-15 09:48:05"
        }
    },
    "key":"d3635cd0597d46c88b85797c3846b04f"
}
```

### 下行消息

**topic:** downTopicFilter

**请求方式:** rabbmitMQ

**内容类型:** application/json;charset=utf-8

**简要描述:** 下行消息存放队列

**请求参数:**

参数名称|类型|备注|必填|其它
---|---|---|---|---
headers|Object|消息头|是|-
&emsp;data|Object|消息头数据对象|是|-
&emsp;&emsp;protocol|String|数据域协议类型，默认json|是|-
&emsp;&emsp;messageType|String|下发消息类型|是|DOWN_UPGREAD
&emsp;&emsp;sign|String|签名|是|-
&emsp;&emsp;timestamp|String|时间戳|是|-
data|byte[]|byte数组，base64编码|是|-
key|String|消息唯一标识|是|-

**请求样例:**
```
{
    "data":"YWJjZDEyMzQ=",
    "headers":{
        "data":{
            "protocol":"json",
            "messageType":"UPGREAD",
            "sign":"abcd1234",
            "timestamp":"2022-04-15 09:48:05"
        }
    },
    "key":"d3635cd0597d46c88b85797c3846b04f"
}
```


