123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package service
- import (
- "context"
- "time"
- "go-common/app/interface/main/space/model"
- arcmdl "go-common/app/service/main/archive/api"
- coinmdl "go-common/app/service/main/coin/api"
- "go-common/library/log"
- )
- const (
- _coinVideoLimit = 100
- _businessCoin = "archive"
- )
- var _emptyCoinArcList = make([]*model.CoinArc, 0)
- // CoinVideo get coin archives
- func (s *Service) CoinVideo(c context.Context, mid, vmid int64) (list []*model.CoinArc, err error) {
- var (
- coinReply *coinmdl.ListReply
- aids []int64
- arcReply *arcmdl.ArcsReply
- )
- if mid != vmid {
- if err = s.privacyCheck(c, vmid, model.PcyCoinVideo); err != nil {
- return
- }
- }
- if coinReply, err = s.coinClient.List(c, &coinmdl.ListReq{Mid: vmid, Business: _businessCoin, Ts: time.Now().Unix()}); err != nil {
- log.Error("s.coinClinet.List(%d) error(%v)", vmid, err)
- err = nil
- list = _emptyCoinArcList
- return
- }
- existAids := make(map[int64]int64, len(coinReply.List))
- afVideos := make(map[int64]*coinmdl.ModelList, len(coinReply.List))
- for _, v := range coinReply.List {
- if len(aids) > _coinVideoLimit {
- break
- }
- if _, ok := existAids[v.Aid]; ok {
- if v.Aid > 0 {
- afVideos[v.Aid].Number += v.Number
- }
- continue
- }
- if v.Aid > 0 {
- afVideos[v.Aid] = v
- aids = append(aids, v.Aid)
- existAids[v.Aid] = v.Aid
- }
- }
- if len(aids) == 0 {
- list = _emptyCoinArcList
- return
- }
- if arcReply, err = s.arcClient.Arcs(c, &arcmdl.ArcsRequest{Aids: aids}); err != nil {
- log.Error("s.arcClient.Arcs(%v) error(%v)", aids, err)
- return
- }
- for _, aid := range aids {
- if arc, ok := arcReply.Arcs[aid]; ok && arc.IsNormal() {
- if arc.Access >= 10000 {
- arc.Stat.View = -1
- }
- if item, ok := afVideos[aid]; ok {
- list = append(list, &model.CoinArc{Arc: arc, Coins: item.Number, Time: item.Ts})
- }
- }
- }
- if len(list) == 0 {
- list = _emptyCoinArcList
- }
- return
- }
|