162 lines
5.0 KiB
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
|
||
|
}
|