mask.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package service
  2. import (
  3. "context"
  4. "go-common/app/interface/main/dm2/model"
  5. "go-common/library/ecode"
  6. )
  7. // UpdateMask update mask list
  8. func (s *Service) UpdateMask(c context.Context, cid, masktime int64, fps int32, plat int8, list string) (err error) {
  9. var sub *model.Subject
  10. if sub, err = s.subject(c, model.SubTypeVideo, cid); err != nil {
  11. return
  12. }
  13. if sub == nil {
  14. err = ecode.ArchiveNotExist
  15. return
  16. }
  17. if err = s.dao.UpdateMask(c, cid, masktime, fps, plat, list); err != nil {
  18. return
  19. }
  20. if plat == model.MaskPlatMbl {
  21. sub.AttrSet(model.AttrYes, model.AttrSubMblMaskReady)
  22. } else {
  23. sub.AttrSet(model.AttrYes, model.AttrSubWebMaskReady)
  24. }
  25. if _, err = s.dao.UptSubAttr(c, model.SubTypeVideo, cid, sub.Attr); err != nil {
  26. return
  27. }
  28. tmp := *sub
  29. s.cache.Do(c, func(ctx context.Context) {
  30. s.dao.AddSubjectCache(ctx, &tmp)
  31. })
  32. mask, err := s.dao.MaskList(c, cid, plat)
  33. if err != nil || mask == nil {
  34. return
  35. }
  36. maskTmp := *mask
  37. s.cache.Do(c, func(ctx context.Context) {
  38. s.dao.AddMaskCache(ctx, model.SubTypeVideo, &maskTmp)
  39. })
  40. return
  41. }
  42. // MaskListWithSub .
  43. func (s *Service) MaskListWithSub(c context.Context, cid int64, plat int8, sub *model.Subject) (mask *model.Mask, err error) {
  44. var ok bool
  45. if plat == model.MaskPlatWeb {
  46. if sub.AttrVal(model.AttrSubMaskOpen) == model.AttrYes && sub.AttrVal(model.AttrSubWebMaskReady) == model.AttrYes {
  47. ok = true
  48. }
  49. } else {
  50. if sub.AttrVal(model.AttrSubMaskOpen) == model.AttrYes && sub.AttrVal(model.AttrSubMblMaskReady) == model.AttrYes {
  51. ok = true
  52. }
  53. }
  54. if !ok {
  55. return
  56. }
  57. if mask, err = s.dao.DMMaskCache(c, model.SubTypeVideo, cid, plat); err != nil {
  58. err = nil
  59. ok = false
  60. }
  61. if mask == nil {
  62. if mask, err = s.dao.MaskList(c, cid, plat); err != nil || mask == nil {
  63. return
  64. }
  65. if ok {
  66. tmp := *mask
  67. s.cache.Do(c, func(ctx context.Context) {
  68. s.dao.AddMaskCache(ctx, model.SubTypeVideo, &tmp)
  69. })
  70. }
  71. }
  72. return
  73. }
  74. // MaskList get mask info
  75. func (s *Service) MaskList(c context.Context, cid int64, plat int8) (mask *model.Mask, err error) {
  76. var sub *model.Subject
  77. if sub, err = s.subject(c, model.SubTypeVideo, cid); err != nil || sub == nil {
  78. return
  79. }
  80. return s.MaskListWithSub(c, cid, plat, sub)
  81. }