Files
kami_backend/.qoder/repowiki/zh/content/安全考虑/User Login Log.md
danial 15e2426e85 feat(camel_oil): 新增骆驼加油账号管理模块
- 实现账号增删改查接口和逻辑
- 支持账号状态更新及状态历史记录功能
- 提供账号列表、历史和统计信息查询API
- 实现账号轮询机制,支持按使用时间轮询获取账号
- 增加账号登录流程及批量登录功能,集成接码平台和平台API
- 管理账号订单容量,支持容量检查与账号登录触发
- 提供账号池状态统计接口
- 账号历史记录查询支持多种变更类型文本展示
- 密码等敏感信息采用脱敏展示
- 完善日志记录和错误处理机制,保证业务稳定运行
2025-11-21 00:49:50 +08:00

9.1 KiB
Raw Blame History

用户登录日志

**本文档引用的文件** - [sys_user_login_log.go](file://api/sys_user_login_log/sys_user_login_log.go) - [login_log.go](file://api/sys_user_login_log/v1/login_log.go) - [sys_user_login_log_v1_login_log.go](file://internal/controller/sys_user_login_log/sys_user_login_log_v1_login_log.go) - [sys_login_log.go](file://internal/logic/sys_login_log/sys_login_log.go) - [v_1_sys_user_login_log.go](file://internal/dao/v_1_sys_user_login_log.go) - [v_1_sys_user_login_log.go](file://internal/model/entity/v_1_sys_user_login_log.go) - [v_1_sys_user_login_log.go](file://internal/model/do/v_1_sys_user_login_log.go) - [sys_user_login_log.go](file://internal/service/sys_user_login_log.go)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概述
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

简介

本文档详细描述了用户登录日志功能模块的设计与实现。该模块负责记录和查询系统用户的登录行为,包括登录成功和失败的记录,为系统安全审计和用户行为分析提供数据支持。

项目结构

用户登录日志功能分布在多个目录中遵循分层架构设计原则。主要包含API定义、控制器、服务、逻辑处理和数据访问层。

graph TD
subgraph "API层"
A[api/sys_user_login_log]
end
subgraph "控制器层"
B[internal/controller/sys_user_login_log]
end
subgraph "服务层"
C[internal/service]
end
subgraph "逻辑层"
D[internal/logic/sys_login_log]
end
subgraph "数据访问层"
E[internal/dao]
F[internal/model/entity]
G[internal/model/do]
end
A --> B
B --> C
C --> D
D --> E
E --> F
E --> G

Diagram sources

Section sources

核心组件

用户登录日志模块的核心组件包括API接口定义、控制器实现、业务逻辑处理和服务注册。API层定义了登录日志的查询接口控制器层处理HTTP请求并调用服务层逻辑层实现具体的业务逻辑数据访问层负责与数据库交互。

Section sources

架构概述

用户登录日志模块采用典型的分层架构,各层职责分明,便于维护和扩展。

graph TD
Client[客户端] --> API[API接口]
API --> Controller[控制器]
Controller --> Service[服务层]
Service --> Logic[业务逻辑]
Logic --> DAO[数据访问对象]
DAO --> Database[(数据库)]
style Client fill:#f9f,stroke:#333
style Database fill:#ccf,stroke:#333

Diagram sources

详细组件分析

登录日志查询功能分析

登录日志查询功能允许管理员根据多种条件查询用户的登录记录包括用户ID、登录名、登录状态和时间范围。

类图

classDiagram
class LoginLogQueryReq {
+string userId
+string loginName
+int status
+string startTime
+string endTime
+CommonPageReq
}
class LoginLogQueryRes {
+int total
+[]*V1SysUserLoginLog list
}
class V1SysUserLoginLog {
+uint id
+string userId
+string loginName
+string ipAddr
+string loginLocation
+string userAgent
+string browser
+string os
+*gtime.Time createdAt
+int status
+string message
+*gtime.Time loginTime
+string module
}
LoginLogQueryReq --> LoginLogQueryRes : "查询返回"
LoginLogQueryRes --> V1SysUserLoginLog : "包含"

Diagram sources

序列图

sequenceDiagram
participant Client as "客户端"
participant Controller as "控制器"
participant Service as "服务层"
participant Logic as "业务逻辑"
participant DAO as "数据访问"
participant DB as "数据库"
Client->>Controller : GET /sys-user-login-log/list
Controller->>Controller : 验证权限
Controller->>Service : 调用QueryLoginLogs
Service->>Logic : 调用QueryLoginLogs
Logic->>DAO : 构建查询条件
DAO->>DB : 执行数据库查询
DB-->>DAO : 返回查询结果
DAO-->>Logic : 返回结果
Logic-->>Service : 返回total和list
Service-->>Controller : 返回结果
Controller-->>Client : 返回JSON响应
Note over Client,DB : 查询登录日志列表

Diagram sources

登录日志详情功能分析

登录日志详情功能允许查看单条登录记录的详细信息。

序列图

sequenceDiagram
participant Client as "客户端"
participant Controller as "控制器"
participant Service as "服务层"
participant Logic as "业务逻辑"
participant DAO as "数据访问"
participant DB as "数据库"
Client->>Controller : GET /sys-user-login-log/detail
Controller->>Service : 调用GetLoginLogDetail
Service->>Logic : 调用GetLoginLogDetail
Logic->>DAO : 查询主键
DAO->>DB : 执行查询
DB-->>DAO : 返回单条记录
DAO-->>Logic : 返回记录
Logic-->>Service : 返回详情
Service-->>Controller : 返回详情
Controller-->>Client : 返回JSON响应
Note over Client,DB : 查询登录日志详情

Diagram sources

Section sources

依赖分析

用户登录日志模块与其他系统组件有明确的依赖关系。

graph TD
SysUserLoginLog[用户登录日志] --> SysAuth[系统认证]
SysUserLoginLog --> Config[配置管理]
SysUserLoginLog --> Utils[工具库]
SysUserLoginLog --> Database[数据库]
SysUserLoginLog --> ErrHandler[错误处理]
style SysUserLoginLog fill:#f96,stroke:#333

Diagram sources

Section sources

性能考虑

用户登录日志模块在设计时考虑了性能因素采用异步处理机制记录登录日志避免阻塞主业务流程。查询功能支持分页和条件过滤确保在大数据量下的查询效率。数据库查询使用了适当的索引特别是对用户ID、登录名和创建时间等常用查询字段。

故障排除指南

当用户登录日志功能出现问题时,可以按照以下步骤进行排查:

  1. 检查数据库连接是否正常
  2. 验证API接口权限配置
  3. 查看日志文件中的错误信息
  4. 确认查询条件是否正确
  5. 检查数据库表结构是否匹配

Section sources

结论

用户登录日志模块提供了完整的登录行为记录和查询功能,采用分层架构设计,各组件职责清晰,易于维护和扩展。模块支持灵活的查询条件和分页功能,能够满足系统安全审计的需求。通过异步处理机制,确保了日志记录不会影响主业务流程的性能。