82 lines
2.3 KiB
Go
82 lines
2.3 KiB
Go
package user
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/pkg/errors"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func (m *customUserModel) InsertSubscribeLog(ctx context.Context, log *SubscribeLog) error {
|
|
return m.ExecNoCacheCtx(ctx, func(conn *gorm.DB) error {
|
|
return conn.Create(log).Error
|
|
})
|
|
}
|
|
|
|
func (m *customUserModel) FilterSubscribeLogList(ctx context.Context, page, size int, filter *SubscribeLogFilterParams) ([]*SubscribeLog, int64, error) {
|
|
var list []*SubscribeLog
|
|
var total int64
|
|
err := m.QueryNoCacheCtx(ctx, &list, func(conn *gorm.DB, v interface{}) error {
|
|
query := conn.Model(&SubscribeLog{})
|
|
if filter != nil {
|
|
if filter.UserId != 0 {
|
|
query = query.Where("user_id = ?", filter.UserId)
|
|
}
|
|
if filter.UserSubscribeId != 0 {
|
|
query = query.Where("user_subscribe_id = ?", filter.UserSubscribeId)
|
|
}
|
|
if filter.IP != "" {
|
|
query = query.Where("ip LIKE ?", "%"+filter.IP+"%")
|
|
}
|
|
if filter.Token != "" {
|
|
query = query.Where("token LIKE ?", "%"+filter.Token+"%")
|
|
}
|
|
if filter.UserAgent != "" {
|
|
query = query.Where("user_agent LIKE ?", "%"+filter.UserAgent+"%")
|
|
}
|
|
}
|
|
return query.Count(&total).Limit(size).Offset((page - 1) * size).Find(v).Error
|
|
})
|
|
|
|
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return nil, 0, err
|
|
}
|
|
|
|
return list, total, nil
|
|
}
|
|
|
|
func (m *customUserModel) InsertLoginLog(ctx context.Context, log *LoginLog) error {
|
|
return m.ExecNoCacheCtx(ctx, func(conn *gorm.DB) error {
|
|
return conn.Create(log).Error
|
|
})
|
|
}
|
|
|
|
func (m *customUserModel) FilterLoginLogList(ctx context.Context, page, size int, filter *LoginLogFilterParams) ([]*LoginLog, int64, error) {
|
|
var list []*LoginLog
|
|
var total int64
|
|
err := m.QueryNoCacheCtx(ctx, &list, func(conn *gorm.DB, v interface{}) error {
|
|
query := conn.Model(&LoginLog{})
|
|
if filter != nil {
|
|
if filter.UserId != 0 {
|
|
query = query.Where("user_id = ?", filter.UserId)
|
|
}
|
|
if filter.IP != "" {
|
|
query = query.Where("ip LIKE ?", "%"+filter.IP+"%")
|
|
}
|
|
if filter.UserAgent != "" {
|
|
query = query.Where("user_agent LIKE ?", "%"+filter.UserAgent+"%")
|
|
}
|
|
if filter.Success != nil {
|
|
query = query.Where("success = ?", *filter.Success)
|
|
}
|
|
}
|
|
return query.Count(&total).Limit(size).Offset((page - 1) * size).Find(v).Error
|
|
})
|
|
|
|
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return nil, 0, err
|
|
}
|
|
|
|
return list, total, nil
|
|
}
|