← 返回文档中心

工作手机模式切换

需求文档 v1.1 · 2026-05-21

概述与功能

实现工作手机解绑与恢复普通设备功能。服务端通过 codestatus 下发指令,客户端执行相应操作。

状态定义

设备状态用 status 表示,取值范围 1-4:

状态说明客户端动作
1工作手机模式保持当前状态,正常工作
2需要卸载工作APP卸载APP及相关配置,转为普通手机
3普通手机模式保持当前状态,正常工作
4需要安装工作APP退出App,等待重新安装

核心流程

流程一:工作手机 → 普通设备

管理后台点击「恢复普通设备」→ 服务端下发 status=2 → 客户端卸载SCRM/CRM等应用 → 清理配置 → 上报 status=3 → 退出登录。

  • 操作入口:WEB管理后台 → 设备详情 → 「恢复普通设备」按钮
  • 下发指令:status=2需要卸载工作APP
  • 客户端执行:卸载SCRM/CRM/拨号应用、关闭号码隐藏/GPS/录音/应用双开/工厂模式、开启原生拨号、停用黑名单/WIFI白名单
  • 上报结果:卸载完成后调用 reportResult 上报 status=3普通手机模式),随后登出

流程二:普通设备 → 工作手机

管理后台点击「恢复工作手机」→ 服务端下发 status=4 → 客户端上报 status=1 → 退出App → 重新进入后走正常工作手机流程。

  • 操作入口:WEB管理后台 → 设备详情 → 「恢复工作手机」按钮
  • 下发指令:status=4需要安装工作APP
  • 客户端执行:本地缓存设为1,直接退出App(App.exit()
  • 上报结果:退出前调用 reportResult 上报 status=1工作手机模式
  • 恢复完成:App重新启动后走正常登录流程(本地缓存已是1,不进入重置流程)

解绑(独立功能)

解绑是不管当前设备状态如何,直接解除工作手机与设备的绑定关系。与上述两个流程独立。

  • 解绑后设备需要登出
  • 任意接口请求返回 code=3
  • 必须删除 session

服务端解绑/恢复流程(管理后台操作)

flowchart TD subgraph flow1[工作手机 → 普通设备] A1["status=1
工作手机模式"] --> A2["管理员点击
恢复普通设备"] A2 --> A3["下发 status=2
需要卸载APP"] A3 --> A4["卸载SCRM/CRM
清理配置"] A4 --> A5["上报 status=3
reportResult"] A5 --> A6["status=3
普通手机模式"] end subgraph flow2[普通设备 → 工作手机] B1["status=3
普通手机模式"] --> B2["管理员点击
恢复工作手机"] B2 --> B3["下发 status=4
需要安装APP"] B3 --> B4["上报 status=1
退出App"] B4 --> B5["重新登录"] B5 --> B6["status=1
工作手机模式"] end
API 接口

3.1 查询设备状态

POST /service/bill/checkPending

{
  "imei": "864379040123456"
}
字段类型说明
imeistring设备IMEI

响应

{
  "status": 1,
  "success": true
}
字段类型说明
statusint期望状态(1/2/3/4)
successboolean是否成功

3.2 上报设备状态

POST /service/bill/reportResult

{
  "imei": "864379040123456",
  "status": 3
}
字段类型说明
imeistring设备IMEI
statusint已完成状态:工作→普通设备上报3,普通→工作手机上报1

响应

{
  "success": true
}
WEB端改动

4.1 设备列表解绑

功能:在设备列表中对工作手机进行解绑操作

  • 设备列表增加"解绑"按钮
  • 点击后弹出确认框
  • 解绑成功后设备状态变更

4.2 设备详情恢复普通设备

功能:在设备详情页将工作手机恢复为普通设备

  • 设备详情页增加"恢复普通设备"按钮
  • 点击后下发 status=2 指令
  • 客户端完成卸载后上报 status=3

4.3 设备详情恢复工作手机

功能:在设备详情页将普通手机恢复为工作手机

  • 设备详情页增加"恢复工作手机"按钮(设备状态为3时显示)
  • 点击后下发 status=4 指令
  • 客户端上报 status=1 后退出App重新进入

4.4 账号设置中批量操作

功能:在账号设置中支持批量解绑和批量恢复

功能说明
全部解绑将该账号下所有工作手机解绑
全部恢复普通设备将该账号下所有工作手机恢复为普通设备
开发任务清单

APP端

任务优先级说明
checkPending接口调用P0查询设备状态
reportResult接口调用P0上报设备状态
status=2时处理P0卸载APP删除Session
status=4时处理P0退出App等待安装
code=3时处理P0清除本地登录状态跳转登录页

Service端

任务优先级说明
checkPending接口P0POST /service/bill/checkPending
reportResult接口P0POST /service/bill/reportResult
解绑后返回code=3P0任意接口返回code=3
删除sessionP0解绑和恢复时删除
IMEI维度状态查询P0支持IMEI维度的状态查询
上报接口幂等P0上报接口支持幂等

WEB端

任务优先级说明
设备列表解绑按钮P0设备列表增加"解绑"按钮
解绑确认弹窗P0点击后弹出确认框
设备状态变更P0解绑成功后设备状态变更
设备详情恢复按钮P0设备详情页增加"恢复普通设备"按钮
下发status=2指令P0点击后下发status=2指令
下发status=4指令P0普通手机恢复工作手机,下发status=4
客户端回调处理P0客户端完成操作后回调
账号设置全部解绑P0批量解绑该账号下所有工作手机
账号设置全部恢复P0批量恢复为普通设备
验收标准
验收项
提供 POST /service/bill/checkPending 接口
提供 POST /service/bill/reportResult 接口
解绑接口返回 code=3 时必须删除 session
解绑后任意接口返回 code=3
恢复普通设备时删除 session
状态值定义符合预期(1/2/3/4)
工作→普通设备流程:status 2→卸载→reportResult 3
普通→工作手机流程:status 4→reportResult 1→退出App
上报接口支持幂等
支持 IMEI 维度的状态查询
WEB端 - 设备列表解绑功能
WEB端 - 设备详情恢复普通设备
WEB端 - 账号设置全部解绑
WEB端 - 账号设置全部恢复普通设备
交互式 Demo
📱 设备列表
📱
iPhone 12 Pro 1
工作手机模式
📱
iPhone 13 3
普通手机模式
📱
Samsung S21 1
工作手机模式
📋 操作日志
[00:00:00] Demo 已初始化