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.
86 lines
2.2 KiB
86 lines
2.2 KiB
package service |
|
|
|
import ( |
|
"context" |
|
|
|
"go-common/app/interface/main/dm2/model" |
|
"go-common/library/ecode" |
|
) |
|
|
|
// UpdateMask update mask list |
|
func (s *Service) UpdateMask(c context.Context, cid, masktime int64, fps int32, plat int8, list string) (err error) { |
|
var sub *model.Subject |
|
if sub, err = s.subject(c, model.SubTypeVideo, cid); err != nil { |
|
return |
|
} |
|
if sub == nil { |
|
err = ecode.ArchiveNotExist |
|
return |
|
} |
|
if err = s.dao.UpdateMask(c, cid, masktime, fps, plat, list); err != nil { |
|
return |
|
} |
|
if plat == model.MaskPlatMbl { |
|
sub.AttrSet(model.AttrYes, model.AttrSubMblMaskReady) |
|
} else { |
|
sub.AttrSet(model.AttrYes, model.AttrSubWebMaskReady) |
|
} |
|
if _, err = s.dao.UptSubAttr(c, model.SubTypeVideo, cid, sub.Attr); err != nil { |
|
return |
|
} |
|
tmp := *sub |
|
s.cache.Do(c, func(ctx context.Context) { |
|
s.dao.AddSubjectCache(ctx, &tmp) |
|
}) |
|
mask, err := s.dao.MaskList(c, cid, plat) |
|
if err != nil || mask == nil { |
|
return |
|
} |
|
maskTmp := *mask |
|
s.cache.Do(c, func(ctx context.Context) { |
|
s.dao.AddMaskCache(ctx, model.SubTypeVideo, &maskTmp) |
|
}) |
|
return |
|
} |
|
|
|
// MaskListWithSub . |
|
func (s *Service) MaskListWithSub(c context.Context, cid int64, plat int8, sub *model.Subject) (mask *model.Mask, err error) { |
|
var ok bool |
|
if plat == model.MaskPlatWeb { |
|
if sub.AttrVal(model.AttrSubMaskOpen) == model.AttrYes && sub.AttrVal(model.AttrSubWebMaskReady) == model.AttrYes { |
|
ok = true |
|
} |
|
} else { |
|
if sub.AttrVal(model.AttrSubMaskOpen) == model.AttrYes && sub.AttrVal(model.AttrSubMblMaskReady) == model.AttrYes { |
|
ok = true |
|
} |
|
} |
|
if !ok { |
|
return |
|
} |
|
if mask, err = s.dao.DMMaskCache(c, model.SubTypeVideo, cid, plat); err != nil { |
|
err = nil |
|
ok = false |
|
} |
|
if mask == nil { |
|
if mask, err = s.dao.MaskList(c, cid, plat); err != nil || mask == nil { |
|
return |
|
} |
|
if ok { |
|
tmp := *mask |
|
s.cache.Do(c, func(ctx context.Context) { |
|
s.dao.AddMaskCache(ctx, model.SubTypeVideo, &tmp) |
|
}) |
|
} |
|
} |
|
return |
|
} |
|
|
|
// MaskList get mask info |
|
func (s *Service) MaskList(c context.Context, cid int64, plat int8) (mask *model.Mask, err error) { |
|
var sub *model.Subject |
|
if sub, err = s.subject(c, model.SubTypeVideo, cid); err != nil || sub == nil { |
|
return |
|
} |
|
return s.MaskListWithSub(c, cid, plat, sub) |
|
}
|
|
|