如何处理同一个内容被同时编辑

58 阅读1分钟

业务场景:

用户用不同浏览器打开了同一个订单,后一次修改覆盖了前一次修改的内容,导致下单错误。 拓展场景:改变订单信息的任务被创建且未写入前,其他用户修改了订单信息,该任务完成后覆盖了这次修改的内容。

已知实现方案和优劣:

1.(暂定)编辑锁

  • 锁查询接口,前端传入业务 code 和当前业务唯一 id 来创建和查询锁
    • 业务 code 由后端订,保证跨服务唯一性
  • 当有锁存在时返回正在编辑的用户信息
  • 有返回的话,在进入页面和保存页面时出现提示,但非强制拦截(解锁接口可能未成功发起)
    • 进入页面时提示是为了避免用户录入大量信息后无法保存
    • 保存时提示是为了避免用户在页面长期停留后遗忘了进入时提示
  • 在页面组件销毁、浏览器或标签关闭时调用解锁接口

2.数据版本号

  • 缺点:
    • 不能拦截同一时间发起的数据修改