审计日志接口

版本记录

版本号日期修改内容
0.12.32024-08-15修复已知问题

审计日志

审计日志写入

接口功能

审计日志写入接口用于记录用户登录、注销、查看、编辑、新增、删除、锁定、解锁、业务审计追溯等操作,将审计日志数据服务收集到的数据信息通过提供 HTTP 格式的接口或者异步中间件消息服务/消息中间件 MQ 方式进行传输,存储到关系库(如 PostgreSQL,可根据时间对日志进行归档操作)中。

存储的字段包括:日志 id、操作模块对应的编码、方法、操作、操作对应菜单关联的 action Id、操作目标对象、对应操作目标数据 id、操作时间、操作人 id、操作人名字、请求信息、应答信息、应答时间、删除标识、日志类型、操作成功与否、扩展字段、创建时间等,其中。扩展字段要求:目前只支持嵌套一层 key-value 形式的 json 对象格式的 String 字符串,并且 key 首字母要求大写。

接口类型

HTTP 接口

接口地址

URL/v1/audit/log/write
http 请求方式post

请求参数

  1. 请求参数说明
名称类型是否必填描述
reqList审计日志写入 List 集合
AuditLogModelAuditLogModel审计日志实体类 AuditLogModel
applicationSourcestring应用代码
moduleCodestring模块对应编码
methodstring方法
operatorstring方法对应操作
actionstring操作对应菜单关联的 action.id
actionTargetstring操作目标对象
actionDatastring追溯编码
actionTimestring操作时间(格式:yyyy-MM-dd HH:mm:ss)
actionUserIdstring操作人 Id
actionUserNamestring操作人员
requestContentstring日志请求内容
responseContentstring日志应答内容
workCenterstring工作中心
workStationstring工作站
operatorPositionstring操作位置
rolestring角色
isDeletestring删除标识
logTypestring日志类型(1-使用日志;2-访问日志;3-业务审计日志)
extensionstring扩展字段,目前只支持嵌套一层 key-value 形式的 json 对象格式的字符串
Authorizationstring令牌
1. 请求示例

POST /v1/audit/log/write
[
    {
        "applicationSource": "MES",
        "moduleCode": "material",
        "method": "Mutation.upsertMaterial",
        "operator": "物料保存",
        "action": "cjyp6bfyj3js70785p5kjdzg8",
        "actionTarget": "Material",
        "actionData": "clg64is660inv0823xwwjf00l",
        "actionTime": "2023-05-21 10:10:39",
        "actionUserId": "1020202338877",
        "actionUserName": "zhang",
        "requestContent": "{}",
        "responseContent": {
            "typename": "Material",
            "abcCode": "A",
            "analysisValidity": 0,
            "autoAllcation": true,
            "defaultContainerZone": "",
            "defaultPalletZone": "",
            "materialDesc": "复合膜(xian) -描述",
            "weight2": 0,
            "weightDefaultMode": "NET",
            "weightUnit1": "kg",
            "weightingWeightTolerance": 3
          }
       }
 ]

执行结果

  1. 返回值参数说明
参数名称类型描述
codeint返回码,0 成功,其他失败
messagestring返回信息描述
timestampint时间戳
  1. 示例说明
// 成功示例
{
	"message": "新增成功",
	"code": 0,
	"timestamp": 1681348294699
}

// 失败示例
{
	"message": "新增失败",
	"code": -1,
	"timestamp": 1681348294699
}

审计日志查询

接口功能

根据条件查询审计日志,其中需要注意的是:主过滤器 expr 中查询的是标准字段,子过滤器 subFilter 中查询的是扩展字段。

接口类型

HTTP 接口

接口地址

URL/v1/audit/log/find
http 请求方式post

请求参数

  1. 请求参数说明
名称类型是否必填描述
reqAuditLogReq审计日志查询
filtersObject查询过滤器
opstring过滤器之间的逻辑运算符
exprList条件表达式集合(针对标准字段查询)
FilterExprReqObject过滤器
fieldstring字段名称(标准字段名称)
operatorString过滤条件
valueList查询内容
subFilterList子过滤器(针对扩展字段查询,目前只支持一层)
fieldString子字段名称(扩展字段名称)
operatorstring子过滤条件
valueList子查询内容
subFilterList子子过滤器
pageablePageReq分页信息
pageInteger(int32)当前页
pageSizeInteger(int32)每页数量
orderByOrderReq排序信息
fieldInteger(int32)排序字段(只支持按审计日志创建时间 createTime 排序)
orderInteger(int32)排序方式(排序方式支持 asc/desc 两种)
AuthorizationString令牌
1. 请求示例

{
  "filters":
    {
      "op": "or",
      "expr": [
      	{
	          "field": "logType",
	          "operator": "=",
	          "value": ["1"]
	    },{
	          "field": "actionUserName",
	          "operator": "like",
	          "value": ["%wang%"]
	    }
      ],
      "subFilter": [
        {
            "op": "or",
            "expr": [
               {
              "field": "ExtendField2",
              "operator": "=",
               "value": ["bbb"]
              }
           ],
           "subFilter": []
        }
      ]
    },
  "orderBy": [
    {
      "field": "createTime",
      "order": "desc"
    }
  ],
  "pageable": {
    "page": 1,
    "pageSize": 10
  }
}

执行结果

  1. 返回值参数说明
参数名称类型描述
codeint状态码
messagestring提示信息
dataList返回的结果列表。
1. 示例说明

