请问“要显示这个版本修改了什么”这个功能,应该如何做比较好? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BraveXaiver
V2EX    问与答

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

  •  
  •   BraveXaiver 2023-07-31 09:08:15 +08:00 1763 次点击
    这是一个创建于 810 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在页面上,用户可以点进一笔订单的详情页查看,并且可以修改一些字段。这个详情页里大概有五十多个字段,其所对应的 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  
    &nbp;  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     Solana     2482 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 11:29 PVG 19:29 LAX 04:29 JFK 07:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86