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 列表 |
请求体¶
请求示例¶
响应¶
结构: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 |
每页行数 |
请求示例¶
响应¶
结构: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):
三员可见性逻辑详见 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 大小写不一致) |
请求示例¶
响应¶
结构:二进制 Excel 流(XSSFWorkbook 写入)。
| 响应头 | 值 |
|---|---|
Content-Type |
appliction/excel(源码原样拼写,缺 a) |
Content-Disposition |
attachment;fileName=<URL编码后的"操作日记.xls"> |
| 响应体 | .xls 二进制内容 |
失败示例(异常被 catch 吞掉,HTTP 状态仍 200;响应体可能为空或部分写入):