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 }