first commit

This commit is contained in:
2022-03-17 15:59:24 +08:00
commit 2b0debb847
592 changed files with 73946 additions and 0 deletions

57
doc/auth.md Normal file
View File

@@ -0,0 +1,57 @@
# 鉴权服务
#### 应用注册
URL: /auth/sign-in
`post`
**请求参数:**
| **参数** | **名字** | **类型** | **约束** | **说明** |
| -------------- | ------------ | -------- | -------- | -------- |
| Content-Type | body中的数据类型 | string | true | 值为multipart/form-data |
| configFile | 配置文件 | file | true | 包含第三方应用鉴权服务接口的相关信息 |
| appId | 应用ID | text | true | 应用ID位于请求头 |
**返回参数:**
| **参数** | **名字** | **类型** | **说明** |
| ----------- | ------------ | -------- | ---------- |
| appId | appId | string | appId |
| key | key | string | 授权第三方应用使用本鉴权服务 |
| createTime | 创建时间 | int | app注册时间 |
| updateTime | 更新时间 | int | 信息更新时间 |
```json
{
"result": 0,
"message": "",
"data": {
"appId": "dtalk",
"key": "key",
"createTime": 1625552582748,
"updateTime": 1625552582748
}
}
```
#### 鉴权
**请求参数:**
| **参数** | **名字** | **类型** | **约束** | **说明** |
| ---------- | -------------- | -------- | -------- | ------------------------------------------------------------ |
| appId | 应用的唯一标识 | string | true | 应用的唯一标识 |
| token | token | string | true | 第三方鉴权所要的token |
| digest | 消息摘要 | string | true | digest = SHA256 ( appId + token + createTime + key )key为注册时所返回的key |
| createTime | 请求创建时间 | int | true | 请求创建时的时间戳 |
**返回参数:**
| **参数** | **名字** | **类型** | **说明** |
| -------- | -------- | -------- | -------- |
| uid | 用户ID | string | 用户ID |

406
doc/backend.md Normal file
View File

