@@ -0,0 +1,48 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user