首頁>技術>

資料敏感欄位的修改往往需要記錄操作日誌,例如客戶表中的姓名、身份證等資訊,需要系統記錄下修改記錄,方便以後溯源。

準備工作:

1、在白碼建立一個數據表,根據各自需求新增若干個欄位,並準備若干條資料以便測試。

2、建立一個日誌表。新增欄位:時間、資料、欄位、操作前、操作後、操作人(關聯-使用者)。

實現步驟:

1、新建一個“修改資料表”的功能。

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

24
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 怎樣讓你更快的完成工作去“摸魚”?