@@ -0,0 +1,406 @@
# 后台服务
#### 检查更新
URL: /app/version/check
`post`
**请求参数:**
| **参数** | **名字** | **类型** | **约束** | **说明** |
| -------------- | ------------ | -------- | -------- | -------- |
| versionCode | 当前版本 | int | true | 版本code |
**返回参数:**
| **参数** | **名字** | **类型** | **说明** |
| ----------- | ------------ | -------- | ---------- |
| id | 最新的版本 | int | 版本编号 |
| platform | 平台 | string | chat33pro |
| status | 线上状态 | int | 0历史1线上版本 |
| deviceType | 终端类型 | string | Android/IOS |
| versionName | 版本名 | string | 3.6.8.10 |
| versionCode | 版本code | int | 36810 |
| url | 下载地址 | string | |
| force | 是否强制更新 | bool | false非强制true强制 |
| description | 描述信息 | string array | |
| opeUser | 操作者 | string | |
| updateTime | 更新时间 | int | |
| createTime | 创建时间 | int | |
| size | 包大小 | int | 单位byte |
| md5 | 包的md5 | string | |
```json
{
"result": 0,
"message": "",
"data": {
"id": 8,
"platform": "Chat33Pro",
"status": 1,
"deviceType": "IOS",
"versionName": "1.0.4",
"versionCode": 10400,
"url": "https://xxx",
"force": true,
"description": [
"qqq",
"ww"
],
"opeUser": "root",
"md5": "12345",
"size": 123,
"updateTime": 1621408163504,
"createTime": 1621396088880
}
}
```
#### 创建版本
URL: /backend/version/create
`post`
**请求参数:**
| 参数 | 名字 | 类型 | 约束 | 说明 |
| ----------- | ------------ | ------------ | ---- | ------------------------- |
| platform | 平台 | string | true | chat33pro |
| description | 描述信息 | string array | true | |
| force | 是否强制更新 | bool | true | false非强制true强制 |
| url | 下载地址 | string | true | |
| versionCode | 版本code | int | true | 36810 |
| versionName | 版本名 | string | true | 3.6.8.10 |
| deviceType | 终端类型 | string | true | Android/IOS |
| Authorization | 授权 | string | true | 用于传递token |
| size | 包大小 | int | 单位byte |
| md5 | 包的md5 | string | |
**返回参数:**
| 参数 | 名字 | 类型 | 说明 |
| ----------- | ------------ | ------------ | ------------------------- |
| version | 版本信息 | object | 创建的版本的全部信息 |
| id | 版本编号 | int | |
| platform | 平台 | string | chat33pro |
| status | 线上状态 | int | 0历史1线上版本 |
| deviceType | 终端类型 | string | Android/IOS |
| versionName | 版本名 | string | 3.6.8.10 |
| versionCode | 版本code | int | 36810 |
| url | 下载地址 | string | |
| force | 是否强制更新 | bool | false非强制true强制 |
| description | 描述信息 | string array | |
| opeUser | 操作者 | string | |
| updateTime | 更新时间 | int | |
| createTime | 创建时间 | int | |
| size | 包大小 | int | 单位byte |
| md5 | 包的md5 | string | |
```json
{
"result": 0,
"message": "",
"data": {
"version": {
"id": 3,
"platform": "Chat33Pro",
"status": 0,
"deviceType": "Android",
"versionName": "1.0.1",
"versionCode": 10000,
"url": "https://xxx",
"force": true,
"description": [
"qqq",
"ww"
],
"opeUser": "root",
"md5": "12345",
"size": 123,
"updateTime": 1621394358387,
"createTime": 1621394358387
}
}
}
```
#### 更新版本
URL: /backend/version/update
`put`
**请求参数:**
| 参数 | 名字 | 类型 | 约束 | 说明 |
| ----------- | ------------ | ------------ | ---- | ------------------------- |
| description | 描述信息 | string array | true | |
| force | 是否强制更新 | bool | true | false非强制true强制 |
| url | 下载地址 | string | true | |
| versionCode | 版本code | int | true | 36810 |
| versionName | 版本名 | string | true | 3.6.8.10 |
| id | 版本编号 | int | true | |
| Authorization | 授权 | string | true | 用于传递token |
| size | 包大小 | int | 单位byte |
| md5 | 包的md5 | string | |
**返回参数:**
| 参数 | 名字 | 类型 | 说明 |
| ----------- | ------------ | ------------ | ------------------------- |
| version | 版本信息 | object | 修改后的版本的全部信息 |
| id | 版本编号 | int | |
| platform | 平台 | string | chat33pro |
| status | 线上状态 | int | 0历史1线上版本 |
| deviceType | 终端类型 | string | Android/IOS |
| versionName | 版本名 | string | 3.6.8.10 |
| versionCode | 版本code | int | 36810 |
| url | 下载地址 | string | |
| force | 是否强制更新 | bool | false非强制true强制 |
| description | 描述信息 | string array | |
| opeUser | 操作者 | string | |
| updateTime | 更新时间 | int | |
| createTime | 创建时间 | int | |
| size | 包大小 | int | 单位byte |
| md5 | 包的md5 | string | |
```json
{
"result": 0,
"message": "",
"data": {
"version": {
"id": 3,
"platform": "Chat33Pro",
"status": 0,
"deviceType": "Android",
"versionName": "1.0.0",
"versionCode": 10000,
"url": "https://xxx",
"force": false,
"description": [
"xx",
"yy"
],
"opeUser": "root",
"md5": "234567",
"size": 2345,
"updateTime": 1621395843469,
"createTime": 1621394358387
}
}
}
```
#### 修改版本线上状态
URL: /backend/version/change-status
`put`
**请求参数:**
| 参数 | 名字 | 类型 | 约束 | 说明 |
| ------ | -------- | ------ | ---- | -------------------- |
| id | 版本编号 | int | true | 要修改的版本编号 |
| Authorization | 授权 | string | true | 用于传递token |
**返回参数:**
```json
{
"result": 0,
"message": "",
"data": null
}
```
#### 获取全部版本信息
URL: /backend/version/list
`get`
**请求参数:**
| 参数 | 名字 | 类型 | 约束 | 说明 |
| ---------- | -------- | ------ | ----- | ------------ |
| page | 页码 | int | false | 从0开始不填默认是0 |
| platform | 平台 | string | false | 要筛选的平台 |
| deviceType | 终端类型 | string | false | 要筛选的终端 |
| Authorization | 授权 | string | true | 用于传递token |
**返回参数:**
| 参数 | 名字 | 类型 | 说明 |
| ------------- | -------------- | ------------ | -------------------------- |
| totalElements | 所有的记录条数 | int | |
| totalPages | 总页数 | int | |
| versionList | 版本列表 | object array | 所查询的全部版本的全部信息 |
| id | 版本编号 | int | |
| platform | 平台 | string | chat33pro |
| status | 线上状态 | int | 0历史1线上版本 |
| deviceType | 终端类型 | string | Android/IOS |
| versionName | 版本名 | string | 3.6.8.10 |
| versionCode | 版本code | int | 36810 |
| url | 下载地址 | string | |
| force | 是否强制更新 | bool | false非强制true强制 |
| description | 描述信息 | string array | |
| opeUser | 操作者 | string | |
| updateTime | 更新时间 | int | |
| createTime | 创建时间 | int | |
| size | 包大小 | int | 单位byte |
| md5 | 包的md5 | string | |
```json
{
"result": 0,
"message": "",
"data": {
"totalElements": 5,
"totalPages": 1,
"versionList": [
{
"id": 12,
"platform": "Chat33Pro",
"status": 0,
"deviceType": "IOS",
"versionName": "1.0.0",
"versionCode": 10000,
"url": "https://xxx",
"force": false,
"description": [
"qqq",
"ww"
],
"opeUser": "root",
"md5": "12345",
"size": 123,
"updateTime": 1621396134321,
"createTime": 1621396134321
},
{
"id": 11,
"platform": "Chat33Pro",
"status": 1,
"deviceType": "IOS",
"versionName": "1.0.1",
"versionCode": 10100,
"url": "https://xxx",
"force": true,
"description": [
"qqq",
"ww"
],
"opeUser": "root",
"md5": "12345",
"size": 123,
"updateTime": 1621396320416,
"createTime": 1621396123534
},
{
"id": 10,
"platform": "Chat33Pro",
"status": 0,
"deviceType": "IOS",
"versionName": "1.0.2",
"versionCode": 10200,
"url": "https://xxx",
"force": true,
"description": [
"qqq",
"ww"
],
"opeUser": "root",
"md5": "12345",
"size": 123,
"updateTime": 1621396117028,
"createTime": 1621396117028
},
{
"id": 9,
"platform": "Chat33Pro",
"status": 0,
"deviceType": "IOS",
"versionName": "1.0.3",
"versionCode": 10300,
"url": "https://xxx",
"force": false,
"description": [
"qqq",
"ww"
],
"opeUser": "root",
"md5": "12345",
"size": 123,
"updateTime": 1621396108579,
"createTime": 1621396108579
},
{
"id": 8,
"platform": "Chat33Pro",
"status": 0,
"deviceType": "IOS",
"versionName": "1.0.4",
"versionCode": 10400,
"url": "https://xxx",
"force": true,
"description": [
"qqq",
"ww"
],
"opeUser": "root",
"md5": "12345",
"size": 123,
"updateTime": 1621396320416,
"createTime": 1621396088880
}
]
}
}
```
#### 获取token
URL: /backend/user/login
`get`
**请求参数:**
| 参数 | 名字 | 类型 | 约束 | 说明 |
| -------- | ------ | ------ | ---- | ------------ |
| userName | 用户名 | string | true | 暂时为“root” |
| password | 口令 | string | true | 暂时为“root” |
**返回参数:**
| 参数 | 名字 | 类型 | 说明 |
| ----- | ----- | ------ | ---- |
| userInfo | 用户信息 | object |包含用户名和token |
| userName | 用户名 | string | |
| token | token | string | |
```json
{
"result": 0,
"message": "",
"data": {
"userInfo": {
"userName": "root",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InJvb3QiLCJleHAiOjE2MjA5ODcyMDEsImlzcyI6IkJvYiJ9.w_NoSezjjJLRJMjiU4jiMYozdYvL6NPwv2xuCMepws4"
}
}
}
```

