字段修改记录操作日志的实现
Roy
• 发表于:2022-07-27 18:12:32 • 更新于:2023-12-28 16:43:30
1894

目标:

数据敏感字段的修改往往需要记录操作日志,例如客户表中的姓名、身份证等信息,需要系统记录下修改记录,方便以后溯源。

准备工作:

1、创建一个数据表,根据各自需求添加若干个字段,并准备若干条数据以便测试。

字段修改记录操作日志的实现

2、创建一个日志表。添加字段:时间、数据、字段、操作前、操作后、操作人(关联-用户)。

字段修改记录操作日志的实现

实现步骤:

1、新建一个“修改数据表”的功能。

字段修改记录操作日志的实现

字段修改记录操作日志的实现

2、点击功能进入编辑界面,在修改功能的基础上添加一个获取当前用户步骤:点开步骤设置,将id设为查询$$USER。

字段修改记录操作日志的实现

字段修改记录操作日志的实现

3、添加编程步骤。点开步骤的“设置>编程”进入代码编辑界面。

字段修改记录操作日志的实现

 字段修改记录操作日志的实现

4、添加修改前数据、修改后数据、当前用户的参数,并在代码中引用。

字段修改记录操作日志的实现

5、获取当前时间。

        //当前时间

        let date = new Date();

        let YY = date.getFullYear() + '-';

        let MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';

        let DD = (date.getDate() + 1 <= 10 ? '0' + date.getDate() : date.getDate()) + ' ';

        let hh = (date.getHours() + 1 <= 10 ? '0' + date.getHours() : date.getHours()) + ':';

        let mm = date.getMinutes() + 1 <= 10 ? '0' + date.getMinutes() : date.getMinutes();

        let time=YY+MM+DD+hh+mm;

 

6、添加数据表中需要记录修改操作的字段id数据。

        //数据表字段id

        let fields = [

                "5ff44e3fdd9ec8350b2d24df",//字段1,

                "5ff44e45cf250d350cc124d2",//字段2,

                "5ff44e51cf250d350cc124d4",//字段4,

        ];

字段id获取方式为field_数据表>字段名:

字段修改记录操作日志的实现

7、添加可根据字段id获取字段名的map

        //数据表字段名

        let fieldNameMap = {

                "5ff44e3fdd9ec8350b2d24df": "字段1",

                "5ff44e45cf250d350cc124d2": "字段2",

                "5ff44e51cf250d350cc124d4": "字段4",

        };

8、是否需要记录字段修改的判断逻辑

        fields.forEach(field => {

                //对每个字段进行判断

                if (before[field] != after[field]) {

                        //修改前后不相等即有修改,需进行日志记录

 

                }

        });

9、创建日志记录

{

        "5ff44e6ecf250d350cc124d7": time,//时间

        "5ff44e80cf250d350cc124d8": after["5ff44e5ccf250d350cc124d5"],//数据ID

        "5ff44ea0cf250d350cc124d9": fieldNameMap[field],//字段

        "5ff44ea5cf250d350cc124da": before[field],//操作前

        "5ff44eaccf250d350cc124db": after[field],//操作后

        "5ff44eb5cf250d350cc124dc": user._id,//操作人

}

10、至此日志功能已全部实现。完整代码:

async function runProcess($model = model, $plugin = plugin, $params) {

        let before = await $params.before;//修改前的数据

        let after = await $params.after;//修改后的数据

        let user = await $params.user;//当前用户

 

        //当前时间

        let date = new Date();

        let YY = date.getFullYear() + '-';

        let MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';

        let DD = (date.getDate() + 1 <= 10 ? '0' + date.getDate() : date.getDate()) + ' ';

        let hh = (date.getHours() + 1 <= 10 ? '0' + date.getHours() : date.getHours()) + ':';

        let mm = date.getMinutes() + 1 <= 10 ? '0' + date.getMinutes() : date.getMinutes();

        let time = YY + MM + DD + hh + mm;

        //数据表字段id

        let fields = [

                "5ff44e3fdd9ec8350b2d24df",//字段1,

                "5ff44e45cf250d350cc124d2",//字段2,

                "5ff44e51cf250d350cc124d4",//字段4,

        ];

        //数据表字段名

        let fieldNameMap = {

                "5ff44e3fdd9ec8350b2d24df": "字段1",

                "5ff44e45cf250d350cc124d2": "字段2",

                "5ff44e51cf250d350cc124d4": "字段4",

        };

        fields.forEach(field => {

                //对每个字段进行判断

                if (before[field] != after[field]) {

                        //修改前后不相等即有修改,需进行日志记录

                        $plugin.data.saveData("5ff44e6acf250d350cc124d6", {

                                "5ff44e6ecf250d350cc124d7": time,//时间

                                "5ff44e80cf250d350cc124d8": after["5ff44e5ccf250d350cc124d5"],//数据ID

                                "5ff44ea0cf250d350cc124d9": fieldNameMap[field],//字段

                                "5ff44ea5cf250d350cc124da": before[field],//操作前

                                "5ff44eaccf250d350cc124db": after[field],//操作后

                                "5ff44eb5cf250d350cc124dc": user._id,//操作人

                        });

                }

        });

}

测试效果:

字段修改记录操作日志的实现


本文是否对您有帮助?
有帮助
没帮助
您是否遇到了以下问题?
内容过期或不准确
缺少场景、事例
链接有误
太简单,步骤待完善
其他
提交反馈
如需获取即时帮助,请联系
小助理
微信扫码添加小助理
让你的想法快速变成软件吧~