You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.0 KiB
126 lines
3.0 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"strconv" |
|
|
|
"go-common/app/job/main/archive-shjd/model" |
|
arcmdl "go-common/app/service/main/archive/model/archive" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
|
|
"github.com/pkg/errors" |
|
) |
|
|
|
// UpdateCache is |
|
func (s *Service) UpdateCache(old *model.Archive, nw *model.Archive, action string) (err error) { |
|
defer func() { |
|
if err == nil { |
|
s.notifyPub.Send(context.Background(), strconv.FormatInt(nw.AID, 10), &model.Notify{Table: _tableArchive, Nw: nw, Old: old, Action: action}) |
|
return |
|
} |
|
// retry |
|
item := &model.RetryItem{ |
|
Old: old, |
|
Nw: nw, |
|
Tp: model.TypeForUpdateArchive, |
|
Action: action, |
|
} |
|
if err1 := s.PushItem(context.TODO(), item); err1 != nil { |
|
log.Error("s.PushItem(%+v) error(%+v)", item, err1) |
|
return |
|
} |
|
}() |
|
args := &arcmdl.ArgCache2{} |
|
args.Aid = nw.AID |
|
args.Tp = arcmdl.CacheUpdate |
|
if old == nil { |
|
// insert |
|
if nw.State >= 0 { |
|
args.Tp = arcmdl.CacheAdd |
|
} |
|
} else { |
|
if nw.State >= 0 { |
|
args.Tp = arcmdl.CacheAdd |
|
} else { |
|
args.Tp = arcmdl.CacheDelete |
|
} |
|
if nw.Mid != old.Mid { |
|
args.OldMid = old.Mid |
|
} |
|
if old.TypeID != nw.TypeID { |
|
fieldAgs := &arcmdl.ArgFieldCache2{Aid: nw.AID, TypeID: nw.TypeID, OldTypeID: old.TypeID} |
|
for cluster, arc := range s.arcRPCs { |
|
if err = arc.ArcFieldCache2(context.TODO(), fieldAgs); err != nil { |
|
log.Error("s.arcRPC.ArcFieldCache2(%s, %+v) error(%+v)", cluster, fieldAgs, err) |
|
return |
|
} |
|
} |
|
} |
|
} |
|
for cluster, arc := range s.arcRPCs { |
|
if err = arc.ArcCache2(context.TODO(), args); err != nil { |
|
log.Error("s.arcRPC.ArcCache2(%s,%+v) error(%v)", cluster, args, err) |
|
return |
|
} |
|
} |
|
return |
|
} |
|
|
|
// UpdateVideoCache is |
|
func (s *Service) UpdateVideoCache(aid, cid int64) (err error) { |
|
defer func() { |
|
if err == nil { |
|
return |
|
} |
|
// retry |
|
item := &model.RetryItem{ |
|
AID: aid, |
|
CID: cid, |
|
Tp: model.TypeForUpdateVideo, |
|
} |
|
if err1 := s.PushItem(context.TODO(), item); err1 != nil { |
|
log.Error("s.PushItem(%+v) error(%+v)", item, err1) |
|
return |
|
} |
|
}() |
|
for cluster, arc := range s.arcRPCs { |
|
if err = arc.UpVideo2(context.TODO(), &arcmdl.ArgVideo2{Aid: aid, Cid: cid}); err != nil { |
|
if ecode.Cause(err).Equal(ecode.NothingFound) { |
|
err = nil |
|
return |
|
} |
|
err = errors.Wrapf(err, "s.arcRPC.UpVideo2 cluster(%s)", cluster) |
|
} |
|
} |
|
return |
|
} |
|
|
|
// DelteVideoCache del video cache |
|
func (s *Service) DelteVideoCache(aid, cid int64) (err error) { |
|
defer func() { |
|
if err == nil { |
|
return |
|
} |
|
// retry |
|
item := &model.RetryItem{ |
|
AID: aid, |
|
CID: cid, |
|
Tp: model.TypeForDelVideo, |
|
} |
|
if err1 := s.PushItem(context.TODO(), item); err1 != nil { |
|
log.Error("s.PushItem(%+v) error(%+v)", item, err1) |
|
return |
|
} |
|
}() |
|
for cluster, arc := range s.arcRPCs { |
|
if err = arc.DelVideo2(context.TODO(), &arcmdl.ArgVideo2{Aid: aid, Cid: cid}); err != nil { |
|
if ecode.Cause(err).Equal(ecode.NothingFound) { |
|
err = nil |
|
return |
|
} |
|
err = errors.Wrapf(err, "s.arcRPC.VdelVideo2 cluster(%s)", cluster) |
|
} |
|
} |
|
return |
|
}
|
|
|