Initial commit: 网络验证平台
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"verification-platform-backend/internal/database"
|
||||
"verification-platform-backend/internal/model"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type LogService struct{}
|
||||
|
||||
type LogParams struct {
|
||||
UserID *uint
|
||||
ApplicationID *uint
|
||||
AppUserID *uint
|
||||
LogType string
|
||||
Action string
|
||||
Resource string
|
||||
ResourceID *uint
|
||||
Details string
|
||||
IPAddress string
|
||||
UserAgent string
|
||||
DeviceID string
|
||||
Status string
|
||||
Level string
|
||||
ErrorMessage string
|
||||
StackTrace string
|
||||
}
|
||||
|
||||
func NewLogService() *LogService {
|
||||
return &LogService{}
|
||||
}
|
||||
|
||||
func (s *LogService) CreateLog(params LogParams) error {
|
||||
log := model.Log{
|
||||
UserID: params.UserID,
|
||||
ApplicationID: params.ApplicationID,
|
||||
AppUserID: params.AppUserID,
|
||||
LogType: params.LogType,
|
||||
Action: params.Action,
|
||||
Resource: params.Resource,
|
||||
ResourceID: params.ResourceID,
|
||||
Details: params.Details,
|
||||
IPAddress: params.IPAddress,
|
||||
UserAgent: params.UserAgent,
|
||||
DeviceID: params.DeviceID,
|
||||
Status: params.Status,
|
||||
Level: params.Level,
|
||||
ErrorMessage: params.ErrorMessage,
|
||||
StackTrace: params.StackTrace,
|
||||
}
|
||||
|
||||
if log.LogType == "" {
|
||||
log.LogType = "operation"
|
||||
}
|
||||
if log.Status == "" {
|
||||
log.Status = "success"
|
||||
}
|
||||
if log.Level == "" {
|
||||
log.Level = "info"
|
||||
}
|
||||
|
||||
return database.DB.Create(&log).Error
|
||||
}
|
||||
|
||||
func (s *LogService) CreateLogFromContext(c *gin.Context, params LogParams) error {
|
||||
params.IPAddress = c.ClientIP()
|
||||
params.UserAgent = c.GetHeader("User-Agent")
|
||||
|
||||
if userID, exists := c.Get("user_id"); exists && params.UserID == nil {
|
||||
if uid, ok := userID.(uint); ok {
|
||||
params.UserID = &uid
|
||||
}
|
||||
}
|
||||
|
||||
return s.CreateLog(params)
|
||||
}
|
||||
|
||||
func (s *LogService) LogOperation(c *gin.Context, action, resource string, resourceID *uint, details string, err error) error {
|
||||
params := LogParams{
|
||||
LogType: "operation",
|
||||
Action: action,
|
||||
Resource: resource,
|
||||
ResourceID: resourceID,
|
||||
Details: details,
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
params.Status = "failed"
|
||||
params.Level = "error"
|
||||
params.ErrorMessage = err.Error()
|
||||
}
|
||||
|
||||
return s.CreateLogFromContext(c, params)
|
||||
}
|
||||
|
||||
func (s *LogService) LogVerification(c *gin.Context, applicationID *uint, appUserID *uint, action, details string, deviceID string, err error) error {
|
||||
params := LogParams{
|
||||
LogType: "verification",
|
||||
ApplicationID: applicationID,
|
||||
AppUserID: appUserID,
|
||||
Action: action,
|
||||
Resource: "verification",
|
||||
Details: details,
|
||||
DeviceID: deviceID,
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
params.Status = "failed"
|
||||
params.Level = "warning"
|
||||
params.ErrorMessage = err.Error()
|
||||
}
|
||||
|
||||
return s.CreateLogFromContext(c, params)
|
||||
}
|
||||
|
||||
func (s *LogService) LogException(c *gin.Context, action, errorMessage, stackTrace string) error {
|
||||
params := LogParams{
|
||||
LogType: "exception",
|
||||
Action: action,
|
||||
Resource: "system",
|
||||
Status: "failed",
|
||||
Level: "error",
|
||||
ErrorMessage: errorMessage,
|
||||
StackTrace: stackTrace,
|
||||
}
|
||||
|
||||
return s.CreateLogFromContext(c, params)
|
||||
}
|
||||
|
||||
var logService = NewLogService()
|
||||
|
||||
func CreateLog(params LogParams) error {
|
||||
return logService.CreateLog(params)
|
||||
}
|
||||
|
||||
func CreateLogFromContext(c *gin.Context, params LogParams) error {
|
||||
return logService.CreateLogFromContext(c, params)
|
||||
}
|
||||
|
||||
func LogOperation(c *gin.Context, action, resource string, resourceID *uint, details string, err error) error {
|
||||
return logService.LogOperation(c, action, resource, resourceID, details, err)
|
||||
}
|
||||
|
||||
func LogVerification(c *gin.Context, applicationID *uint, appUserID *uint, action, details string, DeviceFingerprint string, err error) error {
|
||||
return logService.LogVerification(c, applicationID, appUserID, action, details, DeviceFingerprint, err)
|
||||
}
|
||||
|
||||
func LogException(c *gin.Context, action, errorMessage, stackTrace string) error {
|
||||
return logService.LogException(c, action, errorMessage, stackTrace)
|
||||
}
|
||||
Reference in New Issue
Block a user