跳转至

LogController(操作日志)

cn.myapps.logger.log.controller.LogController

操作日志控制器,提供操作日志的删除、按条件分页查询、Excel 导出能力。基址为 logger 模块的 context-path 占位符 ${myapps.context-path.logger:} 再加 /logs(无 /api/rest 前缀)。

  • 接口类型:REST 资源
  • 类级注解:@RestController("logger-log-controller")
  • 基址:${myapps.context-path.logger:}/logs
  • 鉴权:见 index.md 鉴权说明(无 token 强校验;queryLogs 按 token 解析的三员身份做行级过滤)

1. 删除日志

按日志 ID 集合批量删除操作日志。

  • 接口类型:REST 资源
  • 请求方式:DELETE
  • 请求路径:/logs(完整:${myapps.context-path.logger:}/logs)
  • 鉴权:否(无 token 强校验;控制器内未读取用户身份)
  • Tag:(未在源码标注)

请求参数

参数名 位置 类型 必填 说明
(body) body array 是(@RequestBody) 待删除的日志 ID 列表

请求体

["log-id-1", "log-id-2", "log-id-3"]

请求示例

DELETE /logs HTTP/1.1
Content-Type: application/json

["log-id-1", "log-id-2"]

响应

结构:void(HTTP 200,无响应体)。底层 logService.deleteLogs(ids) 抛出的 Exception 由 CommonsExceptionResolver 统一映射为 HTTP 500。


2. 查询日志

按多条件分页查询操作日志;当开启三员管理(security.mode=true)时按当前用户身份(保密员 / 审计员)做行级可见性过滤。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/logs(完整:${myapps.context-path.logger:}/logs)
  • 鉴权:否(无 token 强校验;但 queryLogs 内部按 Security.getUserIdFromToken(request) 解析的三员身份过滤数据)
  • Tag:(未在源码标注)

请求参数

参数名 位置 类型 必填 默认值 说明
operator query string 否 — 操作员账号过滤
type query string 否 — 日志类型过滤
description query string 否 — 描述过滤
result query string 否 — 操作结果过滤
startDate query string 否 — 开始日期
endDate query string 否 — 结束日期
ip query string 否 — IP 地址过滤
domainid query string 否 — 域 ID 过滤
currpage query int 否 1 当前页码
pagelines query int 否 10 每页行数

请求示例

GET /logs?type=LOGIN&startDate=2026-01-01&endDate=2026-08-01&currpage=1&pagelines=20 HTTP/1.1

响应

结构:DataPackage<Log>(非 Resource;见 index.md 形态一)。

成功示例:

{
  "rowCount": 1,
  "linesPerPage": 20,
  "pageNo": 1,
  "datas": [
    {
      "id": "log-id-1",
      "userId": "user-1",
      "operator": "admin",
      "description": "用户登录",
      "type": "LOGIN",
      "ip": "192.168.1.1",
      "applicationid": "__APPID__",
      "domainid": "__DOMAIN__",
      "date": "2026-08-04T10:00:00.000+08:00",
      "sortId": "...",
      "result": "成功"
    }
  ],
  "pageCount": 1
}

失败示例(开启三员管理且当前用户不在 SECADMIN/AUDITOR 行级范围时返回 null,HTTP 状态仍 200):

null

三员可见性逻辑详见 index.md 鉴权说明。


3. 导出操作日记

按条件导出操作日记为 Excel 文件(.xls)。响应为二进制流。

  • 接口类型:REST 资源(二进制响应)
  • 请求方式:GET
  • 请求路径:/logs/export(完整:${myapps.context-path.logger:}/logs/export)
  • 鉴权:否(无 token 强校验;控制器内未读取用户身份)
  • Tag:(未在源码标注)

请求参数

参数名 位置 类型 必填 说明
operator query string 否 操作员账号过滤
startDate query string 否 开始日期
endDate query string 否 结束日期
ip query string 否 IP 地址过滤
domainId query string 否 域 ID 过滤(注意参数名为 domainId,与 queryLogs 的 domainid 大小写不一致)

请求示例

GET /logs/export?startDate=2026-01-01&endDate=2026-08-01&domainId=__DOMAIN__ HTTP/1.1

响应

结构:二进制 Excel 流(XSSFWorkbook 写入)。

响应头 值
Content-Type appliction/excel(源码原样拼写,缺 a)
Content-Disposition attachment;fileName=<URL编码后的"操作日记.xls">
响应体 .xls 二进制内容

失败示例(异常被 catch 吞掉,HTTP 状态仍 200;响应体可能为空或部分写入):

(无统一错误响应;调用方需通过 Content-Disposition 头是否齐全判断是否成功)