ITPub博客

首页 > 应用开发 > IT综合 > 字段修改记录操作日志的实现

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

原创 IT综合 作者:Roy155 时间:2021-01-08 15:15:34 0 删除 编辑

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

准备工作: 

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,//操作人
                        });
                }
        });
}

效果:

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69981626/viewspace-2748482/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-08-14

  • 博文量
    41
  • 访问量
    32184