操做日誌設計思路

需求

在產品的使用過程當中,常常要針對某個訂單表、申請表等進行操做日誌記錄,但願有一個統一的服務能夠一次性解決這個痛點數據庫

設計思路

服務結構圖
結構圖app

  • client模塊註解介紹:
註解 介紹 參數
@OperationLog 在DAO(MAPPER)層的方法上添加此註解,表示會發送日誌請求 tableName-表名;type-操做類型;remark-備註;primaryTable-是否主表,若是有@Transactional註解 須要標記此字段
@OperationLogAlias 在參數實體類的字段裏,添加此字段,表示顯示的名字,不以數據庫的備註,而是以此 key-字典表的key;type-別名類型;dataBaseName-庫名;tableName-表名;fieldName-字段名;fieldId-表的id;attributeAlias-顯示名字的別名
@OperationLogIgnore 在參數實體類的字段裏,添加此字段,表示忽略此字段,不會保存到日誌服務
  • 數據庫設計

操做表operation_{{databaseName}},例:保存car庫的車輛申請信息apply,databaseName:car數據庫設計

字段 類型 備註
database_name char 目標的數據庫名,如:car
table_name char 表名,如:apply表
object_id char apply表的主鍵id
group_id char 分組id,apply有擴展信息也要保存,那麼在同一組,通常取apply表的主鍵id
operator char 操做人姓名
operation_type char 操做類型名稱,好比,新增 保存
operation_alias char 操做的別名,對於調皮的產品,老是有奇怪的想法,好比:某某人,左腳一跺,一條訂單隱隱浮現到訂單榜中

屬性表attribution_{{databaseName}}設計

字段 類型 備註
operation_id char 操做表id
attribute_alias char 屬性別名
old_value char 舊值
new_value char 新值
remark char 備註:將{{attribute_alias}}由{{old_value}}改爲{{new_value}},寫在觸發器插入的時候
相關文章
相關標籤/搜索