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 }