516
doc/backupApi.md Normal file
View File

@@ -0,0 +1,516 @@
# 找回服务
### 手机绑定查询
URL: /backup/phone-query
`get`|`post`
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ------ |
| area | true | string | 区号 |
| phone | true | string | 手机号 |
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
"exists":false
}
}
```
### 邮箱绑定查询
URL: /backup/email-query
`get`|`post`
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ---- |
| email | true | string | 邮箱 |
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
"exists":false
}
}
```
### 发送手机验证码
URL: /backup/v2/phone-send
`post`
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ----- | ------ | ------ |
| area | false | string | 区号 |
| phone | true | string | 手机号 |
| codeType | true | string | 验证码类型quick->快速登录bind->绑定export->导出通讯录 |
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```
### 发送邮箱验证码
URL: /backup/v2/email-send
`post`
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ---- |
| email | true | string | 邮箱 |
| codeType | true | string | 验证码类型quick->快速登录bind->绑定export->导出通讯录 |
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```
### 绑定手机
URL: /backup/v2/phone-binding
`post`|`auth`
type: bind
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| -------- | ----- | ------ | ---------- |
| area | false | string | 区号 |
| phone | true | string | 手机号 |
| code | true | string | 验证码 |
| mnemonic | true | string | 加密助记词 |
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```
### 绑定邮箱
URL: /backup/v2/email-binding
`post`|`auth`
type: bind
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| -------- | ---- | ------ | ---------- |
| email | true | string | 手机号 |
| code | true | string | 验证码 |
| mnemonic | true | string | 加密助记词 |
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```
### 手机找回私钥
URL: /backup/v2/phone-retrieve
`post`
type: quick
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ------ |
| area | false | string | 区号 |
| phone | true | string | 手机号 |
| code | true | string | 验证码 |
**返回参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ----------- | ---- | ------ | ---------- |
| address | true | string | 用户地址 |
| area | true | string | 区号 |
| phone | true | string | 手机号 |
| email | true | string | 邮箱 |
| mnemonic | true | string | 加密助记词 |
| update_time | true | string | 更新时间 |
```json
{
"result": 0,
"message": "操作成功",
"data": {
"address": "0xffffffff",
"area":"",
"phone":"",
"email":"",
"mnemonic":"",
"update_time":""
}
}
```
### 邮箱找回私钥
URL: /backup/v2/email-retrieve
`post`
type: quick
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ------ |
| email | true | string | 邮箱 |
| code | true | string | 验证码 |
**返回参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ----------- | ---- | ------ | ---------- |
| address | true | string | 用户地址 |
| area | true | string | 区号 |
| phone | true | string | 手机号 |
| email | true | string | 邮箱 |
| mnemonic | true | string | 加密助记词 |
| update_time | true | string | 更新时间 |
```json
{
"result": 0,
"message": "操作成功",
"data": {
"address": "0xffffffff",
"area":"",
"phone":"",
"email":"",
"mnemonic":"",
"update_time":""
}
}
```
### 手机导出通讯录验证
URL: /backup/v2/phone-export
`post`
type: export
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ------ |
| area | false | string | 区号 |
| phone | true | string | 手机号 |
| code | true | string | 验证码 |
| address | true | string | 地址 |
**返回参数:**
ERR:-4010 账号与绑定手机不一致
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```
### 邮箱导出通讯录验证
URL: /backup/v2/email-export
`post`
type: export
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ------ |
| email | true | string | 邮箱 |
| code | true | string | 验证码 |
| address | true | string | 地址 |
**返回参数:**
ERR:-4011 账号与绑定邮箱不一致
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```
### 修改助记词(修改密聊密码)
URL: /backup/edit-mnemonic
`post`|`auth`
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| -------- | ---- | ------ | ---------- |
| mnemonic | true | string | 加密助记词 |
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```
### 发送手机验证码
URL: /backup/phone-send弃用
`post`
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ----- | ------ | ------ |
| area | false | string | 区号 |
| phone | true | string | 手机号 |
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```
### 发送邮箱验证码
URL: /backup/email-send弃用
`post`
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ---- |
| email | true | string | 邮箱 |
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```
### 绑定手机
URL: /backup/phone-binding弃用
`post`|`auth`
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| -------- | ----- | ------ | ---------- |
| area | false | string | 区号 |
| phone | true | string | 手机号 |
| code | true | string | 验证码 |
| mnemonic | true | string | 加密助记词 |
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```
### 绑定邮箱
URL: /backup/email-binding弃用
`post`|`auth`
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| -------- | ---- | ------ | ---------- |
| email | true | string | 手机号 |
| code | true | string | 验证码 |
| mnemonic | true | string | 加密助记词 |
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```
### 手机找回私钥
URL: /backup/phone-retrieve弃用
`post`
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ------ |
| area | true | string | 区号 |
| phone | true | string | 手机号 |
| code | true | string | 验证码 |
**返回参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ----------- | ---- | ------ | ---------- |
| address | true | string | 用户地址 |
| area | true | string | 区号 |
| phone | true | string | 手机号 |
| email | true | string | 邮箱 |
| mnemonic | true | string | 加密助记词 |
| update_time | true | string | 更新时间 |
```json
{
"result": 0,
"message": "操作成功",
"data": {
"address": "0xffffffff",
"area":"",
"phone":"",
"email":"",
"mnemonic":"",
"update_time":""
}
}
```
### 邮箱找回私钥
URL: /backup/email-retrieve弃用
`post`
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ------ |
| email | true | string | 邮箱 |
| code | true | string | 验证码 |
**返回参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ----------- | ---- | ------ | ---------- |
| address | true | string | 用户地址 |
| area | true | string | 区号 |
| phone | true | string | 手机号 |
| email | true | string | 邮箱 |
| mnemonic | true | string | 加密助记词 |
| update_time | true | string | 更新时间 |
```json
{
"result": 0,
"message": "操作成功",
"data": {
"address": "0xffffffff",
"area":"",
"phone":"",
"email":"",
"mnemonic":"",
"update_time":""
}
}
```
### bty和btc地址映射第一阶段
URL: /backup/transform/addressEnrolment
`post`
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ------ |
| btcAddress | true | string | |
| ethAddress | true | string | |
**返回参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ----------- | ---- | ------ | ---------- |
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```

