package imagetopser import ( "fmt" "time" "91porn-server/common" "91porn-server/common/log" "91porn-server/common/stderr" "91porn-server/models/v/imagetopmod" "91porn-server/models/v/vidmod" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo/options" ) func FindImageTopList(req imagetopmod.ImageTopListReq) (code stderr.Code, data interface{}) { resp := imagetopmod.ImageTopListRes{ Total: 0, List: make([]imagetopmod.ImageTopResp, 0), } //查询帖子列表 skip := (req.PageNumber - 1) * req.PageSize var filter = bson.M{} switch req.TopType { case 1: //推荐 filter = bson.M{"recommendSort": bson.M{"$gt": 0}} case 2: //最新 filter = bson.M{"newSort": bson.M{"$gt": 0}} } sort := bson.D{{Key: "updatedAt", Value: -1}} opts := options.Find().SetSort(sort).SetSkip(int64(skip)).SetLimit(int64(req.PageSize)) imageTopList, err := imagetopmod.GetImageTopList(filter, opts) if err != nil { log.Error(fmt.Sprintf("获取视频列表 发生错误:%v", err), log.Any("params", req)) return stderr.ErrDbQueryError, nil } //获取置顶视频数量 total, _ := imagetopmod.GetImageTopCount(filter) resp.Total = total //根据视频ID获取置顶视频信息 resp.List = make([]imagetopmod.ImageTopResp, len(imageTopList)) for i, v := range imageTopList { vidInfo, _ := vidmod.GetVideoByID(v.ImageId) resp.List[i] = imagetopmod.ImageTopResp{ ID: vidInfo.ID, NewsType: vidInfo.NewsType, PubliserID: vidInfo.PublisherID, Title: vidInfo.Title, SourceID: vidInfo.SourceID, SourceURL: vidInfo.SourceURL, FileName: vidInfo.Filename, PlayTime: vidInfo.PlayTime, Status: vidInfo.Status, Cover: vidInfo.Cover, CoverThumb: vidInfo.CoverThumb, SeriesCover: vidInfo.SeriesCover, PlayCount: vidInfo.PlayCount, LikeCount: vidInfo.LikeCount, CommentCount: vidInfo.CommentCount, ShareCount: vidInfo.ShareCount, FakeLikeCount: vidInfo.FakeLikeCount, FakeCommentCount: vidInfo.FakeCommentCount, FakeShareCount: vidInfo.FakeShareCount, FakePlayCount: vidInfo.FakePlayCount, Coins: vidInfo.Coins, Resolution: vidInfo.Resolution, FreeTime: vidInfo.FreeTime, Chosen: vidInfo.Chosen, FreeArea: vidInfo.FreeArea, Size: vidInfo.Size, CreatedAt: vidInfo.CreatedAt, UpdatedAt: vidInfo.UpdatedAt, Reason: vidInfo.Reason, IsTopping: vidInfo.IsTopping, IsRecommend: vidInfo.IsRecommend, IsChoosen: vidInfo.IsChoosen, RecoWeight: vidInfo.RecoWeight, ReviewAccount: vidInfo.ReviewAccount, LinkUrl: vidInfo.LinkUrl, SortCode: vidInfo.SortCode, Rewarded: vidInfo.Rewarded, FakeRewarded: vidInfo.FakeRewarded, LiaoBaTop: vidInfo.LiaoBaTop, LiaoBaTopSort: vidInfo.LiaoBaTopSort, WorksSort: vidInfo.WorksSort, PageViewCount: vidInfo.PageViewCount, ActivityID: vidInfo.ActivityID, NewSort: v.NewSort, NewEndTime: *v.NewEndTime, RecommendSort: v.RecommendSort, RecommendEndTime: *v.RecommendEndTime, } } code = stderr.Success data = resp return } func UpdateImageTop(req imagetopmod.EditReq) (code stderr.Code, data interface{}) { doc := imagetopmod.ImageTopModel{ ImageId: req.ID, NewSort: req.NewSort, RecommendSort: req.RecommendSort, NewEndTime: &req.NewEndTime, RecommendEndTime: &req.RecommendEndTime, UpdatedAt: time.Now(), } update, _ := common.ToBsonM(doc) if _, err := imagetopmod.UpdateImageTop(req.ID, update); err != nil { log.Error(fmt.Sprintf("更新置顶帖子 发生错误:%v", err), log.Any("params", req)) return stderr.ErrDbUpdateError, nil } return stderr.Success, nil } func DeleteImageTop(req imagetopmod.DeleteReq) (code stderr.Code, data interface{}) { if err := imagetopmod.DeleteOne(req.Id); err != nil { log.Error(fmt.Sprintf("删除置顶贴子 发生错误:%v", err), log.Any("params", req)) return stderr.ErrDbDeleteError, nil } set := bson.M{"happinessPlazaTop": 0} //兼容老版本,将幸福广场参数置为0 if _, err := vidmod.UpdateOneByID(req.Id, set); err != nil { log.Error(fmt.Sprintf("更新视频信息 发生错误:%v", err), log.Any("params", req)) return stderr.ErrDbUpdateError, nil } return stderr.Success, nil }