2025-04-14 15:42:22 +08:00

57 lines
1.6 KiB
Go

package system
import (
"context"
"time"
"management/internal/erpserver/model/dto"
)
type LoginLogRepository interface {
Create(ctx context.Context, obj *LoginLog) error
GetLatest(ctx context.Context, email string) (*LoginLog, error)
List(ctx context.Context, q dto.SearchDto) ([]*LoginLog, int64, error)
Count(ctx context.Context, email string) (int64, error)
}
type LoginLog struct {
ID int64 `json:"id" gorm:"primaryKey;autoIncrement;not null"`
CreatedAt time.Time `json:"created_at" gorm:"type:timestamptz;not null;default:'now()'"`
Email string `json:"email" gorm:"type:varchar(100);not null;"`
IsSuccess bool `json:"is_success" gorm:"type:boolean;not null;"`
Message string `json:"message" gorm:"type:varchar(300);not null;"`
RefererUrl string `json:"referer_url" gorm:"type:varchar(500);not null;"`
Url string `json:"url" gorm:"type:varchar(500);not null;"`
Os string `json:"os" gorm:"type:varchar(50);not null;"`
Ip string `json:"ip" gorm:"type:varchar(20);not null;"`
Browser string `json:"browser" gorm:"type:varchar(100);not null;"`
}
func (LoginLog) TableName() string {
return "sys_user_login_log"
}
func NewLoginLog(email, os, ip, browser, url, referer string) *LoginLog {
return &LoginLog{
CreatedAt: time.Now(),
Email: email,
IsSuccess: false,
RefererUrl: referer,
Url: url,
Os: os,
Ip: ip,
Browser: browser,
}
}
func (l *LoginLog) SetMessage(message string) *LoginLog {
l.Message = message
return l
}
func (l *LoginLog) SetOk(message string) *LoginLog {
l.Message = message
l.IsSuccess = true
return l
}