41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package app
|
|
|
|
import (
|
|
"time"
|
|
|
|
"git.echol.cn/loser/Go-Web-Template/server/global"
|
|
appModel "git.echol.cn/loser/Go-Web-Template/server/model/app"
|
|
"gorm.io/gorm/clause"
|
|
)
|
|
|
|
type AppActivityService struct{}
|
|
|
|
var AppActivityServiceApp = new(AppActivityService)
|
|
|
|
func (s *AppActivityService) TouchActive(userID uint, ip string) error {
|
|
now := time.Now()
|
|
row := appModel.AppUserActivity{
|
|
AppUserID: userID,
|
|
LastActiveAt: &now,
|
|
LastActiveIP: ip,
|
|
}
|
|
return global.GVA_DB.Clauses(clause.OnConflict{
|
|
Columns: []clause.Column{{Name: "app_user_id"}},
|
|
DoUpdates: clause.AssignmentColumns([]string{"last_active_at", "last_active_ip", "updated_at"}),
|
|
}).Create(&row).Error
|
|
}
|
|
|
|
func (s *AppActivityService) RecordLogin(userID uint, ip string) error {
|
|
now := time.Now()
|
|
row := appModel.AppUserActivity{
|
|
AppUserID: userID,
|
|
LastLoginAt: &now,
|
|
LastActiveAt: &now,
|
|
LastActiveIP: ip,
|
|
}
|
|
return global.GVA_DB.Clauses(clause.OnConflict{
|
|
Columns: []clause.Column{{Name: "app_user_id"}},
|
|
DoUpdates: clause.AssignmentColumns([]string{"last_login_at", "last_active_at", "last_active_ip", "updated_at"}),
|
|
}).Create(&row).Error
|
|
}
|