文章目录
- 脚本接口
- 历史修改记录
- 1 更新root开关状态
- 2 获取root开关状态
- 1 宿主机注册
- 2 宿主机重启
- 3 虚拟机重启
- 4 虚拟机删除
- 5 虚拟机创建
- 6 虚拟机注册的所有数据同步
- 7 设备映射的ip和端口信息数据同步批量
- 8 宿主机列表信息
- 9 虚拟化详情列表信息(宿主机下)
- 10 宿主机刀片/板卡下拉列表
- 1 站点列表
- 2 RBD迁移记录
- 3 获取排队数量
- 4 用户确认排队弹窗 提供该任务预计的排队所需要的时间
- 5用户确认排队 使用该接口记录用户排队成功
- 6退出排队
- 7获取排队当前序列号
- 1 迁移管理列表
- 2 站点策略列表查询信息
- 3 (站点)RBD设置并行数 (需要环境验证python端的RBD接口)
- 4(站点)更新策略开关
- 5(迁移)RBD重试(需要环境验证python端的RBD接口)
- 6(迁移)RBD取消(需要环境验证python端的RBD接口)
- 7(迁移)RBD迁移详情(需要环境验证python端的RBD接口。。。)
- 8(迁移)删除RBD迁移记录 注意这个id不一样(请查看本页面接口①迁移列表)
历史修改记录
| 日期 | 版本 | 描述 | 作者 |
设备管理增加检索字段
-
**简要描述:**设备管理界面数据搜索增加 云手机名称 字段(云手机管理平台-设备设置-设备管理)
-
详情描述:根据云手机名称查询出安卓卡详情数据,根据云手机名称的精确查询
-
表t_user_card与t_card_info的关联查询
云手机详情信息表(t_user_card) 索引字段3个 sn,my_order_num,room
安卓卡详情信息表(t_card_info) 索引字段2个 sn,mac
1.用2个表的sn号关联,条件为#{云手机名称},查询出安卓卡详情信息表(t_card_info)的数据
SELECT * FROM t_card_info t1 JOIN t_user_card t2 ON t1.sn=t2.sn WHERE t2.disk_name=‘Zd7MWRWQ’
2.在云手机详情信息表(t_user_card) 字段disk_name建立索引
ALTER TABLE t_user_card ADD INDEX disk_name(disk_name)*SQL
SELECT
ci.id,
androidcard_ip,
ci.androidcard_port,
ci.blade,
ci.card,
ci.bmc_ip,
ci.sn,
ci.mac,
ci.phone_manufacturer,
ci.model,
ci.iemi,
ci.size,
uv.username,
uv.phone_number user_phone,
run_status,
ci.extranet_ip,
ci.extranet_port,
ci.network_status,
ci.device_status,
ci.over_status,
uc.disk_name
FROM
t_card_info ci
LEFT JOIN t_user_card uc ON ci.id = uc.card_id
LEFT JOIN t_user_vital uv ON uc.username = uv.username
WHERE
ci.sn LIKE CONCAT(’%’, ‘oS3hds7Z’, ‘%’)
OR uc.disk_name = ‘oS3hds7Z’
云手机名称:用户购买云手机并点击进入该云手机后 的云手机名称**入参
http://.31.20/api/wsi/v1/card/info//someDetails?str=oS3hds7Z
**出参
{
“status”: 0,
“msg”: “获取成功”,
“data”: {
“id”: 221,
“listId”: null,
“androidcardIp”: “30.30.30.7”,
“androidcardPort”: “9100”,
“highAddress”: “sz.ns”,
“room”: “A1”,
“frame”: “B1”,
“host”: “C1”,
“blade”: “2”,
“card”: “2”,
“status”: 0,
“bmcIp”: “30.30.30.250”,
“sn”: “RK3930C2301900007”,
“mac”: “70B3D50DD006”,
“phoneManufacturer”: “vclusters”,
“model”: “VC_AN_3399”,
“iemi”: “”,
“size”: “720 x 1280\t320”,
“username”: “qwir51594001241”,
“userPhone”: “18718474901”,
“runStatus”: 1,
“networkStatus”: 0,
“extranetIp”: “14.215.128.96”,
“extranetPort”: “2007”,
“gameStatus”: 0,
“overStatus”: 0,
“deviceStatus”: 0
}
}
文章目录
- 脚本接口
- 历史修改记录
- 1 更新root开关状态
- 2 获取root开关状态
- 1 宿主机注册
- 2 宿主机重启
- 3 虚拟机重启
- 4 虚拟机删除
- 5 虚拟机创建
- 6 虚拟机注册的所有数据同步
- 7 设备映射的ip和端口信息数据同步批量
- 8 宿主机列表信息
- 9 虚拟化详情列表信息(宿主机下)
- 10 宿主机刀片/板卡下拉列表
- 1 站点列表
- 2 RBD迁移记录
- 3 获取排队数量
- 4 用户确认排队弹窗 提供该任务预计的排队所需要的时间
- 5用户确认排队 使用该接口记录用户排队成功
- 6退出排队
- 7获取排队当前序列号
- 1 迁移管理列表
- 2 站点策略列表查询信息
- 3 (站点)RBD设置并行数 (需要环境验证python端的RBD接口)
- 4(站点)更新策略开关
- 5(迁移)RBD重试(需要环境验证python端的RBD接口)
- 6(迁移)RBD取消(需要环境验证python端的RBD接口)
- 7(迁移)RBD迁移详情(需要环境验证python端的RBD接口。。。)
- 8(迁移)删除RBD迁移记录 注意这个id不一样(请查看本页面接口①迁移列表)
历史修改记录
| 日期 | 版本 | 描述 | 作者 |
增加运维告警
-
**简要描述:**增加安卓卡网络状态告警,增加客户端接口请求超时告警
-
安卓卡详情信息表(t_card_info)
-
人员告警关联表(t_alarm_user_ref)
-
告警设置表(t_alarm_setting)
-
告警通知人员表(t_alarm_user_info)
-
告警消息记录表(t_alarm_info)
-
详情描述:每小时执行定时任务 获取网络状态/超时状态 告警给指定人员 用作监控
-
** 一、安卓卡网络状态告警**
CardKeepalivedController
getKeepalivedFromSn
getKeepalivedBySn
定义boolean状态networkStatus
1.在安卓卡心跳检测的网络异常处调用统一告警接口alarmEmail -
二、 客户端6个接口的请求超时告警
**clienUserLogin:客户端用户登录接口 ClientLoginController
/api/user/v1/client/disk/info 云手机列表接口 DiskInfoController
监听支付接口4个
/v1/wxpay/app/spend:微信APP支付接口
/v1/wxpay/pc/spend:微信APP支付接口
/v1/alipay/app/spend:支付宝APP支付接口
/v1/alipay/pc/spend:支付宝PC支付接口
/api/storage/v1/cardStatus/getRbd:进入云手机接口 CardStatusController
/get/evant:进入邀请活动接口 CouponInfoClientController
(暂时不做)UserMsgController/info:好友发送接收消息接口
**1.使用AOP代理获取6个指定接口的方法执行时间
2.从redis中获取管理平台告警设置中的阈值时间
3.接口方法执行时间>阈值时间,调用统一告警接口alarmEmail
4.管理平台点击修改后会将redis清空,再读取数据库告警设置表存入redis -
三、 解决告警信息并发问题
1.添加字段 ALTER TABLE t_alarm_info ADD alarm_hashcode INT(30) NOT NULL;2.拼接表t_alarm_info字段alarm_host+create_time的字符串拿到getHashcode()存入数据库表字段alarm_hashcode
3.给告警信息表t_alarm_info的2个字段alarm_hashcode,create_time建立复合唯一索引,解决并发造成的数据重复
ALTER TABLE t_alarm_info ADD UNIQUE INDEX COMPOUND_UNIQUE_INDEX(alarm_host,alarm_hashcode); -
四、告警测试正常的截图(超时原因/网络连接延迟等待/代码嵌套多复杂度太高/并发大)
小程序的接口相关
文章目录
- 脚本接口
- 历史修改记录
- 1 更新root开关状态
- 2 获取root开关状态
- 1 宿主机注册
- 2 宿主机重启
- 3 虚拟机重启
- 4 虚拟机删除
- 5 虚拟机创建
- 6 虚拟机注册的所有数据同步
- 7 设备映射的ip和端口信息数据同步批量
- 8 宿主机列表信息
- 9 虚拟化详情列表信息(宿主机下)
- 10 宿主机刀片/板卡下拉列表
- 1 站点列表
- 2 RBD迁移记录
- 3 获取排队数量
- 4 用户确认排队弹窗 提供该任务预计的排队所需要的时间
- 5用户确认排队 使用该接口记录用户排队成功
- 6退出排队
- 7获取排队当前序列号
- 1 迁移管理列表
- 2 站点策略列表查询信息
- 3 (站点)RBD设置并行数 (需要环境验证python端的RBD接口)
- 4(站点)更新策略开关
- 5(迁移)RBD重试(需要环境验证python端的RBD接口)
- 6(迁移)RBD取消(需要环境验证python端的RBD接口)
- 7(迁移)RBD迁移详情(需要环境验证python端的RBD接口。。。)
- 8(迁移)删除RBD迁移记录 注意这个id不一样(请查看本页面接口①迁移列表)
历史修改记录
日期 | 版本 | 描述 | 作者 |
---|
1 微信的购买/续费云手机接口
-
1.后台调用微信支付统一下单接口,获取微信支付信息成功
1.1 更新订单支付支付类型、支付状态 t_user_purchase_record
1.2 支付状态设置进redis,发送延迟队列(5分钟未消费关闭该订单)
2.返回数据给前端,前端通过得到的数据调用微信接口
3.小程序中唤起微信的支付页面
4.成功支付微信将回调notifyUrl接口
需要携带Token
- 请求类型:POST
- **简要描述:**小程序唤起微信支付
- 请求URL:
/api/user/v1/wxpay/applet/spend
- 请求阐述示例:
http://服务器IP/api/user/v1/wxpay/applet/spend
- 请求参数示例:
{
"myOrderNum": "mdOXy1565949618SZX39925444985"
"code":"登录临时凭证"
}
- 请求参数说明:
键 | 类型 | 描述 |
---|---|---|
myOrderNum | String | 订单号 |
code | String | 登录临时凭证 |
- 返回数据示例:
{
"status": 0,
"msg": "获取微信支付信息成功",
"data": {
"nonceStr": "Ae81uUZTYbMZtt6L",
"appId": "wx017ed8921f249e1a",
"sign": "5F8ABC08CD62205DB8AD00E2175749BC",
"tradeTpe": "APPLET",
"returnMsg": "OK",
"resultCode": "SUCCESS",
"mchId": "1544966281",
"returnCode": "return_code",
"prepayId": "prepay_id"
}
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、1:失败 |
msg | String | 描述 |
2 获取套餐列表信息接口
需要携带Token
- 请求类型:GET
- **简要描述:**云手机套餐列表信息
- 请求URL:
/api/user/v2/meal/info
- 请求阐述示例:
http://服务器IP/api/user/v2/meal/info?phoneType=VIP
- 请求参数示例:
{"phoneType":"VIP"}
- 请求参数说明:
键 | 必选 | 类型 | 说明 |
---|---|---|---|
phoneType | True | String | 云手机类型(星动VIP/星耀SVIP) |
- 返回数据示例:
{
"status": 0,
"msg": "获取成功",
"data": {
"list": [{
"id": 1,
"menu": "1天",
"originalPrice": "",
"actualPrice": 1.0,
"moveStatus": 1,
"preferentialContent": "",
"customStatement": "无限购买",
"giveStarNum": 0,
"starNum": 10,
"day": 1
}]
}
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、1:失败 |
msg | String | 描述 |
id | int | 套餐ID号,创建订单号需要用到 |
menu | String | 套餐时间描述 |
originalPrice | String | 钱套餐原价 (无优惠时,显示为空字符串,客户端只需要拿实价) |
actualPrice | float | 钱套餐实价 (有优惠时,实价就为打折后的价格) |
preferentialContent | String | 优惠内容信息描述 (无优惠的时候显示为空字符串) |
moveStatus | int | 数据排序参考值 |
customStatement | String | 套餐描述 |
giveStarNum | int | 赠送星币。无赠送返回0 |
starNum | int | 星币数量 |
day | int | 有效时间天数 |
3 统一创建订单接口(立即购买)
需要携带Token
- 请求类型:POST
- **简要描述:**星币/微信/支付宝的统一订单创建接口
- 请求URL:
/api/user/v1/order/create
- 请求阐述示例:
http://服务器IP/api/user/v1/order/create
- 请求参数示例:
# 购买云手机(钱包套餐规则购买) (批量购买加一个入参参数 quantity云手机数量)
{
"buyType": 1,
"id": 1,
"phoneType": "VIP",
"mealType": 0,
"couponId": 0,
"userCardId": 0,
"quantity":3
}
# 续费云手机(钱包套餐规则续费)续费的批购买暂时不做
{
"buyType": 2,
"id": 1,
"phoneType": "VIP",
"mealType": 0,
"sn": null,
"diskName": "WJUKNP85",
"couponId": 0,
"userCardId": 265
}
- 请求参数说明:
键 | 类型 | 描述 |
---|---|---|
buyType | int | 购买类型,0:钱包充值、1:购买云手机、2:续费 |
id | String | 套餐的ID |
phoneType | string | 购买套餐类型,VIP/SVIP |
mealType | int | 套餐类型,0:钱包套餐规则1:星币兑换规则(现在的版本只有钱包套餐,传0即可) |
couponId | int | 获取优惠券信息返回的id值,即选取使用优惠券的id值(未勾选传0) |
userCardId | int | 设备列表返回的id值 |
rbdType | int | 是否勾选星盘续费 0 未勾选 1已勾选 |
sn | String | 续费云手机时候需要携带sn号码 默认为null |
quantity | int | 批量购买时的数量 |
- 返回数据示例:
{
"status": 0,
"msg": "创建成功",
"data": {
"diskName": "t8VfSm,nfKKQe,hbMRSH",
"bTime": "",
"quantity": 3,
"priceCoins": "300",
"exceptTime": "2020/12/15 10:38:44",
"description": "1天套餐",
"giveStarNum": 0,
"myOrderNum": "RFhEo1604384832SZX60572912683",
"bSize": "",
"totalAmount": "0.00",
"rbdMoney": "",
"price": "30.0",
"originalPayMoney": "30.0",
"buyVipType": "VIP",
"totalCoins": "9319",
"ctime": "2020-12-14T02:38:44.000+0000",
"cloudPhoneMoney": "30.0",
"preferentialContent": ""
}
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、1:失败 |
msg | String | 描述 |
diskName | String | 设备名称(批量以字符串加逗号拼接所有云手机名称,前端可用…适配多台云手机名称) |
priceCoins | String | 兑换星币所需星币数量 |
exceptTime | String | 有效时间 |
description | String | 购买天数 |
giveStarNum | int | 赠送星币数 |
myOrderNum | String | 订单号 |
totalAmount | String | 我的钱包余额 |
price | String | 购买套餐所需钱 |
originalPayMoney | String | 购买套餐原价 |
buyVipType | String | 购买套餐类型(VIP/SVIP) |
totalCoins | String | 我的星币数量余额 |
ctime | String | 订单创建时间 |
cloudPhoneMoney | String | 云手机价格 |
4 星币支付的购买/续费云手机接口(确定支付)
需要携带Token
- 请求类型:POST
- **简要描述:**星币支付接口调用
- 请求URL:
/api/user/v1/starcoin/spend
- 请求阐述示例:
http://服务器IP/api/user/v2/starcoin/spend
- 请求参数示例:
# 购买云手机
{
"myOrderNum": "订单号"
}
# 续费手机
{
"myOrderNum": "订单号"
}
- 请求参数说明:
键 | 类型 | 描述 |
---|---|---|
myOrderNum | String | 商户订单号* |
id | String | 套餐的ID,使用自定义充值的情况下不携带ID |
buyType | int | 购买类型,0:钱包充值、1:购买云手机、2:续费 |
phoneType | string | 购买套餐类型,VIP/SVIP |
mealType | int | 套餐类型,0:钱包套餐规则1:星币兑换规则 |
sn | String | 设备SN号码,只有续费的时候才传,购买和充值一定不要传 |
- 返回数据示例:
{
"status": "0",
"msg": "星币支付成功",
"data": ""
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、1:失败 |
5 续费星盘资格和金额接口
需要携带Token
- 请求类型:GET
- **简要描述:**客户端获取续费星盘资格和金额
- 请求URL:
/api/user/v1/client/renewDiskRule?diskName=云手机名称
- 请求阐述示例:
http://服务器IP/api/user/v1/client/renewDiskRule?diskName=云手机名称
- 请求参数示例:
{
"diskName":"云手机名称"
}
- 请求参数说明:
键 | 类型 | 描述 |
---|---|---|
diskName | String | 云手机名称 |
- 返回数据示例:
{
"status": 0,
"msg": "获取成功",
"data": {
"rbdMoney": 1.1,
"starNum": 11,
"rbdType": 0,
"exceptTime": "2020/12/12",
}
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
rbdMoney | float | 续费星盘金额 |
starNum | int | 续费星盘的星币数量 |
rbdType | int | 是否需要续费星盘 0 不需要续费星盘 1 需要续费星盘 |
exceptTime | String | 未进行勾选,返回扩容星盘到期时间 |
6 查看订单支付结果
需要携带Token
- 请求类型:GET
- **简要描述:**客户端用户获取支付结果
- 请求URL:
/api/user/v1/order/result
- 请求阐述示例:
http://服务器IP/api/user/v1/order/result?myOrderNum=mdOXy1565949618SZX86757963747
- 请求参数说明:
键 | 类型 | 说明 |
---|---|---|
myOrderNum | String | 订单号 |
- 返回数据示例:
{
"status": 0,
"msg": "获取成功",
"data": {
"payResult": 1,
"time": "2019-08-28 11:43:20",
"payType": 0,
"StarCoin": "2",
"price": 10
}
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、1:失败 |
msg | str | 描述 |
payResult | int | 支付结果,1:支付成功、0:支付失败 |
payType | int | 支付类型,0:余额,1:支付宝,2:微信,3:银联,4:星币 |
StarCoin | String | 可以领取的星币数量(显示0这表示没有可以领取的星币,界面建议不要显示领取新币的按钮) |
price | String | 价格(根据支付类型判断是星币还是钱) |
time | String | 时间 |
7 购买/续费 订单记录详情接口
需要携带Token
-
请求类型:GET
-
**简要描述:**获取客户端订单信息
-
请求URL:
/api/user/v1/order/info
-
请求阐述示例:
http://服务器IP/api/user/v1/order/info?classify=all&page=1&client=applet
-
请求参数说明:
键 | 必选 | 类型 | 说明 |
---|---|---|---|
classify | True | str | 订单类型,all:全部,finish:完成,unfinish:未完成,overdue:过期 |
page | True | int | 页码 |
client | True | Str | 客户端类型,app/pc/applet |
- 返回数据示例:
# applet/app
{
"status": 0,
"msg": "查询成功",
"data": {
"pageNum": 1,
"pageSize": 6,
"size": 6,
"startRow": 0,
"endRow": 5,
"total": 6,
"pages": 1,
"list": [
{
"id": 15,
"username": "WRxyy1567750367",
"payType": -1,
"totalAmount": "60",
"description": "双子星云手机30天VIP",
"buyType": 1,
"finishPay": 2,
"used": false,
"myOrderNum": "WRxyy1567750367SZX23835752974",
"sn": "",
"starCoin": "30",
"buyVipType": "VIP",
"sellerId": "",
"buyTime": 43200,
"finishTime": "",
"validTime": 0,
"exceptTime": "2019-09-06 15:06:15",
"ctime": "2019-09-06 14:56:15"
}
],
"prePage": 0,
"nextPage": 0,
"isFirstPage": true,
"isLastPage": true,
"hasPreviousPage": false,
"hasNextPage": false,
"navigatePages": 8,
"navigatepageNums": [
1
],
"navigateFirstPage": 1,
"navigateLastPage": 1,
"firstPage": 1,
"lastPage": 1
}
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、1:失败 |
msg | str | 描述 |
username | str | 用户名,唯一识别 |
payType | int | 消费方式,0:余额,1:支付宝,2:微信,3:银联,4:星币 |
totalAmount | str | 支付金钱 |
description | str | 商品描述 |
buyType | int | 购买类型,0:充值,1:购买新手机,2:续费 |
finishPay | int | 订单是否完成,0:未完成,1:完成,2:失效 |
used | str | |
myOrderNum | str | 订单号 |
sn | str | 板卡SN号 |
starCoin | str | 需要消费星币数量 |
buyVipType | str | VIP类型 |
sellerId | str | 客户支付宝ID |
buyTime | int | 购买时长 |
finishTime | str | 完成订单时间 |
validTime | int | 订单有效时间(秒) |
exceptTime | str | 订单具体过期时间 |
ctime | str | 创建订单时间 |
pageSize | int | 一页有多少条数据 |
total | int | 总共的数据条数 |
8 更新安卓卡超分状态(进入云手机)
需要携带Token
- 请求类型:POST
- **简要描述:**连接进入云手机前,访问该接口,进行安卓卡的挂载
- 请求URL: ``/api/storage/v1/cardStatus/getRbd`
- 请求阐述示例:
http://服务器IP/api/storage/v1/cardStatus/getRbd
- 请求参数示例:
{
"userCardId":"安卓卡id"
"deviceStatus":1
}
- 请求参数说明:
键 | 必选 | 类型 | 说明 |
---|---|---|---|
userCardId | True | int | 安卓卡id |
deviceStatus | True | int | 1(安卓卡挂载) |
- 返回数据示例:
{
"status": 0,
"msg": "设置成功"
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 状态码(0为成功,1为失败) |
msg | string | 提示信息(代表通知安卓卡挂载成功) |
sn | string | sn号 |
exIp | string | sn外网ip |
exPort | string | sn外网端口 |
roomExtranetIp | string | 机房外网ip |
9 云手机列表信息
需要携带Token
- 请求类型:GET
- **简要描述:**用于用户获取名下的所有安卓卡的设备信息
- 请求URL:
/api/user/v1/client/disk/info
- 请求阐述示例:
http://服务器IP/api/user/v1/client/disk/info
- 返回数据示例:
{
"status": 0,
"msg": "获取成功",
"data": {
"data": {
"diskInfo": [
{
"id": 271,
"username": "h5kZx1604371227",
"exIp": "",
"exPort": "",
"sn": "",
"buyVipType": "",
"diskName": "测试二",
"validTime": 10080,
"myOrderNum": "h5kZx1604371227SZX74773572776",
"overdue": 0,
"exceptTime": "2020-11-17 12:35:48",
"ctime": "2020-11-09 12:35:48",
"monIp": 14.215.128.96,
"vcfsKey": AQDHzI5eH2vKMxAA8QIw9fB4plzGuzbhcFVqNg==,
"rbdname": 00b06636e7a8009,
"pname": rbd,
"phoneAuthStatus": 0,
"buyType":vip,
"room":A1
"androidcardIp":""
"androidcardPort":""
"overStatus": 0
}
]
}
}
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
id | int | id值 |
username | str | 用户名 |
exIp | str | 安卓卡外网IP |
exPort | int | 安卓卡外网端口 |
sn | str | 安卓卡sn号 |
buyVipType | str | 购买类型(目前为空,默认是VIP) |
diskName | int | 设备名称 |
validTime | int | 到期时间 |
myOrderNum | str | 订单号 |
overdue | str | 是否到期 |
exceptTime | str | 到期时间 |
readme | str | 设备到期提示语 |
ctime | str | 购买时间 |
monIp | str | 超分MONiP |
vcfsKey | int | 超分密钥 |
rbdname | str | 超分RBD名称 |
pname | int | 超分pname名称 |
phoneAuthStatus | str | 0 未授权,1已授权 |
authPhone | str | 0自身购买的云手机 1获取得到的云手机 |
10 用户当前星币数量
需要携带Token
- 请求类型:GET
- **简要描述:**获取用户当前星币数量
- 请求URL:
/api/user/v2/client/left/info
- 请求阐述示例:
http://服务器IP/api/user/v1/client/left/info
- 返回数据示例:
{
"status": 0,
"msg": "获取成功",
"data": {
"money": 0.0,
"starCoin": "4955",
"notifyStatus": true,
"surfaceName": "19911111111",
"couponNum": 0
}
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 状态码(0为成功,1为失败) |
msg | string | 描述信息 |
money | int | 账户余额 |
starCoin | string | 星币余额 |
notifyStatus | boolean | 获取公告是否有更新 |
surfaceName | string | 用户自定义名称, 若是为空则显示手机号码 |
couponNum | int | 用户有效优惠券数量 |
token校验接口
文章目录
- 脚本接口
- 历史修改记录
- 1 更新root开关状态
- 2 获取root开关状态
- 1 宿主机注册
- 2 宿主机重启
- 3 虚拟机重启
- 4 虚拟机删除
- 5 虚拟机创建
- 6 虚拟机注册的所有数据同步
- 7 设备映射的ip和端口信息数据同步批量
- 8 宿主机列表信息
- 9 虚拟化详情列表信息(宿主机下)
- 10 宿主机刀片/板卡下拉列表
- 1 站点列表
- 2 RBD迁移记录
- 3 获取排队数量
- 4 用户确认排队弹窗 提供该任务预计的排队所需要的时间
- 5用户确认排队 使用该接口记录用户排队成功
- 6退出排队
- 7获取排队当前序列号
- 1 迁移管理列表
- 2 站点策略列表查询信息
- 3 (站点)RBD设置并行数 (需要环境验证python端的RBD接口)
- 4(站点)更新策略开关
- 5(迁移)RBD重试(需要环境验证python端的RBD接口)
- 6(迁移)RBD取消(需要环境验证python端的RBD接口)
- 7(迁移)RBD迁移详情(需要环境验证python端的RBD接口。。。)
- 8(迁移)删除RBD迁移记录 注意这个id不一样(请查看本页面接口①迁移列表)
历史修改记录
日期 | 版本 | 描述 | 作者 |
---|
1 文件服务的token校验接口
需要携带keyType和Token
- 请求类型:POST
- **简要描述:**在vcluster-file-center的项目下设置请求拦截调用 user微服务的token校验接口
- 请求URL:
涉及使用FastDFS的进入文件服务vcluster-file-center的所有请求
- 接口地址:
http://127.0.0.1:8044/v1/checkTokenApi
- **请求参数示例:**请将下面2个参数携带进request请求消息头header中
- AESKEY:RuiChiSecurityGo
{
"keyType": "1"
"Authorization":"用户唯一标识的token信息"
}
{
"keyType": "2"
"security":RuiChiSecurityGo+System.currentTimeMillis()
(举例:RuiChiSecurityGo1606201334 字符串拼接的AES加密后字符串信息)
}
以下针对"keyType": "2"类型的校验
// 权限字符串加密
public static String Encrypt(String aesKey,String sSrc) throws Exception {
String encode = URLEncoder.encode(sSrc, "UTF-8");
byte[] raw = aesKey.getBytes(StandardCharsets.UTF_8);
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");// "算法/模式/补码方式"
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(encode.getBytes(StandardCharsets.UTF_8));
return new Base64().encodeToString(encrypted);// 此处使用BASE64做转码功能,同时能起到2次加密的作用。
}
// 权限字符串解密
public static String Decrypt(String aesKey, String sSrc) throws Exception {
byte[] raw = aesKey.getBytes("utf-8");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] encrypted1 = new Base64().decode(decode);// 先用base64解密
byte[] original = cipher.doFinal(encrypted1);
String originalString = new String(original, "utf-8");
return originalString;
}
- 请求参数说明:
键 | 类型 | 描述 |
---|---|---|
keyType | String | 值为:1 校验token 值为2:校验AES加密信息 |
Authorization | String | 用户唯一标识的token信息 |
security | String | AES加密信息 |
-
**校验失败: **
针对keyType=2 权限字符串校验code: 1 msg:“用户信息校验失败”
针对keyType=1 token字符串校验
code: 403 msg:“用户信息校验失败”
统一创建订单接口(立即购买)
需要携带Token
- 请求类型:POST
- **简要描述:**星币/微信/支付宝的统一订单创建接口
- 请求URL:
/api/user/v1/order/create
- 请求阐述示例:
http://服务器IP/api/user/v1/order/create
- 请求参数示例:
# 购买云手机(钱包套餐规则购买) (批量购买加一个入参参数 quantity云手机数量)
{
"quantity":3
"buyType": 1,
"id": 1,
"phoneType": "VIP",
"mealType": 0,
"couponId": 0,
"userCardId": 0,
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gFLVQYna-1629356661359)(http://.32.253/server/…/Public/Uploads/2021-01-13/5ffe54306f064.png)]
- 请求参数说明:
键 | 类型 | 描述 |
---|---|---|
buyType | int | 购买类型,0:钱包充值、1:购买云手机、2:续费 |
id | String | 套餐的ID |
phoneType | string | 购买套餐类型,VIP/SVIP |
mealType | int | 套餐类型,0:钱包套餐规则1:星币兑换规则(现在的版本只有钱包套餐,传0即可) |
couponId | int | 获取优惠券信息返回的id值,即选取使用优惠券的id值(未勾选传0) |
userCardId | int | 设备列表返回的id值 |
rbdType | int | 是否勾选星盘续费 0 未勾选 1已勾选 |
sn | String | 续费云手机时候需要携带sn号码 默认为null |
quantity | int | 批量购买时的数量 |
- 返回数据示例:
{
"status": 0,
"msg": "创建成功",
"data": {
"diskName": "t8VfSm,nfKKQe,hbMRSH",
"bTime": "",
"quantity": 3,
"priceCoins": "300",
"description": "1天套餐",
"giveStarNum": 0,
"myOrderNum": "RFhEo1604384832SZX60572912683",
"bSize": "",
"totalAmount": "0.00",
"rbdMoney": "",
"price": "30.0",
"originalPayMoney": "30.0",
"buyVipType": "VIP",
"totalCoins": "9319",
"ctime": "2020-12-14T02:38:44.000+0000",
"cloudPhoneMoney": "30.0",
"preferentialContent": ""
}
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、1:失败 |
msg | String | 描述 |
diskName | String | 设备名称(云手机名称加逗号的拼接,前端可用…适配多台云手机名称) |
priceCoins | String | 兑换星币所需星币数量 |
exceptTime | String | 有效时间 |
description | String | 购买天数 |
giveStarNum | int | 赠送星币数 |
myOrderNum | String | 订单号 |
totalAmount | String | 我的钱包余额 |
price | String | 购买套餐所需钱 |
originalPayMoney | String | 购买套餐原价 |
buyVipType | String | 购买套餐类型(VIP/SVIP) |
totalCoins | String | 我的星币数量余额 |
ctime | String | 订单创建时间 |
cloudPhoneMoney | String | 云手机价格 |
获取套餐列表信息接口 加了3个字段
需要携带Token
- 请求类型:GET
- **简要描述:**云手机套餐列表信息
- 请求URL:
/api/user/v2/meal/info
- 请求阐述示例:
http://服务器IP/api/user/v2/meal/info?phoneType=VIP
- 请求参数示例:
{"phoneType":"VIP"}
- 请求参数说明:
键 | 必选 | 类型 | 说明 |
---|---|---|---|
phoneType | True | String | 云手机类型(星动VIP/星耀SVIP/唔即STAR) |
- 返回数据示例:
{
"status": 0,
"msg": "获取成功",
"data": {
"list": [
{
"id": 271,
"menu": "50天",
"originalPrice": "",
"actualPrice": 50.0,
"moveStatus": 10,
"preferentialContent": "",
"customStatement": "50",
"giveStarNum": 0,
"starNum": 500,
"originalStarNum": 500,
"day": 50,
"remainQuantity": -1,
"phoneRemainQuantity": 100,
"menuAddedService": [
{
"menuId": 271,
"serviceId": 3,
"serviceName": "虚拟定位",
"serviceCode": "VIRTUAL_GPS_SERVICE",
"chargeType": 2,
"rangeType": 2,
"chargeDay": null,
"chargeNum": 3
},
{
"menuId": 271,
"serviceId": 9,
"serviceName": "站点迁移",
"serviceCode": "SITE_TRANSFER_SERVICE",
"chargeType": 2,
"rangeType": 1,
"chargeDay": null,
"chargeNum": 3
}
]
}
]
}
}
- 返回参数示例:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、1:失败 |
msg | String | 描述 |
id | int | 套餐ID号,创建订单号需要用到 |
menu | String | 套餐时间描述 |
originalPrice | String | 钱套餐原价 (无优惠时,显示为空字符串,客户端只需要拿实价) |
actualPrice | float | 钱套餐实价 (有优惠时,实价就为打折后的价格) |
preferentialContent | String | 优惠内容信息描述 (无优惠的时候显示为空字符串) |
moveStatus | int | 数据排序参考值 |
customStatement | String | 套餐描述 |
giveStarNum | int | 赠送的星币数 |
starNum | int | 优惠价格星币数量 |
originalStarNum | int | 未优惠价格星币数量 |
day | int | day |
remainQuantity | int | 该套餐用户剩余使用次数 |
phoneRemainQuantity | int | 云手机剩余可购买数量 |
menuAddedService | list<menuAddedService> | 云手机包含的增值服务 |
- menuAddedService:
键 | 类型 | 说明 |
---|---|---|
menuId | int | 云手机套餐id |
serviceId | int | 增值服务id |
serviceName | str | 增值服务名称 |
serviceCode | str | 增值服务编码 |
chargeType | int | 计费类型:1.天 2.次 |
rangeType | int | 服务范围:1.账号 2.云手机 |
chargeDay | int | 计费天数 |
chargeNum | int | 计费次数 |
订单中云手机详情接口
- 请求类型:POST
- 简要描述:
- 请求URL:
/api/user/v1/order/queryOrderCard
- 请求阐述示例:
http://服务器IP/api/user/v1/order/queryOrderCard
- 请求参数示例:
{
"myOrderNum": "XXXXXXXXXXXX"
}
- 请求参数说明:
键 | 类型 | 描述 |
---|---|---|
myOrderNum | String | 订单编号 |
- 返回数据示例:
{
"status": 0,
"msg": "查询订单云手机详情调用成功",
"data": [
{
"id": 1825,
"username": "RFhEo1604384832",
"buyVipType": "VIP",
"diskName": "0VHVVT",
"validTime": 1440,
"myOrderNum": "RFhEo1604384832SZX86073894994",
"overdue": false,
"exceptTime": "2020-12-13 17:23:33",
"ctime": "2020-12-12 17:23:33",
"phoneAuthStatus": 0,
"room": "",
"partitionId": 0
},
{
"id": 1827,
"username": "RFhEo1604384832",
"buyVipType": "VIP",
"diskName": "lgdLsw",
"validTime": 1440,
"myOrderNum": "RFhEo1604384832SZX86073894994",
"overdue": false,
"exceptTime": "2020-12-13 17:23:33",
"ctime": "2020-12-12 17:23:33",
"phoneAuthStatus": 0,
"room": "",
"partitionId": 0
}
]
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
id | int | 订单主键 |
username | String | 用户名 |
buyVipType | String | phoneAuthStatus |
diskName | String | 设备名称 |
validTime | String | 失效时长 |
myOrderNum | String | 订单号 |
overdue | int | |
exceptTime | String | 失效时间 |
ctime | String | 创建时间 |
订单信息表 t_user_order
字段名 | 类型 | 描述 | null | unique | 主键 |
---|---|---|---|---|---|
id | bigint(20) | ID值 自增长 | False | True | True |
order_num | varchar(64) | 订单号 | False | True | False |
user_name | varchar(64) | 用户名 | False | True | False |
quantity | int | 数量 | False | False | False |
order_type | tinyint(1) | 购买类型(0:充值、1:购买云手机、2:续费、3:星币充值、4:购买云盘、5:续费云盘 6.星盘扩容) | False | False | False |
meal_id | tinyint(1) | 套餐id | False | False | False |
meal_star_num | int | 赠送星币数量 | False | False | False |
meal_vip_type | varchar(32) | 购买云手机类型(VIP/SVIP) | False | False | False |
pay_type | tinyint(1) | 支付类型(1微信,2支付宝,3星币) | False | True | False |
pay_monney | decimal(10,2) | 实付金额 | False | False | False |
coupon_id | int | 优惠卷id(t_coupon_info.id) | False | False | False |
coupon_sum | decimal(10,2) | 优惠金额 | False | False | False |
star_size | int | 星币充值数量 | False | False | False |
cloud_size | int | 云盘大小 | False | False | False |
star_dish_size | int | 星盘扩容大小 | False | False | False |
order_status | tinyint(1) | 订单状态(0:未完成,1:完成) | False | False | False |
client_type | tinyint(1) | 用户购买渠道(app 1 ,pc 2) | False | False | False |
rbd_type | tinyint(1) | 云手机续费,是否选择星盘续费 0:不勾选 1:勾选 | False | False | False |
description | varchar(128) | 商品描述 | False | False | False |
finish_time | datetime | 订单完成时间 | False | False | False |
extend_name | varchar(128) | 扩展字段(扩展给给后续需要) | False | False | False |
create_time | datetime | 创建时间 | False | False | False |
create_by | varchar(64) | 创建人 | False | False | False |
update_time | datetime | 修改时间 | False | False | False |
update_by | varchar(64) | 修改人 | False | False | False |
enable_flag | tinyint(1) | (0删除,1有效) | False | False | False |
支付信息表 t_user_pay
字段名 | 类型 | 描述 | null | unique | 主键 |
---|---|---|---|---|---|
id | bigint(20) | ID值 自增长 | False | True | True |
order_id | bigint(20) | 订单主键(t_user_order.id) | False | True | False |
order_num | varchar(64) | 订单号 | False | True | False |
pay_type | tinyint(1) | 支付类型(1微信,2支付宝) | False | True | False |
pay_status | tinyint(1) | 支付状态(1支付中,2支付成功,3支付失败,4支付异常) | False | True | False |
total_amount | decimal(10,2) | 人民币价格 | False | True | False |
seller_id | varchar(128) | 支付号账号或者微信号 | False | True | False |
serial_num | varchar(128) | 支付流水号 | False | True | False |
extend_name | varchar(128) | 扩展字段 | False | False | False |
create_time | datetime | 创建时间 | False | False | False |
create_by | varchar(64) | 创建人 | False | False | False |
update_time | datetime | 修改时间 | False | False | False |
update_by | varchar(64) | 修改人 | False | False | False |
enable_flag | tinyint(1) | (0删除,1有效) | False | False | False |
用户板卡信息表 t_user_card (ps:能不动就不动)
字段名 | 类型 | 描述 | null | unique | 主键 |
---|---|---|---|---|---|
id | int(11) | ID值 自增长 | False | True | True |
username | varchar(64) | 用户名 | False | True | False |
disk_name | varchar(128) | 云手机名称 | False | True | False |
valid_time | int | 有效时间 | False | True | False |
overdue | tinyint(1) | 云手机回收未过期短信提醒模板的key | False | True | False |
except_time | datetime | 过期时间 | False | True | False |
phone_auth_status | int | 授权状态值 | False | True | False |
buy_vip_type | varchar(128) | 设备vip类型 | False | True | False |
room | varchar(128) | 云手机所属机房号 | False | True | False |
partition_id | bigint(11) | t_partition_info表中的id | False | False | False |
card_id | bigint(11) | t_card_info表中的id | False | False | False |
create_time | datetime | 创建时间 | False | False | False |
create_by | varchar(65) | 创建人 | False | False | False |
update_time | datetime | 修改时间 | False | False | False |
update_by | varchar(65) | 修改人 | False | False | False |
enable_flag | tinyint(1) | (0删除,1有效) | False | False | False |
用户板卡与订单关联表 t_card_con_order
字段名 | 类型 | 描述 | null | unique | 主键 |
---|---|---|---|---|---|
id | bigint(20) | ID值 自增长 | False | True | True |
user_card_id | int(20) | 用户板卡号 (t_user_card.id) | False | False | False |
order_id | bigint(20) | 订单主键(t_user_order.id) | False | False | False |
order_num | varchar(64) | 订单号(t_user_order.order_num) | False | False | False |
extend_name | varchar(128) | 扩展字段 | False | False | False |
create_time | datetime | 创建时间 | False | False | False |
create_by | varchar(64) | 创建人 | False | False | False |
update_time | datetime | 修改时间 | False | False | False |
update_by | varchar(64) | 修改人 | False | False | False |
enable_flag | tinyint(1) | (0删除,1有效) | False | False | False |
文章目录
- 脚本接口
- 历史修改记录
- 1 更新root开关状态
- 2 获取root开关状态
- 1 宿主机注册
- 2 宿主机重启
- 3 虚拟机重启
- 4 虚拟机删除
- 5 虚拟机创建
- 6 虚拟机注册的所有数据同步
- 7 设备映射的ip和端口信息数据同步批量
- 8 宿主机列表信息
- 9 虚拟化详情列表信息(宿主机下)
- 10 宿主机刀片/板卡下拉列表
- 1 站点列表
- 2 RBD迁移记录
- 3 获取排队数量
- 4 用户确认排队弹窗 提供该任务预计的排队所需要的时间
- 5用户确认排队 使用该接口记录用户排队成功
- 6退出排队
- 7获取排队当前序列号
- 1 迁移管理列表
- 2 站点策略列表查询信息
- 3 (站点)RBD设置并行数 (需要环境验证python端的RBD接口)
- 4(站点)更新策略开关
- 5(迁移)RBD重试(需要环境验证python端的RBD接口)
- 6(迁移)RBD取消(需要环境验证python端的RBD接口)
- 7(迁移)RBD迁移详情(需要环境验证python端的RBD接口。。。)
- 8(迁移)删除RBD迁移记录 注意这个id不一样(请查看本页面接口①迁移列表)
历史修改记录
| 日期 | 版本 | 描述 | 作者 |
推广页面下载埋点接口
- 请求类型:POST
- **简要描述:**用户使用外链下载(好友-添加好友) / 官网页面下载(android/ios/pc)
http://test.androidscloud.com/api/user/promote/imInvitation?type=3&username=MkgzTDgxNjA5MjA3Nzgy
http://www.androidscloud.com/ - 请求URL:
/api/public/v4/access/user/burialSiteLog
- 请求阐述示例:
http://.31.223/api/public/v4/access/user/burialSiteLog
- 请求参数示例:
# 推广页面下载埋点
[
{
"platform":4,(固定4,表示web端)
"visitType":4,(4:推广页面下载 5:官网PC端下载 6:官网android端下载 7:官网ios端下载)
"time":"1609235353024",(用户点击下载按钮的时间戳)
"phoneNum":"13311111111",
"downLoaderCount": 10000,(总下载次数,用户点击下载按钮的叠加数量)
"browserType": "浏览器信息 火狐4.5"(浏览器信息加版本号)
}
]
# PC/android/IOS下载埋点
[
{
"platform":4,(固定4,表示web端)
"visitType":5,(4:推广页面下载 5:官网PC端下载 6:官网android端下载 7:官网ios端下载)
"time":"1609235353024",(用户点击下载按钮的时间戳)
"downLoaderCount": 20000,(总下载次数,用户点击下载按钮的叠加数量)
"browserType": "浏览器信息 火狐4.5"(浏览器信息加版本号)
}
]
- 请求参数说明:
键 | 类型 | 描述 |
---|---|---|
platform | int | 4(表示web端) |
visitType | int | (4:推广页面下载 5:官网PC端下载 6:官网android端下载 7:官网ios端下载) |
time | string | (用户点击下载按钮的时间戳) |
phoneNum | string | 推广页面点击下载按钮时 录入的手机号 |
ip | string | 用户ip地址(后端获取 getHeader(X-real-ip)) |
downLoaderCount | int | (总下载次数,用户点击下载按钮的叠加数量) |
browserType | string | (浏览器信息加版本号) |
- 返回数据示例:
{
"status": 0,
"msg": "成功",
"data": null
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、1:失败 |
msg | String | 描述 |
data | String | 返回数据前端不需要数据默认null |
文章目录
- 脚本接口
- 历史修改记录
- 1 更新root开关状态
- 2 获取root开关状态
- 1 宿主机注册
- 2 宿主机重启
- 3 虚拟机重启
- 4 虚拟机删除
- 5 虚拟机创建
- 6 虚拟机注册的所有数据同步
- 7 设备映射的ip和端口信息数据同步批量
- 8 宿主机列表信息
- 9 虚拟化详情列表信息(宿主机下)
- 10 宿主机刀片/板卡下拉列表
- 1 站点列表
- 2 RBD迁移记录
- 3 获取排队数量
- 4 用户确认排队弹窗 提供该任务预计的排队所需要的时间
- 5用户确认排队 使用该接口记录用户排队成功
- 6退出排队
- 7获取排队当前序列号
- 1 迁移管理列表
- 2 站点策略列表查询信息
- 3 (站点)RBD设置并行数 (需要环境验证python端的RBD接口)
- 4(站点)更新策略开关
- 5(迁移)RBD重试(需要环境验证python端的RBD接口)
- 6(迁移)RBD取消(需要环境验证python端的RBD接口)
- 7(迁移)RBD迁移详情(需要环境验证python端的RBD接口。。。)
- 8(迁移)删除RBD迁移记录 注意这个id不一样(请查看本页面接口①迁移列表)
历史修改记录
| 日期 | 版本 | 描述 | 作者 |
客户端用户登录
无需携带Token
-
**简要描述:**客户端用户登录接口
-
请求URL:
POST/api/user/v1/client/login
-
请求阐述示例:
http:///api/user/v1/client/login
-
请求参数示例:
{
"quicklyLogin":true(非必传,有一键登录的传true就行)
"phone": "17688706311",
"password": "123456",
"uuid": "00:0c:29:4e:61:7f brd ff:ff:ff:ff:ff:ff",
"diskName": "xioami9",
"client": 1,
"ipAddr": ""
}
- 请求参数说明:
键 | 必选 | 类型 | 说明 |
---|---|---|---|
quicklyLogin | True | boolean | 非必传 true(一键登录),false(后端默认值) |
phone | True | str | 手机号码 |
diskName | True | str | 设备名称(手机型号) |
password | True | str | 密码需要AES加密,秘钥:xgj7adwbtia-ow7x |
uuid | True | str | 设备唯一识别码 |
client | True | int | 0:web/1:安卓/2:iphone/3:PC |
ipAddr | True | str | 用户IP地址 |
- 返回数据示例:
{
"status": 0,
"msg": "登录成功",
"data": {
"nextCloudIp": ".31.15",
"username": "zhangsan",
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NjA1NzAxMzYsInVzZXJuYW1lIjoidXNlcjE1NTg3NzAwODYifQ.RzLQZyQIm3AS-cFIlzhvJT3QjXK1vQXcmA7iZ2mBzkA",
"id": 9
}
}
- 返回参数示例:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、1:失败 |
msg | str | 描述 |
token | str | 用户token信息 |
id | int | 用户ID |
密码修改的接口校验
需要携带Token
- 请求类型:POST
- **简要描述:**获取加密公钥接口
- 请求URL:
/v1/client/checkUpdatePsw
- 请求阐述示例:
http:///api/user/v1/client/checkUpdatePsw
- 请求参数示例:
{
"password":"md5+RSA公钥 加密字符串"
}
- 返回数据示例:
{
"status": 0,
"msg": "密码校验成功",
"data": null
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、1:失败 |
msg | String | 描述信息 |
获取加密需要的公钥接口
-
请求类型:POST
-
**简要描述:**获取加密公钥接口
-
请求URL:
/v1/client/getPbKey
-
请求阐述示例:
http:///api/user/v1/client/getPbKey
-
请求参数示例:
-
返回数据示例:
{
"status": 0,
"msg": "公钥获取成功",
"data": null
}
- 使用私钥解密失败返回状态码定义:
{
"status": 2021,
"msg": "解密错误",
"data": null
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、2021:失败 |
msg | String | 描述信息 |
注意:
脚本接口
文章目录
- 脚本接口
- 历史修改记录
- 1 更新root开关状态
- 2 获取root开关状态
- 1 宿主机注册
- 2 宿主机重启
- 3 虚拟机重启
- 4 虚拟机删除
- 5 虚拟机创建
- 6 虚拟机注册的所有数据同步
- 7 设备映射的ip和端口信息数据同步批量
- 8 宿主机列表信息
- 9 虚拟化详情列表信息(宿主机下)
- 10 宿主机刀片/板卡下拉列表
- 1 站点列表
- 2 RBD迁移记录
- 3 获取排队数量
- 4 用户确认排队弹窗 提供该任务预计的排队所需要的时间
- 5用户确认排队 使用该接口记录用户排队成功
- 6退出排队
- 7获取排队当前序列号
- 1 迁移管理列表
- 2 站点策略列表查询信息
- 3 (站点)RBD设置并行数 (需要环境验证python端的RBD接口)
- 4(站点)更新策略开关
- 5(迁移)RBD重试(需要环境验证python端的RBD接口)
- 6(迁移)RBD取消(需要环境验证python端的RBD接口)
- 7(迁移)RBD迁移详情(需要环境验证python端的RBD接口。。。)
- 8(迁移)删除RBD迁移记录 注意这个id不一样(请查看本页面接口①迁移列表)
历史修改记录
日期 | 版本 | 描述 | 作者 |
---|
0. 新增渠道平台客户端安装记录
**简要描述: **
*客户下载安装包时调用新增渠道平台客户端下载记录
**请求URL: **
http://ip/api/user/v1/ditchClient/addChannelAppInstalls
**请求方式: **
post
请求参数示例:
{
"code":"123123",
"platform":2,
"version":"v123",
"type":1
}
注:
code: "渠道编码",
platform: "平台类型【ios/android/pc】 1.Andorid 2.IOS 3.pc,
version: "版本号"
type: 1(固定值1,表示是安装时候调用)
返回参数示例:
{
"status": 0,
"data": null,
"msg": "新增成功"
}
返回参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 状态码 |
msg | string | 提示信息 |
1 游戏列表信息
简要描述:
- 游戏列表信息接口
请求URL:
http://xx.com/api/script/v1/androidScriptPlatform/gameInfo
请求方式:
- GET
返回示例
{
"status": 0,(0 :接口调用成功 1:接口调用失败)
"msg": "查询成功",
"data": [
{
"id": 5, -- 游戏id
"gameName": "123123", -- 游戏名字
"hot": 789, -- 游戏热度值
"gameType": 0, -- 游戏类型1.动作游戏 2.冒险游戏 3.第一人称视点射击游戏 4.格斗游戏 5.角色扮演游戏 6.策略游戏 7. 多人在线战术竞技游戏 购买装备来赚钱 8.音乐游戏9.益智游戏 10 赛车游戏或者竞速游戏11 体育游戏 12 射击游戏 13 桌面游戏14 卡片游戏15 模拟经营类游戏
"logo": 0, -- 图标 文件服务器id
"num": 0, -- 脚本数量
"label": "0", -- 标签(免费,推荐,收费)
"gamePackage": "", -- app,包名
"createBy": "", -- 创建人
"createTime": "2021-03-01T14:10:16.000+0000", -- 创建时间
"updateBy": "", -- 修改人
"updateTime": "2021-03-01T16:01:52.000+0000", -- 修改时间
"enableFlag": 1 -- 数据有效状态 0:该数据已被删除,1:该数据有效
},
{
"id": 3,
"gameName": "123123",
"hot": 456,
"gameType": 0,
"logo": 0,
"num": 0,
"label": "0",
"gamePackage": "",
"createBy": "",
"createTime": "2021-02-27T17:33:56.000+0000",
"updateBy": "",
"updateTime": "2021-03-01T16:01:50.000+0000",
"enableFlag": 1
},
{
"id": 1,
"gameName": "123123",
"hot": 123,
"gameType": 0,
"logo": 0,
"num": 0,
"label": "0",
"gamePackage": "",
"createBy": "",
"createTime": "2021-02-27T17:23:49.000+0000",
"updateBy": "",
"updateTime": "2021-03-01T16:00:04.000+0000",
"enableFlag": 1
}
]
}
2 轮播图列表信息
简要描述:
- 查询至多5个轮播图信息
请求URL:
http://xx.com/api/script/v1/androidScriptPlatform/bannerInfo
请求方式:- GET
返回示例
{
"status": 0,
"msg": "查询成功",
"data": [
{
"id": 9,
"bannerName": "5555", -- banner名称
"sort": 5, -- 排序
"startTime": "2021-03-01T15:55:14.000+0000", -- 起始时间
"endTime": "2021-03-01T15:55:14.000+0000", -- 结束时间
"url": null,-- 预览图id
"htmlUrl": null, -- url 跳转链接
"views": null, -- 查看次数
"status": null, -- 状态 1:上架 0:待上架
"createBy": "", -- 创建人
"createTime": "2021-03-01T14:10:16.000+0000", -- 创建时间
"updateBy": "", -- 修改人
"updateTime": "2021-03-01T16:01:52.000+0000", -- 修改时间
"enableFlag": 1 -- 数据有效状态 0:该数据已被删除,1:该数据有效
},
{
"id": 7,
"bannerName": "555",
"sort": 6,
"startTime": "2021-03-01T15:55:13.000+0000",
"endTime": "2021-03-01T15:55:13.000+0000",
"url": null,
"htmlUrl": null,
"views": null,
"status": null,
"createBy": "",
"createTime": "2021-03-01T15:55:13.000+0000",
"updateBy": "",
"updateTime": "2021-03-01T15:55:33.000+0000",
"enableFlag": 1
},
{
"id": 5,
"bannerName": "55",
"sort": 7,
"startTime": "2021-03-01T15:55:12.000+0000",
"endTime": "2021-03-01T15:55:12.000+0000",
"url": null,
"htmlUrl": null,
"views": null,
"status": null,
"createBy": "",
"createTime": "2021-03-01T15:55:12.000+0000",
"updateBy": "",
"updateTime": "2021-03-01T15:55:32.000+0000",
"enableFlag": 1
},
{
"id": 3,
"bannerName": "5",
"sort": 8,
"startTime": "2021-03-01T15:55:12.000+0000",
"endTime": "2021-03-01T15:55:12.000+0000",
"url": null,
"htmlUrl": null,
"views": null,
"status": null,
"createBy": "",
"createTime": "2021-03-01T15:55:12.000+0000",
"updateBy": "",
"updateTime": "2021-03-01T15:55:32.000+0000",
"enableFlag": 1
},
{
"id": 1,
"bannerName": "123",
"sort": 9,
"startTime": "2021-03-01T15:55:09.000+0000",
"endTime": "2021-03-01T15:55:09.000+0000",
"url": null,
"htmlUrl": null,
"views": null,
"status": null,
"createBy": "",
"createTime": "2021-03-01T15:55:09.000+0000",
"updateBy": "",
"updateTime": "2021-03-01T15:55:30.000+0000",
"enableFlag": 1
}
]
}
3 游戏信息热力值hot排序前6条
简要描述:
- 查询所有游戏信息按热力值hot排序前6条接口
请求URL:
http://127.0.0.1/api/script/v1/androidScriptPlatform/gameHotInfo
请求方式:
- GET
返回示例
{
"status": 0,
"msg": "查询成功",
"data": [
{
"id": 5, -- 游戏id
"gameName": "123123", -- 游戏名字
"hot": 789, -- 游戏热度值
"gameType": 0, -- 游戏类型1.动作游戏 2.冒险游戏 3.第一人称视点射击游戏 4.格斗游戏 5.角色扮演游戏 6.策略游戏 7. 多人在线战术竞技游戏 购买装备来赚钱 8.音乐游戏9.益智游戏 10 赛车游戏或者竞速游戏11 体育游戏 12 射击游戏 13 桌面游戏14 卡片游戏15 模拟经营类游戏
"logo": 0, -- 图标 文件服务器id
"num": 0, -- 脚本数量
"label": "0", -- 标签(免费,推荐,收费)
"gamePackage": "", -- app,包名
"createBy": "", -- 创建人
"createTime": "2021-03-01T14:10:16.000+0000", -- 创建时间
"updateBy": "", -- 修改人
"updateTime": "2021-03-01T16:01:52.000+0000", -- 修改时间
"enableFlag": 1 -- 数据有效状态 0:该数据已被删除,1:该数据有效
},
{
"id": 3,
"gameName": "123123",
"hot": 456,
"gameType": 0,
"logo": 0,
"num": 0,
"label": "0",
"gamePackage": "",
"createBy": "",
"createTime": "2021-02-27T17:33:56.000+0000",
"updateBy": "",
"updateTime": "2021-03-01T16:01:50.000+0000",
"enableFlag": 1
},
{
"id": 1,
"gameName": "123123",
"hot": 123,
"gameType": 0,
"logo": 0,
"num": 0,
"label": "0",
"gamePackage": "",
"createBy": "",
"createTime": "2021-02-27T17:23:49.000+0000",
"updateBy": "",
"updateTime": "2021-03-01T16:00:04.000+0000",
"enableFlag": 1
}
]
}
4 云手机名称头部的模糊查询
简要描述:
- 根据云手机名称头部的模糊查询匹配接口
请求URL:
http://127.0.0.1/api/script/v1/androidScriptPlatform/fuzzyQueryGameInfo?gameName=12
请求方式:
- GET
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
gameName | 是 | String | 游戏名称 |
返回示例
{
"status": 0,
"msg": "查询成功",
"data": [
{
"id": 5, -- 游戏id
"gameName": "123123", -- 游戏名字
"hot": 789, -- 游戏热度值
"gameType": 0, -- 游戏类型1.动作游戏 2.冒险游戏 3.第一人称视点射击游戏 4.格斗游戏 5.角色扮演游戏 6.策略游戏 7. 多人在线战术竞技游戏 购买装备来赚钱 8.音乐游戏9.益智游戏 10 赛车游戏或者竞速游戏11 体育游戏 12 射击游戏 13 桌面游戏14 卡片游戏15 模拟经营类游戏
"logo": 0, -- 图标 文件服务器id
"num": 0, -- 脚本数量
"label": "0", -- 标签(免费,推荐,收费)
"gamePackage": "", -- app,包名
"createBy": "", -- 创建人
"createTime": "2021-03-01T14:10:16.000+0000", -- 创建时间
"updateBy": "", -- 修改人
"updateTime": "2021-03-01T16:01:52.000+0000", -- 修改时间
"enableFlag": 1 -- 数据有效状态 0:该数据已被删除,1:该数据有效
},
{
"id": 3,
"gameName": "123123",
"hot": 456,
"gameType": 0,
"logo": 0,
"num": 0,
"label": "0",
"gamePackage": "",
"createBy": "",
"createTime": "2021-02-27T17:33:56.000+0000",
"updateBy": "",
"updateTime": "2021-03-01T16:01:50.000+0000",
"enableFlag": 1
},
{
"id": 5,
"gameName": "123123",
"hot": 789,
"gameType": 0,
"logo": 0,
"num": 0,
"label": "0",
"gamePackage": "",
"createBy": "",
"createTime": "2021-03-01T14:10:16.000+0000",
"updateBy": "",
"updateTime": "2021-03-01T16:01:52.000+0000",
"enableFlag": 1
}
]
}
5 脚本每次运行的计算与记录(注意:弃用!!)
简要描述:
- 脚本每次运行的计算与记录接口
请求URL:
http://127.0.0.1/api/script/v1/androidScriptPlatform/startScriptCompute
请求方式:
- POST
参数:
{
"id": 1, -- 脚本id
"cardId": 13 -- 云手机唯一标识card_id
}
返回示例
{
"status": 0,
"msg": "脚本运行计算成功",
"data": null
}
{
"status": 1,
"msg": "脚本运行计算错误",
"data": null
}
6 指定游戏下的所有脚本信息
简要描述:
- 查看指定游戏下的所有脚本信息接口
请求URL:
http://127.0.0.1/api/script/v1/androidScriptPlatform/gameByScriptInfo?gameId=1
请求方式:
- GET
参数:
{
"gameId": 1 -- 游戏id
}
返回示例
{
"status": 0,
"msg": "查询成功",
"data": [
{
"gamePackage":"", --脚本所属游戏包名
"hot": 12 , --游戏热力值
appPackage:"",-- 脚本包名
"id": 1,
"scriptName": "aa", -- 脚本名字
"gameId": 1, -- 游戏id
"version": "", -- '版本
"logo": 0, -- 脚本图标文件服务器id
"introduction": "", -- 简介
"updateContent": "", -- 版本更新记录
"tutorial": "", -- 教程
"authorId": 1, -- 作者id
"label": "", -- 标签
"type": 0, -- 类型 1.lua、2.apk
"rate": 0, -- 费率(单位分)
"luaApkUrl": 0, -- 脚本文件路径--文件服务器id
"downloadTotalDv": "1", -- 下载次数,每天最多算一次
"revenue": 0, -- 总收益(单位分)
"createBy": "", -- '创建人'
"createTime": "2021-03-02T11:13:18.000+0000", -- 创建时间
"updateBy": "", -- 修改人
"updateTime": "2021-03-01T16:01:52.000+0000", -- 修改时间
},
{
"gamePackage":"", --脚本所属游戏包名
"hot": 12 , --游戏热力值
appPackage:"",-- 脚本包名
"id": 3,
"scriptName": "测试1",
"gameId": 1,
"version": "2.0.0",
"logo": 1,
"introduction": "3333",
"updateContent": "324444",
"tutorial": "23433333",
"authorId": 1,
"label": "免费",
"type": 1,
"rate": 190,
"luaApkUrl": 1,
"downloadTotalDv": "1",
"revenue": 0,
"createBy": "admin",
"createTime": "2021-03-02T16:14:03.000+0000",
"updateBy": "admin",
"updateTime": "2021-03-02T16:15:35.000+0000",
"enableFlag": 0
}
]
}
7 轮播图滑动次数信息
简要描述:
- 更新轮播图滑动次数信息
请求URL:
http://127.0.0.1/api/script/v1/androidScriptPlatform/bannerBrowseInfo?bannerId=1
请求方式:
- GET
参数:
{
"bannerId": 1 -- 轮播图id
}
返回示例
{
"status": 0,
"msg": "更新成功",
"data": null
}
1 更新root开关状态
简要描述:
- 更新root开关状态接口
请求URL:
http://127.0.0.1/api/user/v1/rootSwitch/uploadRootStatus
请求方式:
- POST
**入参示例: **
{
"userCardId": 7, -- 卡唯一标识 card_id
"rootStatus": 1 -- root 开关状态
}
返回示例
{
"status": 0,
"msg": "更新成功",
"data": null
}
{
"status": 1,
"msg": "更新失败",
"data": null
}
2 获取root开关状态
简要描述:
- 获取root开关状态
请求URL:
http://127.0.0.1/api/user/v1/rootSwitch/getRootStatus?cardId=7
请求方式:- GET
**入参示例: **
{
"cardId": 7 -- 卡唯一标识 card_id
}
返回示例
{
"status": 0,
"msg": "查询成功",
"data": 1 -- root开关状态(0.关闭 1.开启)
}
{
"status": 1,
"msg": "查询失败",
"data": 1 -- root开关状态(0.关闭 1.开启)
}
1 宿主机注册
简要描述:
- 宿主机注册信息上报接口
请求URL:
http://xx.com/api/virtual/v1/virtualManage/hostInfo
请求方式:
- POST
入参示例
[
{
"sn": "77789",
"mac": "127.0.0.1",
"room": "1",
"frame": "1",
"host": "1",
"lowAddr": "1",
"blade": 12,
"card": 34,
"deviceBoard": "10",
"bmcIp": "1",
"hostIp": "1",
"hostPort": 12,
"virtualPhones": [
{
"containerId": "123",
"sn":"宿主机SN_innerNetPort"
"virtualIp": "127.0.0.1",
"videoMappingPort": 9100,
"innerNetIp":"127...0",
"innerNetPort": 12
},
{
"containerId": "123",
"sn":"宿主机SN_innerNetPort"
"virtualIp": "127.0.0.1",
"videoMappingPort": 9100,
"innerNetIp":"127...0",
"innerNetPort": 12
}]
}]
字段解释说明---------------------------------------------------------------------
[
//宿主机一
{
//'板卡sn号码',
"sn": "111111",
//'板卡mac地址',
"mac": "127.0.0.1",
//'机房位置代号',
"room": "1",
//'机架位置代号',
"frame": "1",
//'机箱位置代号',
"host": "1",
//'位置拼接(机房位置代号.机架位置代号.机箱位置代号)',
"lowAddr": "1",
//'刀片位置',
"blade": 12,
//'板卡位置',
"card": 34,
//'板卡型号:RK_3399(数据库默认值)、MTK_G90',
"deviceBoard": "10",
//'BMC的IP地址',
"bmcIp": "1",
//'宿主机IP地址',
"hostIp": "1",
// '宿主机端口'
"hostPort": 12,
//虚拟机一
"virtualPhones": [
{
//'虚拟机容器ID(docker标识)',
"containerId": "123",
//'虚拟机容器ID(docker标识)',
"sn":"宿主机SN_innerNetPort",
//'虚拟机IP地址',
"virtualIp": "127.0.0.1",
//'推拉流映射端口',
"videoMappingPort": 9100,
//内网映射IP
"innerNetIp":"127...0",
//内网映射端口
"innerNetPort": 12
}]
}]
返回示例
{
"status": 0,(0 :成功 1:失败)
"msg": "宿主机注册成功",
}
{
"status": 1,(0 :成功 1:失败)
"msg": "宿主机注册失败",
}
2 宿主机重启
简要描述:
- 宿主机重启(需RSA验签名)
请求URL:
http://xx.com/api/virtual/v1/virtualManage/hostRestart
请求方式:- POST
入参示例
{
"hostId":10113 宿主机id
}
返回示例
{
"status": 0,(0 :成功 1:失败)
"msg": "宿主机重启成功",
}
{
"status": 1,(0 :成功 1:失败)
"msg": "宿主机重启失败",
}
3 虚拟机重启
简要描述:
- 虚拟机重启(需RSA验签名)
请求URL:
http://xx.com/api/virtual/v1/virtualManage/virtualRestart
请求方式:
- POST
入参示例
{
sn:"12" 虚拟机sn
}
返回示例
{
"status": 0,(0 :成功 1:失败)
"msg": "虚拟机重启成功",
}
{
"status": 1,(0 :成功 1:失败)
"msg": "虚拟机重启失败",
}
4 虚拟机删除
简要描述:
- 虚拟机删除(需RSA验签名)
请求URL: http://xx.com/api/virtual/v1/virtualManage/virtualDelete
请求方式:
- POST
入参示例
{
sn:"12" 虚拟机sn
}
返回示例
{
"status": 0,(0 :成功 1:失败)
"msg": "虚拟机删除成功",
}
{
"status": 1,(0 :成功 1:失败)
"msg": "虚拟机删除失败",
}
5 虚拟机创建
简要描述:
- 虚拟机创建(需RSA验签名)
请求URL:
http://xx.com/api/virtual/v1/virtualManage/virtualCreate
请求方式:
- POST
入参示例
{
"virtualCreateNum":2,(最多2,最少1) 虚拟机创建个数
"hostId":10113, 宿主机id
"innerNetIp":127.0.0.1, 虚拟机IP(内网映射IP)
"sn":"123132132" 宿主机唯一标识sn
}
返回示例
{
"status": 0,(0 :成功 1:失败)
"msg": "虚拟机创建成功",
}
{
"status": 1,(0 :成功 1:失败)
"msg": "虚拟机创建失败",
}
6 虚拟机注册的所有数据同步
简要描述:
- 虚拟机注册的所有数据同步
请求URL: http://xx.com/api/virtual/v1/virtualWeb/virtualSyncData
请求方式:
- POST
入参示例
{
"containerId":"1", varchar(32) not null default '' comment '虚拟机容器ID(docker标识)',
"sn":"1" , varchar(128) comment '虚拟机sn',
"virtualIp":"1" , varchar(64) comment '虚拟机IP地址',
"videoMappingPort":1, int(8) comment '推拉流映射端口',
"innerNetIp":"1", varchar(64) comment '内网映射IP地址',
"innerNetPort":1, int(8) comment '内网映射端口',
//外网IP和端口由管理人员手动设置
"outerNetIp":"1", varchar(64) comment '外网映射IP地址',
"outerNetPort":1, int(8) comment '外网映射端口',
"usedStatus":"10", varchar(8) default '10' comment '分配状态(10:未分配、20:已分配)',
"userId":1, bigint(20) comment '分配用户,对应t_user_vital.id',
"userPhone":"1", varchar(32) comment '用户号码,对应t_user_vital.phone_number',
"createBy":"JWTUtil.username" varchar(64) comment '创建人',
}
返回示例
{
"status": 0,(0 :成功 1:失败)
"msg": "虚拟机注册数据同步成功",
}
{
"status": 1,(0 :成功 1:失败)
"msg": "虚拟机注册数据同步失败",
}
7 设备映射的ip和端口信息数据同步批量
简要描述:
- 设备映射的ip和端口信息数据同步批量或单个(安卓卡用户手机 使用状态同步接口)
请求URL:
http://xx.com/api/virtual/v1/virtualWeb/deviceSyncData
请求方式:
- POST
入参示例
{
"sn": "123132132", 唯一标识sn号
"outerNetIp": "127.0.0.1", 外网ip
"outerNetPort":80, 外网端口
"usedStatus":"10", 分配状态(10:未分配、20:已分配)
"userId":12, 用户id
"userPhone":"13000000000" 用户手机号
}
返回示例
{
"status": 0,(0 :成功 1:失败)
"msg": "外网IP端口同步成功",
}
{
"status": 1,(0 :成功 1:失败)
"msg": "外网IP端口同步失败",
}
8 宿主机列表信息
简要描述:
- 宿主机列表信息
请求URL:
http://xx.com/api/virtual/v1/virtualWeb/selectAllHostInfo
请求方式:
- POST
入参示例
{
"sn": "123132132" --- 卡唯一标识sn号
"blade":123132132 -- 刀片id
"card":123123 -- 板卡id
"hostIp":"127.0.0.1" -- 宿主机IP
"pageNum":1 -- 页码
"pageSize":10 -- 每页大小
}
返回示例
{
"msg": "成功",
"data":{
}
}
9 虚拟化详情列表信息(宿主机下)
简要描述:
- 虚拟化详情列表信息(宿主机下) 最多2条信息
请求URL:
http://xx.com/api/virtual/v1/virtualWeb/selectHostByVirtual
请求方式:
- POST
入参示例
{
"hostId":12 -- 宿主机ID
"pageNum":1 -- 页码
"pageSize":10 -- 每页大小
}
返回示例
{
"msg": "成功",
"data":{
}
}
10 宿主机刀片/板卡下拉列表
简要描述:
- 宿主机刀片/板卡下拉列表
请求URL:
http://xx.com/api/virtual/v1/virtualWeb/selectCardList
请求方式:
- POST
返回示例
{
"status": 0,
"msg": "请求成功",
"data": [
{
{
"name": "11", --刀片位置
"data": [
{
"name": [
"34" --板卡位置
]
}
]
},
{
"name": "12",
"data": [
{
"name": [
"34",
"35"
]
}
]
},
{
"name": "13",
"data": [
{
"name": [
"35",
"36"
]
}
]
},
{
"name": "14",
"data": [
{
"name": [
"37"
]
}
]
},
{
"name": "15",
"data": [
{
"name": [
"38"
]
}
]
}
]
}
1 站点列表
-
**简要描述:**当前机房地区站点设备使用情况
-
请求方式:
get
-
请求URL:
http://ip/api/storage/v1/site/switch/area/list
入参不变
-
返回数据示例:
多了一个响应参数字段供显示
“percentageMsg”:“空闲”- 空闲:
- 一般:
- 繁忙:
注意:调用迁移接口/api/storage/v1/site/switch/start
status 状态为2 请弹出让用户 排队窗口
{
"status": 3,
"msg": "RBD迁移失败,不符合迁移条件,请让用户排队"
}
2 RBD迁移记录
- **简要描述:**获取所有地区情况
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/rbdMoveRecordInfo
- **是否携带token:**是
- 请求参数说明:
{
"userCardId": 823,
"pageNum": 1,
"pageSize":10
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
userCardId | int | 卡id(t_user_card.id) |
pageNum | int | 页码 |
pageSize | int | 每页大小 |
- 返回数据示例:
{
"status": 0,
"msg": "请求成功",
"data": {
"pageNum": 1,
"pageSize": 10,
"size": 3,
"startRow": 1,
"endRow": 3,
"total": 3,
"pages": 1,
"list": [
{
"applyTime": "2021年03月30日16:09:21",
"startCity": "长沙市",
"endCity": "深圳市",
"moveStatus": "成功"
},
{
"applyTime": "2021年03月30日16:09:21",
"startCity": "深圳市",
"endCity": "长沙市",
"moveStatus": "成功"
},
{
"applyTime": "2021年03月30日16:09:21",
"startCity": "长沙市",
"endCity": "深圳市",
"moveStatus": "成功"
}
],
"prePage": 0,
"nextPage": 0,
"isFirstPage": true,
"isLastPage": true,
"hasPreviousPage": false,
"hasNextPage": false,
"navigatePages": 8,
"navigatepageNums": [
1
],
"navigateFirstPage": 1,
"navigateLastPage": 1,
"firstPage": 1,
"lastPage": 1
}
}
- 返回参数说明
键 | 类型 | 说明 |
---|---|---|
applyTime | date | 申请迁移时间 |
startCity | string | 迁移前地址 |
endCity | String | 迁移后地址 |
3 获取排队数量
- **简要描述:**提供该节点的任务排队数量(原节点,目标节点),数量大于0更新t_partition_move_task数据,数量为0表示可以迁移-调用站点迁移接口
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/getTaskCount
- **是否携带token:**是
- 请求参数说明:
{
"userCardId": 823,
"areaId": 1
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
userCardId | int | 安卓卡id(t_user_card.id) |
areaId | int | 切换到的站点id(t_area.id) |
- 返回数据示例:
{
"status": 0,
"msg": "请求成功",
"data":5
}
- 返回参数说明
键 | 类型 | 说明 |
---|---|---|
data | int | 排队数量 |
4 用户确认排队弹窗 提供该任务预计的排队所需要的时间
- **简要描述:**提供该任务预计的排队所需要的时间
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/getTaskTime
- **是否携带token:**是
- 请求参数说明:
{
"userCardId": 823,
"areaId": 1
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
userCardId | int | 安卓卡id(t_user_card.id) |
areaId | int | 切换到的站点id(t_area.id) |
- 返回数据示例:
{
"status": 0,
"msg": "请求成功",
"data":"4"
}
- 返回参数说明
键 | 类型 | 说明 |
---|---|---|
data | int | 预估时间(小时) |
5用户确认排队 使用该接口记录用户排队成功
- **简要描述:**用户确认排队 使用该接口记录用户排队成成功
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/addTask
- **是否携带token:**是
- 请求参数说明:
{
"userCardId": 823,
"areaId": 1
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
userCardId | int | 安卓卡id(t_user_card.id) |
areaId | int | 切换到的站点id(t_area.id) |
- 返回数据示例:
{
"status": 0,
"msg": "RBD迁移排队成功"
}
6退出排队
- **简要描述:**退出排队,更新为 迁移取消(状态 4)
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/logoutMove
- **是否携带token:**是
- 请求参数说明:
{
"userCardId": 823
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
userCardId | int | 安卓卡id(t_user_card.id) |
- 返回数据示例:
{
"status": 0,
"msg": "迁移排队取消成功"
}
7获取排队当前序列号
- **简要描述:**当前排队处于第几位
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/getLocationCount
- **是否携带token:**是
- 请求参数说明:
{
"userCardId": 3775
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
userCardId | int | 安卓卡id(t_user_card.id) |
- 返回数据示例:
{
"status": 0,
"msg": "当前排队处于第几位"
"date":1
}
1 迁移管理列表
- **简要描述:**迁移管理列表查询信息
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/selectAllRbdMoveInfo
- **是否携带token:**是
- 请求参数说明:
{
"pageNum": 1,
"pageSize":10
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
pageNum | int | 页码 必传 |
pageSize | int | 每页大小 必传 |
username | int | 用户名 查询传 |
diskName | int | 云机名 查询传 |
createTime | int | 创建时间 查询传 |
runStatus | int | 迁移状态(-1:等待中,0:迁移失败,1:迁移成功,2:迁移中,3:暂停中,4:取消) 查询传 |
areaName
- 返回数据示例:
{
"status": 0,
"msg": "请求成功",
"data": {
"pageNum": 1,
"pageSize": 10,
"size": 5,
"startRow": 1,
"endRow": 5,
"total": 5,
"pages": 1,
"list": [
{
"id": 1,
"storeTaskId": 0,
"username": null,
"diskName": null,
"startPoint": "深圳市",
"endPoint": "长沙市",
"startTime": "2021年04月02日18:05:35",
"finishTime": "2021年04月02日18:35:45",
"oldRbdname": "lf50851e433843f6b8c2a4545d5bf799008",
"newRbdname": "t816d934b9b843d997b28f1bdf297244",
"moveStatus": 2
},
{
"id": 3,
"storeTaskId": 0,
"username": null,
"diskName": null,
"startPoint": "长沙市",
"endPoint": "深圳市",
"startTime": "2021年04月02日18:05:35",
"finishTime": "2021年04月02日18:35:45",
"oldRbdname": "gef41a00ad2b438f81827be3ebf09689003",
"newRbdname": "ydd751272f664802b340ec92395a2e1a",
"moveStatus": 1
},
{
"id": 5,
"storeTaskId": 0,
"username": null,
"diskName": null,
"startPoint": "深圳市",
"endPoint": "长沙市",
"startTime": "2021年04月02日18:05:35",
"finishTime": "2021年04月02日18:35:45",
"oldRbdname": "lf50851e433843f6b8c2a4545d5bf799009",
"newRbdname": "p227951403e8495a968dc7e25c483bab",
"moveStatus": 2
},
{
"id": 7,
"storeTaskId": 0,
"username": null,
"diskName": null,
"startPoint": "深圳市",
"endPoint": "长沙市",
"startTime": "2021年04月02日18:05:35",
"finishTime": "2021年04月02日18:35:45",
"oldRbdname": "r578aab93862482688532ed360f7fd77001",
"newRbdname": "p3a81ebe7f3e4cafbde217819505e39b",
"moveStatus": 1
},
{
"id": 13,
"storeTaskId": 0,
"username": null,
"diskName": null,
"startPoint": "深圳市",
"endPoint": "长沙市",
"startTime": "2021年04月02日18:05:35",
"finishTime": "2021年04月02日18:05:45",
"oldRbdname": "r8f47ae8d9aa41dfbbd452038111ae25",
"newRbdname": "xdc4446aa7d94a77aee99ad637fd4f47",
"moveStatus": 1
}
],
"prePage": 0,
"nextPage": 0,
"isFirstPage": true,
"isLastPage": true,
"hasPreviousPage": false,
"hasNextPage": false,
"navigatePages": 8,
"navigatepageNums": [
1
],
"navigateFirstPage": 1,
"navigateLastPage": 1,
"firstPage": 1,
"lastPage": 1
}
}
-
返回参数说明
/**
- t_partition_move_task.id(表id)
*/
private Integer id;
/**
- t_partition_move_task.store_task_id(任务id)
*/
private Integer storeTaskId;
/**
- 用户名
*/
private String username;
/**
- 云手机名称
/
private String diskName;
/* - 原站点
/
private String startPoint;
/* - 目标站点
*/
private String endPoint;
/**
- 迁移开始时间
/
private Date startTime;
/* - 迁移结束时间
*/
private Date finishTime;
/**
- 原RBD名称
/
private String oldRbdname;
/* - 目标RBD名称
*/
private String newRbdname;
/**
- ‘迁移状态(-1:等待中,0:迁移失败,1:迁移成功,2:迁移中,3:暂停中,4:取消)’
*/
private Integer moveStatus;
- t_partition_move_task.id(表id)
2 站点策略列表查询信息
- **简要描述:**站点策略列表查询信息
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/selectAllRbdStrategyInfo
- **是否携带token:**是
- 请求参数说明:
{
"pageNum":1,
"pageSize":10
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
pageNum | int | 页码 必传 |
pageSize | int | 每页大小 必传 |
areaName | String | 区域名称 查询传 |
machineRoom | String | 绑定机房 查询传 |
strategyStatus | int | 策略状态(0:关 1:开) 查询传 |
- 返回数据示例:
{
"status": 0,
"msg": "请求成功",
"data": {
"pageNum": 1,
"pageSize": 10,
"size": 2,
"startRow": 1,
"endRow": 2,
"total": 2,
"pages": 1,
"list": [
{
"id": 1,
"city": "深圳市",
"room": "L3",
"transferStatus": 0,
"nowCount": 2,
"waitCount": 0,
"successCount": 3,
"parallelNum": 4,
"nodeNum": 3
},
{
"id": 3,
"city": "长沙市",
"room": "B3",
"transferStatus": 0,
"nowCount": 2,
"waitCount": 0,
"successCount": 3,
"parallelNum": 0,
"nodeNum": 0
}
],
"prePage": 0,
"nextPage": 0,
"isFirstPage": true,
"isLastPage": true,
"hasPreviousPage": false,
"hasNextPage": false,
"navigatePages": 8,
"navigatepageNums": [
1
],
"navigateFirstPage": 1,
"navigateLastPage": 1,
"firstPage": 1,
"lastPage": 1
}
}
-
返回参数说明
/**
- t_storage_info.id(表id)
*/
private Integer id;
/**
- 区域名称
*/
private String city;
/**
- 绑定机房
*/
private String room;
/**
- 策略开关
/
private Integer transferStatus;
/* - 当前迁移数量
/
private Integer nowCount;
/* - 等待迁移数量
/
private Integer waitCount;
/* - 迁移成功数
/
private Integer successCount;
/* - 并行迁移数
/
private Integer parallelNum;
/* - 存储节点数
*/
private Integer nodeNum;
- t_storage_info.id(表id)
3 (站点)RBD设置并行数 (需要环境验证python端的RBD接口)
- **简要描述:**RBD设置并行数
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/setConcurrentCount
- **是否携带token:**是
- 请求参数说明:
{
"parallelNum": 4,
"storageInfoId": 1
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
userCardId | int | 数量 |
storageInfoId | int | t_storage_info.id(表id) |
- 返回数据示例:
{
"status": 0,
"msg": "并行迁移数设置成功"
}
4(站点)更新策略开关
- **简要描述:**更新策略开关
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/setStrategyStatus
- **是否携带token:**是
- 请求参数说明:
{
"strategyStatus": 0,
"storageInfoId": 1
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
strategyStatus | int | 策略状态(0:关 1:开) |
storageInfoId | int | t_storage_info.id(表id) |
- 返回数据示例:
{
"status": 0,
"msg": "策略开启成功"
}
{
"status": 0,
"msg": "策略关闭成功"
}
5(迁移)RBD重试(需要环境验证python端的RBD接口)
- **简要描述:**RBD重试
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/rbdRestart
- **是否携带token:**是
- 请求参数说明:
{
"taskId": "0"
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
taskId | String | t_partition_move_task.store_task_id(任务id) |
- 返回数据示例:
{
"status": 0,
"msg": "rbd迁移重试成功"
}
6(迁移)RBD取消(需要环境验证python端的RBD接口)
- **简要描述:**RBD取消
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/rbdCancel
- **是否携带token:**是
- 请求参数说明:
{
"taskId": "0"
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
taskId | String | t_partition_move_task.store_task_id(任务id) |
- 返回数据示例:
{
"status": 0,
"msg": "取消迁移成功"
}
7(迁移)RBD迁移详情(需要环境验证python端的RBD接口。。。)
- **简要描述:**RBD迁移详情
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/rbdMoveInfo
- **是否携带token:**是
- 请求参数说明:
{
"taskId": "0"
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
taskId | String | t_partition_move_task.store_task_id(任务id) |
- 返回数据示例:
{
"status": 0,
"msg": "获取rbd迁移详情成功",
"data":
[
{ "task_id": 1,
"now_step": "远端集群解压导入",
"now_step_num": 4,
"now_step_code": "import",
"status": "being",
"transfer_audit": [
{ "step": "本地集群导出rbd",
"step_status": "success",
"step_num": 1,
"step_code": "export",
"start_time": "2019‐11‐15 17:35:16",
"end_time": "2019‐11‐15 17:35:16" },
{ "step": "本地集群压缩rbd",
"step_status": "success",
"step_num": 2,
"step_code": "compress",
"start_time": "2019‐11‐15 17:35:16",
"end_time": "2019‐11‐15 17:35:16" },
{ "step": "远端集群下载压缩包",
"step_status": "success",
"step_num": 3,
"step_code": "download",
"start_time": "2019‐11‐15 17:35:16",
"end_time": "2019‐11‐15 17:35:16" }
]
}
]
}
8(迁移)删除RBD迁移记录 注意这个id不一样(请查看本页面接口①迁移列表)
- **简要描述:**RBD迁移详情
- 请求方式:
POST
- 请求URL:
http://ip/api/storage/v1/rbdMove/deleteMoveRecord
- **是否携带token:**是
- 请求参数说明:
单个
{
"taskId": "0"
}
批量
{
"taskId": "0,1,2"
}
- 请求参数说明
键 | 类型 | 说明 |
---|---|---|
taskId | String | t_partition_move_task.id(表id) |
- 返回数据示例:
{
"status": 0,
"msg": "rdb任务移除成功"
}
- 请求类型:POST
- **简要描述:**用户使用外链下载(好友-添加好友) / 官网页面下载(android/ios/pc)
http://test.androidscloud.com/api/user/promote/imInvitation?type=3&username=MkgzTDgxNjA5MjA3Nzgy
http://www.androidscloud.com/ - 请求URL:
/api/public/v4/access/user/burialSiteLog
- 请求阐述示例:
http://.31.223/api/public/v4/access/user/burialSiteLog
- 请求参数示例:
# 推广页面下载埋点
[
{
"platform":4,(固定4,表示web端)
"visitType":4,(4:推广页面下载 5:官网PC端下载 6:官网android端下载 7:官网ios端下载)
"time":"1609235353024",(用户点击下载按钮的时间戳)
"phoneNum":"13311111111",
"downLoaderCount": 10000,(总下载次数,用户点击下载按钮的叠加数量)
"browserType": "浏览器信息 火狐4.5"(浏览器信息加版本号)
}
]
# PC/android/IOS下载埋点
[
{
"platform":4,(固定4,表示web端)
"visitType":5,(4:推广页面下载 5:官网PC端下载 6:官网android端下载 7:官网ios端下载)
"time":"1609235353024",(用户点击下载按钮的时间戳)
"downLoaderCount": 20000,(总下载次数,用户点击下载按钮的叠加数量)
"browserType": "浏览器信息 火狐4.5"(浏览器信息加版本号)
}
]
- 请求参数说明:
键 | 类型 | 描述 |
---|---|---|
platform | int | 4(表示web端) |
visitType | int | (4:推广页面下载 5:官网PC端下载 6:官网android端下载 7:官网ios端下载) |
time | string | (用户点击下载按钮的时间戳) |
phoneNum | string | 推广页面点击下载按钮时 录入的手机号 |
ip | string | 用户ip地址(后端获取 getHeader(X-real-ip)) |
downLoaderCount | int | (总下载次数,用户点击下载按钮的叠加数量) |
browserType | string | (浏览器信息加版本号) |
- 返回数据示例:
{
"status": 0,
"msg": "成功",
"data": null
}
- 响应参数说明:
键 | 类型 | 说明 |
---|---|---|
status | int | 0:成功、1:失败 |
msg | String | 描述 |
data | String | 返回数据前端不需要数据默认null |