@@ -0,0 +1,97 @@
|
||||
package vidser
|
||||
|
||||
import (
|
||||
"91porn-server/app/service/vidhelpser"
|
||||
"91porn-server/common/cachev2"
|
||||
"91porn-server/common/constant/redisconst"
|
||||
"91porn-server/common/log"
|
||||
"91porn-server/models/v/discount_area_mod"
|
||||
"91porn-server/models/v/discount_area_video_mod"
|
||||
"91porn-server/models/v/vidmod"
|
||||
"fmt"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"time"
|
||||
)
|
||||
|
||||
// GetDiscountArea 获取折扣专区
|
||||
func GetDiscountArea() (list []discount_area_mod.DiscountArea, err error) {
|
||||
_, err = cachev2.Classes().CacheTime(redisconst.DiscountAreaExpire).AutoListKey(redisconst.DiscountArea).ResBind(&list).Cache(discount_area_mod.GetAllDiscountArea)
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("cachev2 discount_area_mod.GetAllDiscountArea err:%v", err))
|
||||
return
|
||||
}
|
||||
return list, nil
|
||||
}
|
||||
|
||||
// GetDiscountAreaVideos 获取折扣专区下的视频
|
||||
func GetDiscountAreaVideos(uid uint64, req *DiscountVideoReq) (data *DiscountVideoResp, err error) {
|
||||
data = &DiscountVideoResp{
|
||||
List: []*vidmod.VideoInfo{},
|
||||
}
|
||||
var videos []*vidmod.VideoModel
|
||||
key := fmt.Sprintf("DiscountAreaVideoList:%v:%v:%v:%v", req.DiscountId, req.SortType, req.PageSize, req.PageNumber)
|
||||
_, err = cachev2.Classes().CacheTime(2*time.Minute).AutoListKey(key).ResBind(&videos).Cache(discountAreaVideos, req)
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("cachev2 discountAreaVideos err:%v", err))
|
||||
return
|
||||
}
|
||||
|
||||
if len(videos) == 0 {
|
||||
log.Warn(fmt.Sprintf("discountAreaVideos is null, discountAreaId:%v", req.DiscountId))
|
||||
return data, nil
|
||||
}
|
||||
if len(videos) > int(req.PageSize) {
|
||||
data.HasNext = true
|
||||
videos = videos[:req.PageSize]
|
||||
}
|
||||
videoList := vidhelpser.EncodeVideoInfo(uid, videos)
|
||||
data.List = videoList
|
||||
return
|
||||
}
|
||||
|
||||
// 获取折扣专区视频列表
|
||||
func discountAreaVideos(req *DiscountVideoReq) (list []*vidmod.VideoModel, err error) {
|
||||
// 按照排序类型查询方式不同
|
||||
switch req.SortType {
|
||||
case 2:
|
||||
//按照最热查询
|
||||
list, err = vidmod.GetVideoListByCond(req.Filter(), req.Options())
|
||||
default:
|
||||
list, err = newDiscountAreaVideos(req)
|
||||
return
|
||||
}
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("discountAreaVideos err:%v", err))
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func newDiscountAreaVideos(req *DiscountVideoReq) (res []*vidmod.VideoModel, err error) {
|
||||
// 按照最新添加到折扣专区的顺序排
|
||||
discountAreaVideoList, _, err := discount_area_video_mod.GetListByCond(req.Filter(), req.Options())
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("discount_area_video_mod.GetListByCond err:%v", err))
|
||||
return
|
||||
}
|
||||
vids := []primitive.ObjectID{}
|
||||
for _, v := range discountAreaVideoList {
|
||||
vids = append(vids, v.VideoID)
|
||||
}
|
||||
// 获取视频
|
||||
list, err := vidmod.GetVideoListByIDsNoStatus(vids)
|
||||
if err != nil {
|
||||
log.Error(fmt.Sprintf("vidmod.GetVideoListByIDs err:%v", err))
|
||||
return
|
||||
}
|
||||
// 按照原来的顺序返回(不要使用sort包排序。按照时间排序,会出现问题)
|
||||
videoMap := make(map[primitive.ObjectID]*vidmod.VideoModel)
|
||||
for _, v := range list {
|
||||
videoMap[v.ID] = v
|
||||
}
|
||||
for _, v := range discountAreaVideoList {
|
||||
video := videoMap[v.VideoID]
|
||||
res = append(res, video)
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user