42
doc/discoveryApi.md Normal file
View File

@@ -0,0 +1,42 @@
# 发现服务
#### 获取聊天服务列表
URL: /disc/nodes
`post`
**请求参数:**无
**返回参数:**
| 参数名 | 必填 | 类型 | 说明 |
| ------- | ---- | -------- | -------------- |
| servers | true | []object | 聊天服务器列表 |
| name | true | string | 名称 |
| address | true | string | 地址 |
| nodes | true | []object | 合约节点列表 |
| name | true | string | 名称 |
| address | true | string | 地址 |
```json
{
"result": 0,
"message": "操作成功",
"data": {
"servers": [
{
"name": "默认服务器",
"address":"127.0.0.1:8080"
},{
"name": "默认服务器2",
"address":"chat.33.cn"
}
],
"nodes": [
{
"name": "合约节点1",
"address":"127.0.0.1:8080"
}
]
}
}
```

95
doc/gateway.md Normal file
View File

@@ -0,0 +1,95 @@
#### 获取模块启用状态
URL: /app/modules/all
`post`
**请求参数:**
**返回参数:**
| **参数** | **名字** | **类型** | **说明** |
| ----------- | ------------ | -------- | ---------- |
| name | 模块名称 | string | 钱包模块wallet企业模块oa红包模块redpacket |
| isEnabled | 是否启用 | bool | |
| endPoints | 模块访问地址 | string | |
```json
{
"result": 0,
"message": "",
"data": [
{
"name": "wallet",
"isEnabled": true,
"endPoints": [
"https://172.16.101.126:8083"
]
},
{
"name": "oa",
"isEnabled": true,
"endPoints": [
"http://127.0.0.1"
]
}
]
}
```
#### 消息撤回
URL: /app/record/revoke
`post`
**请求参数:**
| **参数** | **名字** | **类型** | **约束** | **说明** |
| ----------- | ------------ | -------- | ---------- |---------- |
| type | 类型 | int | 必填 | 0->撤回私聊消息1->撤回群聊消息 |
| logId | 消息id | int64 | 必填| |
```json
{
"type": 0,
"logId": 0
}
```
**返回参数:**
```json
{
"result": 0,
"message": "",
"data": {}
}
```
#### 关注消息
URL: /app/record/focus
`post` `auth`
**请求参数:**
| **参数** | **名字** | **类型** | **约束** | **说明** |
| ----------- | ------------ | -------- | ---------- |---------- |
| type | 类型 | int | 必填 | 0->关注私聊消息1->关注群聊消息 |
| logId | 消息id | int64 | 必填| |
```json
{
"type": 0,
"logId": 0
}
```
**返回参数:**
```json
{
"result": 0,
"message": "",
"data": {}
}
```

758
doc/group.md Normal file
View File

