49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
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
|
|
}
|