跳转至

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) 抛出的 ExceptionCommonsExceptionResolver 统一映射为 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,与 queryLogsdomainid 大小写不一致)

请求示例

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 头是否齐全判断是否成功)