@@ -0,0 +1,758 @@
# 以最新swagger为准
[http://172.16.101.107:8888/group/swagger/index.html](http://172.16.101.107:8888/group/swagger/index.html)
## 群服务
测试地址 172.16.101.107:8888/group/app
## 已完成接口
| 路由 | 说明 |
| ------------------------------------- | ---------- |
| `POST` URL: /app/create-group | 创建群 |
| `POST` URL:/app /invite-group-members | 邀请新群友 |
| `POST` URL: /app/group-info | 群信息 |
| `POST` URL: /app/group-list | 群列表 |
| `POST` URL: /app/group-member-list | 群成员列表 |
| `POST`URL:/app/group-member-info | 群成员信息 |
| `POST` URL:/app/group-remove | 踢群成员 |
| `POST` URL:/app/group-exit | 退出群 |
| `POST` URL:/app/group-disband | 解散群 |
### 创建群+
`POST` URL: /app/create-group
**Herder**
`FZM-SIGNATURE` = token
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| --------- | ----- | -------- | ---------- |
| name | false | string | 群名称 |
| avatar | false | string | 群头像 url |
| introduce | false | string | 群简介 |
| memberIds | false | []string | 新群员 id |
**请求参数示例**
```json
{
"name": "test-group-1",
"avatar": "",
"memberIds": [
"member-1", "member-2"
]
}
```
**返回参数(data)**
| 参数名 | 类型 | 说明 |
| ---------- | ------------ | ------------------------------------------------------------ |
| id | int | 群id |
| markId | string | 群短 id(暂时没用, 后面可以供搜索加群使用) |
| name | string | 群名称 |
| avatar | string | 群头像 url |
| introduce | string | 群简介 |
| owner | MemberInfo | 群主信息 |
| members | []MemberInfo | 群成员信息list |
| memberNum | int | 群总人数 |
| maximum | int | 群成员人数上限 |
| status | int | 群状态0=正常 1=封禁 2=解散 |
| createTime | int | 群创建时间 |
| joinType | int | 加群方式0=允许任何方式加群1=群成员邀请加群2=群主和管理员邀请加群 |
| muteType | int | 禁言, 0=所有人可以发言, 1=群主和管理员可以发言 |
**MemberInfo 参数类型**
| 参数名 | 类型 | 说明 |
| ---------- | ------ | ------------------------------------------ |
| memberId | string | 用户id |
| memberName | string | 用户群昵称 |
| memberType | int | 用户角色2=群主1=管理员0=群员3=退群 |
**返回参数示例:**
```json
{
"result": 0,
"message": "",
"data": {
"id": 127043701116506112,
"markId": "00351854",
"name": "test-group-1",
"avatar": "",
"introduce": "",
"owner": {
"memberId": "1FKxgaEh5fuSm7a35BfUnKYAmradowpiTR",
"memberName": "",
"memberType": 2
},
"members": [
{
"memberId": "member-1",
"memberName": "",
"memberType": 0
},
{
"memberId": "member-2",
"memberName": "",
"memberType": 0
}
],
"memberNum": 3,
"maximum": 200,
"status": 0,
"createTime": 1621230378707,
"joinType": 0,
"muteType": 0
}
}
```
### 邀请新群友+
`POST` URL: /app/invite-group-members
**Herder**
`FZM-SIGNATURE` = token
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------------ | ---- | -------- | ---------- |
| id | true | int64 | 群ID |
| newMemberIds | true | []string | 被邀请人ID |
**请求参数示例**
```json
{
"id": 127043701116506112,
"newMemberIds": [
"member-5",
"member-6"
]
}
```
**返回参数(data)**
| 参数名 | 类型 | 说明 |
| ---------- | ------------ | ----------------- |
| id | int | 群id |
| memberNum | int | 群总人数 |
| inviter | MemberInfo | 邀请人信息 |
| newMembers | []MemberInfo | 被邀请人信息 list |
**MemberInfo 参数类型**
| 参数名 | 类型 | 说明 |
| ---------- | ------ | ------------------------------------------ |
| memberId | string | 用户id |
| memberName | string | 用户群昵称 |
| memberType | int | 用户角色2=群主1=管理员0=群员3=退群 |
**返回参数示例:**
```json
{
"result": 0,
"message": "",
"data": {
"id": 125290793882619904,
"memberNum": 5,
"inviter": {
"memberId": "chenhongyu",
"memberName": "",
"memberType": 0
},
"newMembers": [
{
"memberId": "member-4",
"memberName": "",
"memberType": 2
}
]
}
}
```
### 群信息+
`POST` URL: /app/group-info
**Herder**
`FZM-SIGNATURE` = token
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ---- | ---- |
| id | true | int | 群ID |
**请求参数示例**
```json
{
"id":127082931377147904
}
```
**返回参数(data)**
| 参数名 | 类型 | 说明 |
| ---------- | ------------ | ------------------------------------------------------------ |
| id | int | 群id |
| markId | string | 群短 id(暂时没用, 后面可以供搜索加群使用) |
| name | string | 群名称 |
| avatar | string | 群头像 url |
| introduce | string | 群简介 |
| owner | MemberInfo | 群主信息 |
| person | MemberInfo | 本人信息 |
| members | []MemberInfo | 所有群成员信息list |
| memberNum | int | 群总人数 |
| maximum | int | 群成员人数上限 |
| status | int | 群状态0=正常 1=封禁 2=解散 |
| createTime | int | 群创建时间 |
| joinType | int | 加群方式0=允许任何方式加群1=群成员邀请加群2=群主和管理员邀请加群 |
| muteType | int | 禁言, 0=所有人可以发言, 1=群主和管理员可以发言 |
**MemberInfo 参数类型**
| 参数名 | 类型 | 说明 |
| ---------- | ------ | ------------------------------------------ |
| memberId | string | 用户id |
| memberName | string | 用户群昵称 |
| memberType | int | 用户角色0=群主1=管理员2=群员3=退群 |
**返回参数示例:**
```json
{
"result": 0,
"message": "",
"data": {
"id": 127043701116506112,
"markId": "",
"name": "",
"avatar": "",
"introduce": "",
"owner": {
"memberId": "1FKxgaEh5fuSm7a35BfUnKYAmradowpiTR",
"memberName": "",
"memberType": 2
},
"members": [
{
"memberId": "1FKxgaEh5fuSm7a35BfUnKYAmradowpiTR",
"memberName": "",
"memberType": 2
},
{
"memberId": "member-1",
"memberName": "",
"memberType": 0
},
{
"memberId": "member-2",
"memberName": "",
"memberType": 0
},
{
"memberId": "member-5",
"memberName": "",
"memberType": 0
},
{
"memberId": "member-6",
"memberName": "",
"memberType": 0
}
],
"memberNum": 5,
"maximum": 200,
"status": 0,
"createTime": 1621230378707,
"joinType": 0,
"muteType": 0
}
}
```
### 群列表+
`GET` | `POST` URL: /app/group-list
**Herder**
`FZM-SIGNATURE` = token
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ---- | ---- |
| | | | |
**请求参数示例**
```json
```
**返回参数(data)**
| 参数名 | 类型 | 说明 |
| ------ | ----------- | ----------- |
| groups | []GroupInfo | 群信息 list |
**GroupInfo**
| 参数名 | 类型 | 说明 |
| ---------- | ---------- | ------------------------------------------------------------ |
| id | int | 群id |
| markId | string | 群短 id(暂时没用, 后面可以供搜索加群使用) |
| name | string | 群名称 |
| avatar | string | 群头像 url |
| introduce | string | 群简介 |
| owner | MemberInfo | 群主信息 |
| memberNum | int | 群总人数 |
| maximum | int | 群成员人数上限 |
| status | int | 群状态0=正常 1=封禁 2=解散 |
| createTime | int | 群创建时间 |
| joinType | int | 加群方式0=允许任何方式加群1=群成员邀请加群2=群主和管理员邀请加群 |
| muteType | int | 禁言, 0=所有人可以发言, 1=群主和管理员可以发言 |
**返回参数示例:**
```json
{
"result": 0,
"message": "",
"data": {
"groups": [
{
"id": 127043701116506112,
"markId": "00351854",
"name": "test-group-1",
"avatar": "",
"introduce": "",
"owner": {
"memberId": "1FKxgaEh5fuSm7a35BfUnKYAmradowpiTR",
"memberName": "",
"memberType": 2
},
"memberNum": 5,
"maximum": 200,
"status": 0,
"createTime": 1621230378707,
"joinType": 0,
"muteType": 0
},
{
"id": 127067012814868480,
"markId": "62025607",
"name": "test-group-1",
"avatar": "",
"introduce": "",
"owner": {
"memberId": "1FKxgaEh5fuSm7a35BfUnKYAmradowpiTR",
"memberName": "",
"memberType": 2
},
"memberNum": 5,
"maximum": 200,
"status": 0,
"createTime": 1621235936650,
"joinType": 0,
"muteType": 0
},
{
"id": 127082931377147904,
"markId": "88951481",
"name": "test-group-1",
"avatar": "",
"introduce": "",
"owner": {
"memberId": "1FKxgaEh5fuSm7a35BfUnKYAmradowpiTR",
"memberName": "",
"memberType": 2
},
"memberNum": 11,
"maximum": 200,
"status": 0,
"createTime": 1621239731935,
"joinType": 0,
"muteType": 0
},
{
"id": 127100214044528640,
"markId": "43833969",
"name": "test-group-1",
"avatar": "",
"introduce": "",
"owner": {
"memberId": "1FKxgaEh5fuSm7a35BfUnKYAmradowpiTR",
"memberName": "",
"memberType": 2
},
"memberNum": 3,
"maximum": 200,
"status": 0,
"createTime": 1621243852439,
"joinType": 0,
"muteType": 0
},
{
"id": 127485592593240064,
"markId": "00865442",
"name": "test-group-1",
"avatar": "",
"introduce": "",
"owner": {
"memberId": "1FKxgaEh5fuSm7a35BfUnKYAmradowpiTR",
"memberName": "",
"memberType": 2
},
"memberNum": 9,
"maximum": 200,
"status": 0,
"createTime": 1621335733857,
"joinType": 0,
"muteType": 0
}
]
}
}
```
### 群成员列表+
`POST` URL: /app/group-member-list
**Herder**
`FZM-SIGNATURE` = token
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ----- | ---- |
| id | true | int64 | 群ID |
**请求参数示例**
```json
{
"id": 127082931377147904
}
```
**返回参数(data)**
| 参数名 | 类型 | 说明 |
| ------- | ------------ | --------------- |
| id | int | 群id |
| members | []MemberInfo | 全部群成员 list |
**MemberInfo 参数类型**
| 参数名 | 类型 | 说明 |
| ---------- | ------ | ------------------------------------------ |
| memberId | string | 用户id |
| memberName | string | 用户群昵称 |
| memberType | int | 用户角色0=群主1=管理员2=群员3=退群 |
**返回参数示例:**
```json
{
"result": 0,
"message": "",
"data": {
"id": 127043701116506112,
"members": [
{
"memberId": "1FKxgaEh5fuSm7a35BfUnKYAmradowpiTR",
"memberName": "",
"memberType": 2
},
{
"memberId": "member-1",
"memberName": "",
"memberType": 0
},
{
"memberId": "member-2",
"memberName": "",
"memberType": 0
},
{
"memberId": "member-5",
"memberName": "",
"memberType": 0
},
{
"memberId": "member-6",
"memberName": "",
"memberType": 0
}
]
}
}
```
### 群成员信息+
URL: /app/group-member-info
`GET`
**Herder**
`FZM-SIGNATURE` = token
**请求参数:**
| 参数名 | 必选 | 类型 | 说明 |
| -------- | ---- | ------ | --------- |
| id | true | int | 群ID |
| memberId | true | string | 群成员 ID |
**请求参数示例**
```json
{
"id": 125290793882619904,
"memberId": "123"
}
```
**返回参数(data)**
| 参数名 | 类型 | 说明 |
| ---------- | ---------- | ------ |
| id | int | 群id |
| newMembers | MemberInfo | 群成员 |
**MemberInfo 参数类型**
| 参数名 | 类型 | 说明 |
| ---------- | ------ | ------------------------------------------ |
| memberId | string | 用户id |
| memberName | string | 用户群昵称 |
| memberType | int | 用户角色0=群主1=管理员2=群员3=退群 |
**返回参数示例:**
```json
{
"result": 0,
"message": "",
"data": {
"memberId": "member-1",
"memberName": "",
"memberType": 0
}
}
```
### 踢人+
`POST` URL: /app/group-remove
### 退群+
`POST` URL:/app/group-exit
### 解散群
URL: /disband-group
`PUT`
### 更新群头像
URL: /update-group-avatar
`PUT`
### 更新群名称
URL: /update-group-name
`PUT`
### 更新个人群昵称(自己改自己的, 群主和管理员改所有人)
URL: /update-group-member-name
`PUT`
### 更新群简介
URL: /update-group-introduce
`PUT`
### 更新加群权限设置
URL: /update-group-join-type
`PUT`
### 更新群成员类型
URL: /update-group-member-type
`PUT`
### 转移群给群成员
URL: /update-group-owner
`PUT`
### 更新群状态
URL: /update-group-status
`PUT`
### 更新群成员上限
URL: /update-group-maximum
`PUT`

60
doc/ossApi.md Normal file
View File

@@ -0,0 +1,60 @@
# 对象存储服务
### 获取token
URL: /oss/get-token
`get`|`post`
**请求参数:**
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
"RequestId": "E7A855E3-0A3B-479A-BF22-416A2D5D27B1",
"Credentials": {
"AccessKeySecret": "BxbYXWGjKrVT4qSzi6ZoLtD1qjZLAfNaULreCMb7EsYm",
"Expiration": "2021-02-24T07:48:21Z",
"AccessKeyId": "STS.NUrf45xSfTX7EkJxoo3G7C9Cm",
"SecurityToken": "CAIS8wF1q6Ft5B2yfSjIr5bHLY6BlYxH45rcR037nG86P8gbrPzojzz2IHhNfXlqBeket/g1n2hY5/oelqN1TIVATEiBZNNotm32E/M0Jdivgde8yJBZor/HcDHhJnyW9cvWZPqDP7G5U/yxalfCuzZuyL/hD1uLVECkNpv74vwOLK5gPG+CYCFBGc1dKyZ7tcYeLgGxD/u2NQPwiWeiZygB+CgE0DkhtfTvkp3Ht0OP1wOhk9V4/dqhfsKWCOB3J4p6XtuP2+h7S7HMyiY46WIRrP4v3PYYoG+e4ovGWwkAv0mcUezT6NhmKEpwfrAq7DDiSR5ZYpcagAEcYDFBCF3QY2aQ8Jcs9L4utLb7Z6JdPvyG/zF7l7P1Br0MX0ad6sgWEGWTvTuxemRtmKSWxMEivRzx+6aT515Y7OQdFyX1uLrR1YOq9R2tjysh2d54wu09qr7BhPavADSFHj8fCrZugoul6vHtoslRgL+KSpuI3buhZ08VDxh5rg=="
},
"AssumedRoleUser": {
"AssumedRoleId": "301182410142308944:normal-app",
"Arn": "acs:ram::1264888835193631:role/normal-app/normal-app"
}
}
}
```
### 获取华为云token
URL: /oss/get-huaweiyun-token
`get`|`post`
**请求参数:**
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
"RequestId": "",
"Credentials": {
"AccessKeySecret": "BxbYXWGjKrVT4qSzi6ZoLtD1qjZLAfNaULreCMb7EsYm",
"Expiration": "2021-02-24T07:48:21Z",
"AccessKeyId": "NUrf45xSfTX7EkJxoo3G7C9Cm",
"SecurityToken": "CAIS8wF1q6Ft5B2yfSjIr5bHLY6BlYxH45rcR037nG86P8gbrPzojzz2IHhNfXlqBeket/g1n2hY5/oelqN1TIVATEiBZNNotm32E/M0Jdivgde8yJBZor/HcDHhJnyW9cvWZPqDP7G5U/yxalfCuzZuyL/hD1uLVECkNpv74vwOLK5gPG+CYCFBGc1dKyZ7tcYeLgGxD/u2NQPwiWeiZygB+CgE0DkhtfTvkp3Ht0OP1wOhk9V4/dqhfsKWCOB3J4p6XtuP2+h7S7HMyiY46WIRrP4v3PYYoG+e4ovGWwkAv0mcUezT6NhmKEpwfrAq7DDiSR5ZYpcagAEcYDFBCF3QY2aQ8Jcs9L4utLb7Z6JdPvyG/zF7l7P1Br0MX0ad6sgWEGWTvTuxemRtmKSWxMEivRzx+6aT515Y7OQdFyX1uLrR1YOq9R2tjysh2d54wu09qr7BhPavADSFHj8fCrZugoul6vHtoslRgL+KSpuI3buhZ08VDxh5rg=="
},
"AssumedRoleUser": {
"AssumedRoleId": "",
"Arn": ""
}
}
}
```

