V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
BraveXaiver
V2EX  ›  问与答

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

  •  
  •   BraveXaiver · 2023-07-31 09:08:15 +08:00 · 1391 次点击
    这是一个创建于 489 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在页面上,用户可以点进一笔订单的详情页查看,并且可以修改一些字段。这个详情页里大概有五十多个字段,其所对应的 VO 大概有两三层的深度。

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

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

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

    当然,前端把这个做成业务也行。(做在提交前检查中,如果域和 init 的值有区别,则记录一条变化日志,最终随订单的 update 一起提交。)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2274 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:40 · PVG 09:40 · LAX 17:40 · JFK 20:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.