DeployHelper/internal/service/sys_login_log_service.go

162 lines
5.0 KiB
Go

package service
import (
"ego/internal/model"
"ego/internal/serializer"
"ego/internal/types"
"ego/pkg/logger"
"fmt"
"time"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
// SysLoginLogService 登录日志服务
type SysLoginLogService struct {
Db *gorm.DB
}
// NewSysLoginLogService 构建登录日志服务
func NewSysLoginLogService(db *gorm.DB) *SysLoginLogService {
return &SysLoginLogService{
Db: db,
}
}
// Create 创建登录日志
func (s *SysLoginLogService) Create(c *gin.Context) serializer.Response {
var loginLog model.SysLoginLog
if err := c.ShouldBind(&loginLog); err != nil {
logger.Error(c, "参数绑定失败!")
return serializer.ParamErr("参数绑定失败!", err)
}
// 生成登录日志ID
id, err := SysSequenceServiceBuilder(loginLog.TableName()).GenerateId()
if err != nil {
return serializer.DBErr("创建登录日志失败!", err)
}
loginLog.Id = id
now := time.Now()
loginLog.LoginTime = &now
if err := s.Db.Create(&loginLog).Error; err != nil {
logger.Error(c, "创建登录日志失败!")
return serializer.DBErr("创建登录日志失败!", err)
}
return serializer.Succ("创建登录日志成功!", loginLog)
}
// DeleteByID 根据ID删除登录日志
func (s *SysLoginLogService) DeleteByID(c *gin.Context) serializer.Response {
var loginLog model.SysLoginLog
if err := c.ShouldBind(&loginLog); err != nil {
logger.Error(c, "参数绑定失败!")
return serializer.ParamErr("参数绑定失败!", err)
}
if err := s.Db.Delete(&loginLog).Error; err != nil {
logger.Error(c, "删除登录日志失败!")
return serializer.DBErr("删除登录日志失败!", err)
}
return serializer.Succ("删除登录日志成功!", nil)
}
// UpdateByID 根据ID更新登录日志
func (s *SysLoginLogService) UpdateByID(c *gin.Context) serializer.Response {
var loginLog model.SysLoginLog
if err := c.ShouldBind(&loginLog); err != nil {
logger.Error(c, "参数绑定失败!")
return serializer.ParamErr("参数绑定失败!", err)
}
if err := s.Db.Model(&loginLog).Updates(loginLog).Error; err != nil {
logger.Error(c, "更新登录日志失败!")
return serializer.DBErr("更新登录日志失败!", err)
}
return serializer.Succ("更新登录日志成功!", loginLog)
}
// GetByID 根据ID获取登录日志
func (s *SysLoginLogService) GetByID(c *gin.Context) serializer.Response {
var loginLog model.SysLoginLog
if err := c.ShouldBind(&loginLog); err != nil {
logger.Error(c, "参数绑定失败!")
return serializer.ParamErr("参数绑定失败!", err)
}
if err := s.Db.First(&loginLog).Error; err != nil {
logger.Error(c, "获取登录日志失败!")
return serializer.DBErr("获取登录日志失败!", err)
}
return serializer.Succ("获取登录日志成功!", loginLog)
}
// GetByCondition 根据条件获取登录日志
func (s *SysLoginLogService) GetByCondition(c *gin.Context) serializer.Response {
var loginLog model.SysLoginLog
if err := c.ShouldBind(&loginLog); err != nil {
logger.Error(c, "参数绑定失败!")
return serializer.ParamErr("参数绑定失败!", err)
}
var loginLogs []model.SysLoginLog
if err := s.Db.Where(&loginLog).Find(&loginLogs).Error; err != nil {
logger.Error(c, "获取登录日志失败!")
return serializer.DBErr("获取登录日志失败!", err)
}
return serializer.Succ("获取登录日志成功!", loginLogs)
}
// ListByIDs 根据ID列表获取登录日志
func (s *SysLoginLogService) ListByIDs(c *gin.Context) serializer.Response {
var ids types.Payload
if err := c.ShouldBind(&ids); err != nil {
logger.Error(c, "参数绑定失败!")
return serializer.ParamErr("参数绑定失败!", err)
}
var loginLogs []model.SysLoginLog
if err := s.Db.Where("id IN ?", ids.Ids).Find(&loginLogs).Error; err != nil {
logger.Error(c, "获取登录日志失败!")
return serializer.DBErr("获取登录日志失败!", err)
}
return serializer.Succ("获取登录日志成功!", loginLogs)
}
// DeleteByIDs 根据ID列表删除登录日志
func (s *SysLoginLogService) DeleteByIDs(c *gin.Context) serializer.Response {
var ids types.Payload
if err := c.ShouldBind(&ids); err != nil {
logger.Error(c, "参数绑定失败!")
return serializer.ParamErr("参数绑定失败!", err)
}
if err := s.Db.Where("id IN ?", ids.Ids).Delete(&model.SysLoginLog{}).Error; err != nil {
logger.Error(c, "删除登录日志失败!")
return serializer.DBErr("删除登录日志失败!", err)
}
return serializer.Succ("删除登录日志成功!", nil)
}
// CreateLogging 创建登录日志
func (s *SysLoginLogService) CreateLogging(sysLoginLog *model.SysLoginLog, c *gin.Context) error {
// 生成登录日志ID
id, err := SysSequenceServiceBuilder(sysLoginLog.TableName()).GenerateId()
if err != nil {
return fmt.Errorf("生成登录日志ID失败: %v", err)
}
sysLoginLog.Id = id
now := time.Now()
sysLoginLog.LoginTime = &now
if err := s.Db.Create(sysLoginLog).Error; err != nil {
logger.Error(c, "创建登录日志失败!")
return fmt.Errorf("创建登录日志失败: %v", err)
}
return nil
}