Update: Js 4 Log.html
This commit is contained in:
@@ -6,6 +6,9 @@ import (
|
||||
"gemini-balancer/internal/response"
|
||||
"gemini-balancer/internal/service"
|
||||
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
@@ -41,3 +44,58 @@ func (h *LogHandler) GetLogs(c *gin.Context) {
|
||||
"page_size": params.PageSize,
|
||||
})
|
||||
}
|
||||
|
||||
// DeleteLogs 删除选定日志 DELETE /admin/logs?ids=1,2,3
|
||||
func (h *LogHandler) DeleteLogs(c *gin.Context) {
|
||||
idsStr := c.Query("ids")
|
||||
if idsStr == "" {
|
||||
response.Error(c, errors.ErrBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
var ids []uint
|
||||
for _, idStr := range strings.Split(idsStr, ",") {
|
||||
if id, err := strconv.ParseUint(strings.TrimSpace(idStr), 10, 32); err == nil {
|
||||
ids = append(ids, uint(id))
|
||||
}
|
||||
}
|
||||
|
||||
if len(ids) == 0 {
|
||||
response.Error(c, errors.ErrBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
if err := h.logService.DeleteLogs(c.Request.Context(), ids); err != nil {
|
||||
response.Error(c, errors.ErrDatabase)
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, gin.H{"deleted": len(ids)})
|
||||
}
|
||||
|
||||
// DeleteAllLogs 删除全部日志 DELETE /admin/logs/all
|
||||
func (h *LogHandler) DeleteAllLogs(c *gin.Context) {
|
||||
if err := h.logService.DeleteAllLogs(c.Request.Context()); err != nil {
|
||||
response.Error(c, errors.ErrDatabase)
|
||||
return
|
||||
}
|
||||
response.Success(c, gin.H{"message": "all logs deleted"})
|
||||
}
|
||||
|
||||
// DeleteOldLogs 删除旧日志 DELETE /admin/logs/old?days=30
|
||||
func (h *LogHandler) DeleteOldLogs(c *gin.Context) {
|
||||
daysStr := c.Query("days")
|
||||
days, err := strconv.Atoi(daysStr)
|
||||
if err != nil || days <= 0 {
|
||||
response.Error(c, errors.ErrBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
deleted, err := h.logService.DeleteOldLogs(c.Request.Context(), days)
|
||||
if err != nil {
|
||||
response.Error(c, errors.ErrDatabase)
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, gin.H{"deleted": deleted, "days": days})
|
||||
}
|
||||
|
||||
@@ -340,6 +340,9 @@ func registerSystemRoutes(
|
||||
|
||||
// 日志管理
|
||||
admin.GET("/logs", logHandler.GetLogs)
|
||||
admin.DELETE("/logs", logHandler.DeleteLogs) // 删除选定
|
||||
admin.DELETE("/logs/all", logHandler.DeleteAllLogs) // 删除全部
|
||||
admin.DELETE("/logs/old", logHandler.DeleteOldLogs) // 删除旧日志
|
||||
|
||||
// 设置管理
|
||||
admin.GET("/settings", settingHandler.GetSettings)
|
||||
|
||||
@@ -162,3 +162,27 @@ func ParseLogQueryParams(queryParams map[string]string) (LogQueryParams, error)
|
||||
}
|
||||
return params, nil
|
||||
}
|
||||
|
||||
// DeleteLogs 删除指定ID的日志
|
||||
func (s *LogService) DeleteLogs(ctx context.Context, ids []uint) error {
|
||||
if len(ids) == 0 {
|
||||
return fmt.Errorf("no log IDs provided")
|
||||
}
|
||||
return s.db.WithContext(ctx).Delete(&models.RequestLog{}, ids).Error
|
||||
}
|
||||
|
||||
// DeleteAllLogs 删除所有日志
|
||||
func (s *LogService) DeleteAllLogs(ctx context.Context) error {
|
||||
return s.db.WithContext(ctx).Where("1 = 1").Delete(&models.RequestLog{}).Error
|
||||
}
|
||||
|
||||
// DeleteOldLogs 删除指定天数之前的日志
|
||||
func (s *LogService) DeleteOldLogs(ctx context.Context, days int) (int64, error) {
|
||||
if days <= 0 {
|
||||
return 0, fmt.Errorf("days must be positive")
|
||||
}
|
||||
result := s.db.WithContext(ctx).
|
||||
Where("request_time < DATE_SUB(NOW(), INTERVAL ? DAY)", days).
|
||||
Delete(&models.RequestLog{})
|
||||
return result.RowsAffected, result.Error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user