package vidser import ( "encoding/json" "fmt" "time" "91porn-server/app/appg" "91porn-server/common/log" "91porn-server/models/v/vidmod" ) const UserTopWork = "UserTopWork:%d" type WorkList struct { Works []*vidmod.VideoModel `json:"works"` } // GetUserTopWork 获取用户置顶作品:作品排序前三视频 func GetUserTopWork(uid uint64) ([]*vidmod.VideoModel, error) { var ( w WorkList key = fmt.Sprintf(UserTopWork, uid) ) if err := appg.Redis.GetObj(&w, key); err != nil { log.Error(fmt.Sprintf("用户[%d] redis获取前三视频异常[%v]", uid, err)) return nil, err } // 从数据库获取 if len(w.Works) == 0 { var err error w.Works, err = vidmod.GetOriginals(uid) if err != nil { log.Error(fmt.Sprintf("用户[%d] mongodb获取前三视频异常[%v]", uid, err)) return nil, err } data, err := json.Marshal(&w) if err != nil { log.Error(fmt.Sprintf("用户[%d] 序列化前三视频异常[%v]", uid, err)) return nil, err } if err = appg.Redis.Set(key, data, time.Hour*1); err != nil { log.Error(fmt.Sprintf("用户[%d] redis保存前三视频异常[%v]", uid, err)) return nil, err } } return w.Works, nil }