yinbentan
2024-09-26 2030ec81f18f4ec9ea1800f13046acafff6d50f7
middleware/refresh_user.go
@@ -1,6 +1,7 @@
package middleware
import (
   "aps_crm/pkg/logx"
   "context"
   "fmt"
   "sync"
@@ -43,6 +44,7 @@
      intervalRefreshUserMinute: intervalRefreshUserMinute,
      ctx:                       ctx,
      cancel:                    cancel,
      Users:                     map[string]*CurrentActiveUser{},
   }
}
@@ -70,8 +72,10 @@
         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])
   }
}
@@ -87,16 +91,20 @@
      select {
      case <-ticker.C:
         nowTs := time.Now().Unix()
         fmt.Println("it is time to RemoveInActiveUser:", nowTs)
         var users []*CurrentActiveUser
         r.mu.RLock()
         for userID, user := range r.Users {
         for _, user := range r.Users {
            users = append(users, user)
         }
         r.mu.RUnlock()
         for _, user := range users {
            if nowTs-user.lastActiveTime > r.expireSecond {
               r.mu.Lock()
               delete(r.Users, userID)
               logx.Infof("removed in active user:%+v", user)
               delete(r.Users, user.UserID)
               r.mu.Unlock()
            }
         }
         r.mu.RUnlock()
      case <-r.ctx.Done():
         fmt.Println("stop RemoveInActiveUser.")
         return
@@ -112,8 +120,6 @@
   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 {
@@ -121,6 +127,7 @@
         }
         r.mu.RUnlock()
         if len(userIds) != 0 {
            logx.Infof("RefreshUserInfo, user ids: ", userIds)
            SyncUserInfo(userIds)
         }
      case <-r.ctx.Done():