liujiandao
2023-11-13 b3a47cb555076c25c64d83dd455a472509291245
service/lru.go
@@ -2,39 +2,52 @@
import (
   "github.com/hashicorp/golang-lru/v2/expirable"
   "strings"
   "time"
)
type userBaseInfo struct {
   UserId   int
   NickName string
type UserBaseInfo struct {
   UserId     int
   NickName   string
   SubUserIds []int
}
var userCache *expirable.LRU[string, *userBaseInfo]
var userCache *expirable.LRU[string, *UserBaseInfo]
func init() {
   //make cache with 5 minutes TTL and 100 max keys
   userCache = expirable.NewLRU[string, *userBaseInfo](100, nil, time.Minute*5)
   userCache = expirable.NewLRU[string, *UserBaseInfo](100, nil, time.Minute*1) //todo zq 暂时改成 1分钟
}
func GetUserBaseCache(adminUserId string) *userBaseInfo {
   userCache, ok := userCache.Get(adminUserId)
func GetUserBaseCache(adminUserId string) *UserBaseInfo {
   cache, ok := userCache.Get(adminUserId)
   if !ok {
      userService := UserService{}
      userRecord, err := userService.GetUserInfo(adminUserId)
      if err != nil {
         return nil
      }
      baseInfo := &userBaseInfo{
         UserId:   userRecord.ID,
         NickName: userRecord.NickName,
      var subIds []int
      if userRecord.SubUserIds != "" {
         subIds, _, err = userService.UUID2CrmUserId(strings.Split(userRecord.SubUserIds, ","))
         if err != nil {
            return nil
         }
      }
      subIds = append(subIds, userRecord.ID)
      baseInfo := &UserBaseInfo{
         UserId:     userRecord.ID,
         NickName:   userRecord.NickName,
         SubUserIds: subIds,
      }
      SetUserBaseCache(adminUserId, baseInfo)
      return baseInfo
   }
   return userCache
   return cache
}
func SetUserBaseCache(adminUserId string, user *userBaseInfo) {
func SetUserBaseCache(adminUserId string, user *UserBaseInfo) {
   _ = userCache.Add(adminUserId, user)
}