package short import ( "errors" "live/app/lib" "live/app/lib/recook" "live/app/lib/tencent" "live/app/logic/topic" "live/app/logic/user" "live/app/model/short" topic2 "live/app/model/topic" user2 "live/app/model/user" ) type Short struct { } // @Title 短视频上传接口 // @Param userId uint true "会员id" // @Param goodsId uint true "推荐商品id" // @Param topicIc uint true "参与话题id 0=未参与话题" // @Param fileId string true "腾讯云视频id" // @Param content string true "发布内容" func (s *Short) Publish(userId, goodsId, topicId uint, fileId, content string) error { info, err := tencent.Short.GetInfo(fileId) if err != nil { return errors.New("上传视频错误") } if len(info.Response.MediaInfoSet) == 0 { return errors.New("上传视频错误") } fileInfo := info.Response.MediaInfoSet[0] id := (&short.Short{}).Create(&short.Short{ UserId: userId, GoodsId: goodsId, TopicId: topicId, Content: content, FileId: fileId, MediaUrl: fileInfo.BasicInfo.MediaUrl, CoverUrl: fileInfo.BasicInfo.CoverUrl, }) if id > 0 { // 话题统计 if topicId > 0 { // 参与人数 (&topic.Substance{}).AddSubstance(userId, topicId) // 添加内容 (&topic2.Topic{}).AddPartake(topicId) } return nil } return errors.New("网络异常") } type TopicInfoItem struct { recook.ReplyUserItem Content string `json:"content"` CoverUrl string `json:"coverUrl"` TrendId uint `json:"trendId"` OriginId uint `json:"originId"` TrendType int `json:"trendType"` Praise uint `json:"praise"` IsPraise int `json:"isPraise"` } // @Title 短视频话题列表 func (s *Short) ListByTopicId(userId, topicId uint, page lib.Page) (result *[]TopicInfoItem, count int64, err error) { result = &[]TopicInfoItem{} shortModel := &short.Short{} count = shortModel.GetListCountByTopicId(topicId) start := (page.GetPage() - 1) * page.GetLimit() if count <= int64(start) { // 没有数据,不需要查库 return } lists := shortModel.GetListByTopicId(topicId, start, page.GetLimit()) userIds := []uint{} shortIds := []uint{} for _, list := range lists { userIds = append(userIds, list.UserId) shortIds = append(shortIds, list.Id) } // 获取会员信息 users, err := recook.User.GetUsers(userIds) if err != nil { return } userMap := map[uint]recook.ReplyUserItem{} for _, userItem := range *users { userMap[userItem.UserId] = userItem } // 获取会员动态信息 trendLists := recook.Trend.Infos(shortIds, user.TREND_TYPE_short) trendIds := []uint{} trendMap := map[uint]recook.TrendInfo{} for _, trendInfo := range *trendLists { trendIds = append(trendIds, trendInfo.Id) trendMap[trendInfo.OriginId] = trendInfo } // 获取动态统计信息 userTrendDataModel := &user2.UserTrendData{} userTrendDataLists := userTrendDataModel.GetListByTrendIds(trendIds) userTrendDataMap := map[uint]user2.UserTrendData{} for _, item := range userTrendDataLists { userTrendDataMap[item.TrendId] = item } // 当前会员是否赞过当前列表的数据 userPraiseMap := map[uint]user2.UserTrendPraise{} if userId > 0 { userTrendPraise := &user2.UserTrendPraise{} userPraises := userTrendPraise.GetPraiseByUserIdAndTrendIds(userId, trendIds) for _, praise := range userPraises { userPraiseMap[praise.TrendId] = praise } } for _, list := range lists { trendInfo := trendMap[list.Id] hasPraise := 0 if _, ok := userPraiseMap[trendInfo.Id]; ok { hasPraise = 1 } *result = append(*result, TopicInfoItem{ ReplyUserItem: userMap[list.UserId], Content: list.Content, CoverUrl: list.CoverUrl, TrendId: trendInfo.Id, OriginId: trendInfo.OriginId, TrendType: trendInfo.TrendType, Praise: userTrendDataMap[trendInfo.Id].Praise, IsPraise: hasPraise, }) } return }