| | |
| | | package middleware |
| | | |
| | | import ( |
| | | "aps_crm/pkg/logx" |
| | | "context" |
| | | "fmt" |
| | | "sync" |
| | |
| | | UserID: userID, |
| | | lastActiveTime: time.Now().Unix(), |
| | | } |
| | | logx.Infof("add active user :%+v", r.Users[userID]) |
| | | } else { |
| | | r.Users[userID].lastActiveTime = time.Now().Unix() |
| | | logx.Infof("refresh active time, user:%+v", r.Users[userID]) |
| | | } |
| | | } |
| | | |
| | |
| | | select { |
| | | case <-ticker.C: |
| | | nowTs := time.Now().Unix() |
| | | fmt.Println("it is time to RemoveInActiveUser:", nowTs) |
| | | r.mu.RLock() |
| | | for userID, user := range r.Users { |
| | | if nowTs-user.lastActiveTime > r.expireSecond { |
| | | r.mu.Lock() |
| | | logx.Infof("removed in active user:%+v", user) |
| | | delete(r.Users, userID) |
| | | r.mu.Unlock() |
| | | } |
| | |
| | | for { |
| | | select { |
| | | case <-ticker.C: |
| | | nowTs := time.Now().Unix() |
| | | fmt.Println("it is time to RefreshUserInfo:", nowTs) |
| | | r.mu.RLock() |
| | | userIds := make([]string, len(r.Users)) |
| | | for userID := range r.Users { |
| | |
| | | } |
| | | r.mu.RUnlock() |
| | | if len(userIds) != 0 { |
| | | logx.Infof("RefreshUserInfo, user ids: ", userIds) |
| | | SyncUserInfo(userIds) |
| | | } |
| | | case <-r.ctx.Done(): |
| | |
| | | } else if old.Username != record.Username || |
| | | old.UserType != record.UserType || |
| | | old.NickName != record.NickName || |
| | | old.SubUserIds != record.SubUserIds { |
| | | record.SubUserIds != "" && old.SubUserIds != record.SubUserIds { |
| | | old.Username = record.Username |
| | | old.UserType = record.UserType |
| | | old.NickName = record.NickName |
| | | old.SubUserIds = record.SubUserIds |
| | | if err := db.Updates(&record).Error; err != nil { |
| | | return fmt.Errorf("update user err: %v, record: %+v", err, record) |
| | | return fmt.Errorf("update user err: %v, old record: %+v", err, old) |
| | | } |
| | | } |
| | | |