248
doc/proto.md Normal file
View File

@@ -0,0 +1,248 @@
# 应用方消息子协议
**协议格式:**
| 参数名 | 必选 | 类型 | 说明 |
| :----- | :--- | :--- | :--- |
|eventType | true | int32 | 事件类型 |
|body | true | byte[] | 消息体 |
## 事件类型
| 类型 | 说明 |
| :----- | :--- |
| 0 | 普通消息 |
| 1 | 消息回复 |
| 2 | 通知信令 |
## 普通消息
**body描述encode:proto序列化**
| 参数名 | 必选 | 类型 | 说明 |
| :----- | :--- | :--- | :--- |
|channelType | true | int32 | 消息通道 |
|logId | true | int64 | 消息id |
|msgId | true | string | 客户端序列 |
|from | true | string | 发送者 |
|target | true | string | 接收者 |
|msgType | true | int32 | 消息类型 |
|msg | true | binary | 消息体 |
|datetime | true | uint64 | 事件戳ms |
|source | true | Source | 来源,详见如下 |
Source结构
```
message Source {
int32 channelType=1;
SourceUser from=2;
SourceUser target=3;
}
message SourceUser {
string id=1;
string name=2;
}
```
### 消息通道
| 类型 | 说明 |
| :----- | :--- |
| 0 | 单聊 |
| 1 | 群聊 |
### 消息类型
| 类型 | 说明 |
| :----- | :--- |
| 0 | 系统消息 |
| 1 | 文本消息 |
| 2 | 音频消息 |
| 3 | 图片消息 |
| 4 | 视频消息 |
| 5 | 文件消息 |
| 6 | 卡片消息 |
| 7 | 通知消息 |
| 8 | 合并转发 |
注意msg 必须可以反序列化为msgType相对应的结构体
具体协议参考 `pkg/proto/api.proto`
```
message TextMsg {
string content = 1;
repeated string mentions = 2;
}
message AudioMsg {
string mediaUrl = 1;
int32 time = 2;
}
message ImageMsg {
string mediaUrl = 1;
int32 height = 2;
int32 width = 3;
}
message VideoMsg {
string mediaUrl = 1;
int32 time = 2;
int32 height = 3;
int32 width = 4;
}
message FileMsg {
string mediaUrl = 1;
string name = 2;
string md5 = 3;
int64 size = 4;
}
message CardMsg {
string bank = 1;
string name = 2;
string account = 3;
}
message NoticeMsg {
AlertType type = 1;
bytes body = 2;
}
message ForwardMsg {
repeated ForwardItem items = 1;
}
message ForwardItem {
string avatar=1;
string name=2;
int32 msgType=3;
bytes msg=4;
uint64 datetime=5;
}
```
#### 通知消息
##### 通知类型
| 类型 | 说明 |
| :----- | :--- |
| 0 | 修改群名 |
| 1 | 加群 |
| 2 | 退群 |
| 3 | 踢群 |
| 4 | 删群 |
| 5 | 群禁言模式更改 |
| 6 | 更改禁言名单 |
注意body必须可以反序列化为AlertType相对应的结构体
具体协议参考 `pkg/proto/api.proto`
```
message AlertUpdateGroupName {
int64 group = 1;
string operator = 2;
string name = 3;
}
message AlertSignInGroup {
int64 group = 1;
string inviter = 2;
repeated string members = 3;
}
message AlertSignOutGroup {
int64 group = 1;
string operator = 2;
}
message AlertKickOutGroup {
int64 group = 1;
string operator = 2;
repeated string members = 3;
}
message AlertDeleteGroup {
int64 group = 1;
string operator = 2;
}
message AlertUpdateGroupMuted {
int64 group = 1;
string operator = 2;
MuteType type = 3;
}
message AlertUpdateGroupMemberMutedTime {
int64 group = 1;
string operator = 2;
repeated string members = 3;
}
```
### Receive_Reply协议格式
| 参数名 | 必选 | 类型 | 说明 |
| :----- | :--- | :--- | :--- |
|eventType | true | int32 | 事件类型 |
|body | true | byte[] | 消息体 |
当eventType为0时body必须可以被反序列化为CommonMsgAck
```
message CommonMsgAck {
int64 logId = 2;
uint64 datetime = 8;
}
```
## 通知信令
**body描述encode:proto序列化**
| 参数名 | 必选 | 类型 | 说明 |
| :----- | :--- | :--- | :--- |
|action | true | ActionType | 信令类型 |
|body | true | binary | 消息体 |
```
//alert msg define
message NotifyMsg {
ActionType action = 1;
bytes body = 2;
}
```
### 信令类型
| 类型 | 说明 |
| :----- | :--- |
| 0 | 送达 |
| 1 | 加群 |
| 2 | 退群 |
| 3 | 删群 |
| 20 | 更新加群权限 |
| 21 | 更新群加好友权限 |
| 22 | 更新群禁言类型 |
| 23 | 更新群成员 |
| 24 | 更新禁言列表 |
| 25 | 更新群名 |
| 26 | 更新群头像 |
注意body必须可反序列化为ActionType对应的结构体。
具体参考 `pkg/proto/api.proto`
```
message ActionReceived {
repeated uint64 logs = 1;
}
message ActionSignInGroup {
repeated string uid = 1;
int64 group = 2;
uint64 time = 3;
}
message ActionSignOutGroup {
repeated string uid = 1;
int64 group = 2;
uint64 time = 3;
}
message ActionDeleteGroup {
int64 group = 1;
uint64 time = 2;
}
```

