127 lines
3.0 KiB
Go
127 lines
3.0 KiB
Go
|
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
|
||
|
}
|