BraveXaiver
V2EX  ›  问与答

请问“要显示这个版本修改了什么”这个功能,应该如何做比较好?

  •  
  •   BraveXaiver · Jul 31, 2023 · 2579 views
    This topic created in 1196 days ago, the information mentioned may be changed or developed.
    在页面上,用户可以点进一笔订单的详情页查看,并且可以修改一些字段。这个详情页里大概有五十多个字段,其所对应的 VO 大概有两三层的深度。

    用户修改了之后,会有审核员来审核这个修改。审核员希望说能清晰地看到用户到底做了什么修改。

    请问下想实现这个功能,前后端(定死了用 js 和 java )该怎么设计比较好呢?

    谢谢
    9 replies  •  2023-07-31 14:52:02 +08:00
    mineralsalt
    mineralsalt
    Jul 31, 2023
    1
    把修改记录先存到 redis 里面, 审核员那边显示与数据库记录的变化字段, 审核通过再更新到数据库里面呗
    evalcony
    evalcony
    Jul 31, 2023
    2
    数据库加表。然后把用户每次提交之前的操作相关数据存进去。
    paopjian
    paopjian
    Jul 31, 2023
    3
    数据库加一条版本号记录,每次修改新增一条数据,改版本号
    nekomiao
    nekomiao
    Jul 31, 2023
    4
    js 可以用 diff.js
    jackbrother
    jackbrother
    Jul 31, 2023
    5
    gpt
    Shamiko
    Shamiko
    Jul 31, 2023
    6
    加版本号,然后 diff 显示
    coderwl
    coderwl
    Jul 31, 2023❤️1
    7
    我做过这个,主要是用来审计用户的修改信息,推荐一个好用的库 javers
    kasusa
    kasusa
    Jul 31, 2023
    8
    我想可以导出成 2 个 json ,然后两个 json 用工具一对比,这可能对审核员要求高一点。但是应该很好开发
    sentinelK
    sentinelK
    Jul 31, 2023❤️1
    9
    如果对性能不敏感,两个 model 直接反射遍历所有字段,比较 value 应该就可以吧?
    只要两个相同 key 的 value 不相等,那么就单独列出即可。

    当然,前端把这个做成业务也行。(做在提交前检查中,如果域和 init 的值有区别,则记录一条变化日志,最终随订单的 update 一起提交。)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1759 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 00:36 · PVG 08:36 · LAX 16:36 · JFK 19:36
    ♥ Do have faith in what you're doing.