撤销设备分享

验证状态:已源码核验、未联调(无 app 调用图);services 基线:源码归纳 @ 2026-09-14

用途与场景

分享发起方撤回一条自己发出的分享,是发起方一侧的退场动作(与受赠方一侧的解除设备分享相对)。App「取消分享」动作按 deviceShareId 发起:服务端把分享记录置 cancel share(写 cancelTime)后软删,并同步删除目标租户中的 To be confirm share / confirm share 分享投影——待确认与已确认的分享都可撤销。

发起方的分享记录 ID 从设备分享记录列表取得;分享全生命周期的 state 流转见发起设备分享

App 现役依据

判定证据 内容
旧 app 文档收录记录 旧 app 文档仓在 docs/api/main-api/device/data-acquisition-device/cancelShareForPersonalSpace/ 收录本端点,属 App 既有调用面
两代分工语义 /v1/retail 第二代无 cancel 对应物;撤销写路径现役只有本端点(v1 侧仅分享发起有替代端点)
后端持续维护迹象 撤销链路与绑定/解绑共享同一 service 与契约测试,第一代 2026-09 仍有维护提交

端点

POST /main-service/main-api/device/data-acquisition-device/cancelShareForPersonalSpace — 分享发起方撤回一条自己发出的分享(发起方一侧的退场动作)

端点全量事实(参数、请求/响应字段、错误码、权限点)见清单层 device · data-acquisition-device 采集设备;业务语义(wire 惯例、限频、租户声明等)见设备业务 · data-acquisition-device 采集设备

动线与完成判据

status=200data=true 表示撤销完成。发起方再次拉取分享记录列表应不含该条(软删行被 delete_time is null 过滤);受赠方再次拉取设备列表应不再包含该设备。

错误与边界

业务失败均为业务拒绝族,error 为异常消息原文(判定口径见错误响应差异):

error 原文 触发条件
Device share not exists deviceShareId 在当前租户(发起方租户)无有效分享记录:ID 不存在、已撤销/已解除/已随归属转移退场、或记录属于他人租户

Bean Validation 不拦截空值(DTO 无 @NotBlank):deviceShareId 缺省时查询条件为空匹配,同样落到 Device share not exists

边界:

  • 撤销对待确认与已确认分享都有效;确认后撤销同样使受赠方失去设备。
  • 已撤销的分享可对同一目标重新发起(重复分享校验只统计活跃记录)。
  • 分享来的设备不经本端点退场——受赠方的退场动作是解除设备分享,且对分享投影不得调用解绑

调用关系与资源清理

无客户端长连接资源需要释放。撤销成功后发起方应刷新分享记录列表,受赠方设备列表的可见变化依赖其下次拉取;服务端不向受赠方推送实时通知。

已知缺口

未执行真实联调:撤销与受赠方侧列表刷新的最终一致延迟、撤销与受赠方确认并发到达时的终态均无 App 实测佐证。