{
    "code": 0,
    "message": "查询成功",
 	"timestamp": 1684203668483,
    "pageNum": 1,
    "pageSize": 10,
    "total": 4,
    "data": [
        {
            "action": "cjyp6bfyj3js70785p5kjdzg8",
            "actionData": "clg64is660inv0823xwwjf00l",
            "actionTarget": "Material",
            "actionTime": 1682499147084,
            "actionUserId": "1020202338877",
            "actionUserName": "wang",
            "applicationSource": "MES",
            "createTime": 1683775531083,
            "extension": "{\"Huahua\":\"eeeeeaaa1234aaaa\",\"Guanjianzi\":\"bbb1234bbbb关键字\"}",
            "flag": 0,
            "id": "1106180282079555585",
            "isDelete": false,
            "logType": "1",
            "method": "Mutation.upsertMaterial",
            "moduleCode": "material",
            "operator": "物料保存",
            "workCenter":"工作中心",
            "workStation":"工作站",
            "operatorPosition":"操作位置",
            "role":"admin",
            "requestContent": "{}",
            "responseContent": "{\"defaultPalletZone\":\"\",\"abcCode\":\"A\",\"materialDesc\":\"描述\",\"typename\":\"Material\",\"autoAllcation\":true,\"defaultContainerZone\":\"\",\"weightUnit1\":\"kg\",\"weight2\":0,\"weightDefaultMode\":\"NET\",\"analysisValidity\":0,\"weightingWeightTolerance\":3}"
        }
]
}

审计日志对比

接口功能

该接口是审计日志信息新旧数据对比接口,只有使用日志(logType=“1”)和业务审计日志(logType=“3”)才具备该功能,记录数据表的字段变化,主要是对 responseContent 字段中字段名称、变更前后的值对比。 具体接口实现步骤:

  1. 根据审计日志 id 及日志类型 logType 获取本条审计日志信息;
  2. 根据上一步审计日志信息获取到日志的追溯编码 actionData(对应操作目标的数据 ID)及日志的操作时间 actionTime,查询获取日志信息等于追溯编码 actionData 且操作时间 actionTime 小于等于 actionTime 的最近两次的日志信息 list 集合数据;
  3. 遍历上一步获取到的 list 集合数据,得到 responseContent 字段对比结果数据,将对比结果数据放到集合 List<Object>(List[0]当前数据,List[1]上一条数据)中返回。

注意事项:

  • 对比结果展示所有字段、变更前后的值还是只展示部分差异字段、变更前后的值,由业务根据自己项目的实际情况决定.
  • 操作行为是新增操作时,对比结果 list 集合返回两条数据,其中集合的第一个元素是当前日志信息(新数据),集合的第二个元素为空;操作行为是删除操作时,对比结果 list 集合返回两条数据,其中集合的第一个元素是当前日志信息为空,集合的第二个元素为上一条日志信息。

接口类型

HTTP 接口

接口地址

URL/v1/audit/log/compare
http 请求方式post

请求参数

  1. 请求参数说明
名称类型是否必填描述
reqAuditLogReq审计日志信息新旧数据对比
logIdstring日志 id
logTypestring日志类型
Authorizationstring令牌
  1. 请求示例
POST /v1/audit/log/compare
{
  "logId":"3456123123123123",
  "logType":"1"
}

执行结果

  1. 返回值参数说明
属性名称类型描述
codeint返回码,0 成功,其他失败
messagestring返回信息描述
timestampList返回的结果列表,集合的第一个元素是当前日志信息(新数据),集合的第二个元素是上一条日志信息(旧数据)
1. 示例说明

{
    "code": 0,
    "message": "查询成功",
    "data": [
        {
            "defaultPalletZone": "",
            "abcCode": "A4",
            "materialDesc": "复合膜描述",
            "typename": "Material",
            "autoAllcation": true,
            "defaultContainerZone": "",
            "weightUnit1": "kg",
            "weight2": 0,
            "weightDefaultMode": "NET",
            "analysisValidity": 0,
            "weightingWeightTolerance": 3
        },
        {
            "defaultPalletZone": "",
            "abcCode": "A3",
            "materialDesc": "复合膜描述",
            "typename": "Material",
            "autoAllcation": true,
            "defaultContainerZone": "",
            "weightUnit1": "kg",
            "weight2": 0,
            "weightDefaultMode": "NET",
            "analysisValidity": 0,
            "weightingWeightTolerance": 3
        }
    ],
    "timestamp": 1684402671000
}

审计日志导出

接口功能

根据查询条件将数据导出到 csv 文件中。

接口类型

HTTP 接口

接口地址

URL/v1/audit/log/export
http 请求方式post

请求参数

  1. 请求参数说明

同“审计日志查询”。

1. 请求示例

POST /v1/audit/log/export
{
  "filters":
    {
      "op": "or",
      "expr": [
      	{
	          "field": "logType",
	          "operator": "=",
	          "value": ["1"]
	    },{
	          "field": "actionUserName",
	          "operator": "like",
	          "value": ["%wang%"]
	    }
      ],
      "subFilter": [
        {
            "op": "or",
            "expr": [
               {
              "field": "ExtendField2",
              "operator": "=",
               "value": ["bbb"]
              }
           ],
           "subFilter": []
        }
      ]
    },
  "orderBy": [
    {
      "field": "createTime",
      "order": "desc"
    }
  ]
}

执行结果

  1. 返回值参数说明
属性名称类型描述
codeint返回码,0 成功,其他失败
messagestring返回信息描述
timestampint时间戳
  1. 示例说明