Add files via upload

This commit is contained in:
QWQLwToo
2026-01-28 13:25:18 +08:00
committed by GitHub
parent 02f66ec447
commit 7030903eb6
77 changed files with 21573 additions and 0 deletions
+70
View File
@@ -0,0 +1,70 @@
package api
import (
"sync"
"time"
)
// 内存存储登录历史(临时方案,等Ent代码生成后改用数据库)
type LoginHistoryRecord struct {
Username string
IP string
Location string
UserAgent string
LoginTime time.Time
Success bool
}
var (
loginHistoryRecords []LoginHistoryRecord
loginHistoryMutex sync.RWMutex
maxLoginHistory = 1000 // 最多保存1000条登录记录
)
// 添加登录历史记录
func addLoginHistory(username, ip, location, userAgent string, success bool) {
loginHistoryMutex.Lock()
defer loginHistoryMutex.Unlock()
loginHistoryRecords = append(loginHistoryRecords, LoginHistoryRecord{
Username: username,
IP: ip,
Location: location,
UserAgent: userAgent,
LoginTime: time.Now(),
Success: success,
})
// 限制记录数量
if len(loginHistoryRecords) > maxLoginHistory {
loginHistoryRecords = loginHistoryRecords[len(loginHistoryRecords)-maxLoginHistory:]
}
}
// 获取登录历史记录
func getLoginHistoryRecords(limit int) []LoginHistoryRecord {
loginHistoryMutex.RLock()
defer loginHistoryMutex.RUnlock()
if limit <= 0 || limit > len(loginHistoryRecords) {
limit = len(loginHistoryRecords)
}
// 返回最后limit条记录(最新的)
start := len(loginHistoryRecords) - limit
if start < 0 {
start = 0
}
result := make([]LoginHistoryRecord, 0, limit)
for i := len(loginHistoryRecords) - 1; i >= start; i-- {
result = append(result, loginHistoryRecords[i])
}
// 反转顺序,使最新的在前
for i, j := 0, len(result)-1; i < j; i, j = i+1, j-1 {
result[i], result[j] = result[j], result[i]
}
return result
}