Initial commit

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 13:57:10 +08:00
co-authored by Claude Opus 5
commit 8679200f41
1897 changed files with 257900 additions and 0 deletions
+97
View File
@@ -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
}