package service import ( "dy-admin/internal/pcmserver/bus/model" "dy-admin/internal/pcmserver/bus/model/request" "dy-admin/internal/pcmserver/global" "dy-admin/internal/pcmserver/pkg/code" "dy-admin/internal/pcmserver/utils" "dy-admin/pkg/rescode" "time" ) type ConnectLogService struct { } func (s *ConnectLogService) DeleteConnectLog(info request.DeleteConnectLogReq) (err error) { var ( startTime, endTime *time.Time ) if info.StartTimeStr != "" { startTime, err = utils.ParseSecondTime(info.StartTimeStr) if err != nil { return rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrLeaveParseTimeCode]) } } if info.EndTimeStr != "" { endTime, err = utils.ParseSecondTime(info.EndTimeStr) if err != nil { return rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrLeaveParseTimeCode]) } } db := global.DB.Model(&model.ConnectLog{}) if startTime != nil && endTime == nil { db = db.Where("created_at >= ?", startTime).Where("created_at <= ?", time.Now()) } if endTime != nil && startTime == nil { db = db.Where("created_at >= ?", time.Now()).Where("created_at <= ?", endTime) } if startTime != nil && endTime != nil { db = db.Where("created_at >= ?", startTime).Where("created_at <= ?", endTime) } if err = db.Delete(&[]model.ConnectLog{}).Error; err != nil { return rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode]) } return } func (s *ConnectLogService) GetConnectLogList(info request.ConnectLogSearch) (list []model.ConnectLog, total int64, err error) { var limit, offset int if info.Page == 0 || info.PageSize == 0 { limit = -1 offset = -1 } else { limit = info.PageSize offset = info.PageSize * (info.Page - 1) } var ( startTime, endTime *time.Time ) if info.StartTimeStr != "" { startTime, err = utils.ParseSecondTime(info.StartTimeStr) if err != nil { return list, total, rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrLeaveParseTimeCode]) } } if info.EndTimeStr != "" { endTime, err = utils.ParseSecondTime(info.EndTimeStr) if err != nil { return list, total, rescode.RegisterErrorWithCause(nil, code.ErrCodeMap[code.ErrLeaveParseTimeCode]) } } var logModel model.ConnectLog db := global.DB.Model(&logModel) if info.IP != "" { db = db.Where("ip LIKE ?", "%"+info.IP+"%") } if startTime != nil && endTime == nil { db = db.Where("created_at >= ?", startTime).Where("created_at<= ?", time.Now()) } if endTime != nil && startTime == nil { db = db.Where("created_tat >= ?", time.Now()).Where("created_at <= ?", endTime) } if startTime != nil && endTime != nil { db = db.Where("created_at >= ?", startTime).Where("created_at <= ?", endTime) } err = db.Count(&total).Error if err != nil { return } if err = db.Order("id desc").Limit(limit).Offset(offset).Find(&list).Error; err != nil { return list, total, rescode.RegisterErrorWithCause(err, code.ErrCodeMap[code.ErrDatabaseCode]) } return }