工作手机模式切换
需求文档 v1.0 · 2026-04-27
概述与功能
实现工作手机解绑与恢复普通设备功能。服务端通过 code 或 status 下发指令,客户端执行相应操作。
状态定义
| 状态 | 说明 | 客户端动作 |
|---|---|---|
| 1 | 工作手机模式 | 保持当前状态 |
| 2 | 需要卸载工作APP | 卸载APP转为普通手机 |
| 3 | 普通手机模式 | 保持当前状态 |
| 4 | 需要安装工作APP | 退出App等待安装 |
功能一:解绑
不管工作手机系统是否在线还是不在线,都可以解除绑定工作手机。
- 解绑后设备需要登出
- 任意接口请求返回
code=3 - 必须删除 session(之前缺少这个步骤)
响应要求:解绑后所有接口返回 code=3,客户端收到后清除本地登录状态并跳转登录页
功能二:恢复普通设备
将工作手机恢复为普通手机模式:
- 卸载拨号与 SCRM 应用
- 登出设备
- 删除 session
- 可按账户恢复
服务端解绑/恢复流程(管理后台操作)
flowchart TD
A["初始状态"] --> B["管理员点击恢复普通设备"]
B --> C["按钮变灰"]
C --> D["客户端检查status=2"]
D --> E["卸载APP
删除Session"] E --> F["reportResult
status=2"] F --> G["变为普通手机"] G --> H["管理员点击恢复工作手机"] H --> I["按钮变灰"] I --> J["客户端安装APP"] J --> K["reportResult
status=1"] K --> L["恢复工作手机"] L --> A
删除Session"] E --> F["reportResult
status=2"] F --> G["变为普通手机"] G --> H["管理员点击恢复工作手机"] H --> I["按钮变灰"] I --> J["客户端安装APP"] J --> K["reportResult
status=1"] K --> L["恢复工作手机"] L --> A
API 接口
3.1 查询设备状态
POST /service/bill/checkPending
{
"imei": "864379040123456"
}
| 字段 | 类型 | 说明 |
|---|---|---|
| imei | string | 设备IMEI |
响应
{
"status": 1,
"success": true
}
| 字段 | 类型 | 说明 |
|---|---|---|
| status | int | 期望状态(1/2/3/4) |
| success | boolean | 是否成功 |
3.2 上报设备状态
POST /service/bill/reportResult
{
"imei": "864379040123456",
"status": 3
}
| 字段 | 类型 | 说明 |
|---|---|---|
| imei | string | 设备IMEI |
| status | int | 已完成状态(2或3,解绑后上报1) |
响应
{
"success": true
}
WEB端改动
4.1 设备列表解绑
功能:在设备列表中对工作手机进行解绑操作
- 设备列表增加"解绑"按钮
- 点击后弹出确认框
- 解绑成功后设备状态变更
4.2 设备详情恢复普通设备
功能:在设备详情页将工作手机恢复为普通设备
- 设备详情页增加"恢复普通设备"按钮
- 点击后下发 status=2 指令
- 客户端完成操作后回调
4.3 账号设置中批量操作
功能:在账号设置中支持批量解绑和批量恢复
| 功能 | 说明 |
|---|---|
| 全部解绑 | 将该账号下所有工作手机解绑 |
| 全部恢复普通设备 | 将该账号下所有工作手机恢复为普通设备 |
开发任务清单
APP端
| 任务 | 优先级 | 说明 |
|---|---|---|
| checkPending接口调用 | P0 | 查询设备状态 |
| reportResult接口调用 | P0 | 上报设备状态 |
| status=2时处理 | P0 | 卸载APP删除Session |
| status=4时处理 | P0 | 退出App等待安装 |
| code=3时处理 | P0 | 清除本地登录状态跳转登录页 |
Service端
| 任务 | 优先级 | 说明 |
|---|---|---|
| checkPending接口 | P0 | POST /service/bill/checkPending |
| reportResult接口 | P0 | POST /service/bill/reportResult |
| 解绑后返回code=3 | P0 | 任意接口返回code=3 |
| 删除session | P0 | 解绑和恢复时删除 |
| IMEI维度状态查询 | P0 | 支持IMEI维度的状态查询 |
| 上报接口幂等 | P0 | 上报接口支持幂等 |
WEB端
| 任务 | 优先级 | 说明 |
|---|---|---|
| 设备列表解绑按钮 | P0 | 设备列表增加"解绑"按钮 |
| 解绑确认弹窗 | P0 | 点击后弹出确认框 |
| 设备状态变更 | P0 | 解绑成功后设备状态变更 |
| 设备详情恢复按钮 | P0 | 设备详情页增加"恢复普通设备"按钮 |
| 下发status=2指令 | P0 | 点击后下发status=2指令 |
| 客户端回调处理 | P0 | 客户端完成操作后回调 |
| 账号设置全部解绑 | P0 | 批量解绑该账号下所有工作手机 |
| 账号设置全部恢复 | P0 | 批量恢复为普通设备 |
验收标准
| 验收项 |
|---|
| 提供 POST /service/bill/checkPending 接口 |
| 提供 POST /service/bill/reportResult 接口 |
| 解绑接口返回 code=3 时必须删除 session |
| 解绑后任意接口返回 code=3 |
| 恢复普通设备时删除 session |
| 状态值定义符合预期(1/2/3/4) |
| 上报接口支持幂等 |
| 支持 IMEI 维度的状态查询 |
| WEB端 - 设备列表解绑功能 |
| WEB端 - 设备详情恢复普通设备 |
| WEB端 - 账号设置全部解绑 |
| WEB端 - 账号设置全部恢复普通设备 |
交互式 Demo
📱 设备列表
iPhone 12 Pro 1
工作手机模式
iPhone 13 3
普通手机模式
Samsung S21 1
工作手机模式
📋 操作日志
[00:00:00] Demo 已初始化