33
doc/recordApi.md Normal file
View File

@@ -0,0 +1,33 @@
# 找回服务
### 发送消息
URL: /record/push2
`post`
**Request Headers**
- Content-Type: multipart/form-data
**Body:**`form-data`
| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ------ |
| name | true | string | 区号 |
| filename | true | string | 手机号 |
**请求示例**
```
请求头:
Content-Type=multipart/form-data
请求参数:
name="message"
filename="message"
```
**返回参数:**
```json
{
"result": 0,
"message": "操作成功",
"data": {
}
}
```

11
doc/root.md Normal file
View File

@@ -0,0 +1,11 @@
# 总览
## 约定
- 数据类型`datetime`:时间戳,毫秒(ms)
- 所有 `http` 接口请求都是 `POST` 方法, 数据请求和返回结果 都是 `JSON` 格式
- Header: 接口里需要的
- `FZM-SIGNATURE`(地址):格式[<signature>#<message>#<publicKey>]; signature格式[<datetime>*<random string>]
- `FZM-DEVICE`(设备类型):枚举 iOS、Android、PC
- `FZM-UUID`设备mac
- `FZM-DEVICE-NAME`(设备名称)
- `FZM-VERSION` (应用版本号)
- 返回结果的 `result``0` 代表成功,`data` 里面是具体数据,`result` 不为 `0` 代表失败,`message` 为失败信息