170 lines
5.2 KiB
Go
170 lines
5.2 KiB
Go
|
package service
|
|||
|
|
|||
|
import (
|
|||
|
"context"
|
|||
|
"fmt"
|
|||
|
"strings"
|
|||
|
"time"
|
|||
|
|
|||
|
"go-common/app/admin/main/videoup/model/archive"
|
|||
|
"go-common/library/database/sql"
|
|||
|
"go-common/library/log"
|
|||
|
xtime "go-common/library/time"
|
|||
|
)
|
|||
|
|
|||
|
// PassByPGC update pgc archive state to StateOpen.
|
|||
|
func (s *Service) PassByPGC(c context.Context, aid int64, gid int64, attrs map[uint]int32, redirectURL string, now time.Time) (err error) {
|
|||
|
// archive
|
|||
|
var a *archive.Archive
|
|||
|
if a, err = s.arc.Archive(c, aid); err != nil || a == nil {
|
|||
|
log.Error("s.arc.Archive(%d) error(%v) or a==nil", aid, err)
|
|||
|
return
|
|||
|
}
|
|||
|
log.Info("aid(%d) begin tran pass pgc", aid)
|
|||
|
// begin tran
|
|||
|
var tx *sql.Tx
|
|||
|
if tx, err = s.arc.BeginTran(c); err != nil {
|
|||
|
log.Error("s.arc.BeginTran() error(%v)", err)
|
|||
|
return
|
|||
|
}
|
|||
|
defer func() {
|
|||
|
if r := recover(); r != nil {
|
|||
|
tx.Rollback()
|
|||
|
log.Error("wocao jingran recover le error(%v)", r)
|
|||
|
}
|
|||
|
}()
|
|||
|
if a.State != archive.StateOpen {
|
|||
|
var firstPass bool
|
|||
|
if firstPass, err = s.txUpArcState(c, tx, a.Aid, archive.StateOpen); err != nil {
|
|||
|
tx.Rollback()
|
|||
|
log.Error("PassByPGC s.txUpArcState(aid(%d),state(%d)) error(%v)", aid, archive.StateOpen, err)
|
|||
|
return
|
|||
|
}
|
|||
|
a.State = archive.StateOpen
|
|||
|
log.Info("archive(%d) update archive state(%d)", a.Aid, a.State)
|
|||
|
|
|||
|
// archive ptime
|
|||
|
if firstPass {
|
|||
|
pTime := xtime.Time(now.Unix())
|
|||
|
if _, err = s.arc.TxUpArcPTime(tx, a.Aid, pTime); err != nil {
|
|||
|
tx.Rollback()
|
|||
|
log.Error("s.arc.TxUpArcPTime(%d, %d) error(%v)", a.Aid, pTime, err)
|
|||
|
return
|
|||
|
}
|
|||
|
a.PTime = pTime
|
|||
|
log.Info("archive(%d) second_round upPTime(%d)", a.Aid, a.PTime)
|
|||
|
}
|
|||
|
var round = s.archiveRound(c, a, a.Aid, a.Mid, a.TypeID, a.Round, a.State, false)
|
|||
|
if _, err = s.arc.TxUpArcRound(tx, a.Aid, round); err != nil {
|
|||
|
tx.Rollback()
|
|||
|
log.Error("s.arc.TxUpArcRound(%d, %d) error(%v)", a.Aid, round, err)
|
|||
|
return
|
|||
|
}
|
|||
|
a.Round = round
|
|||
|
log.Info("archive(%d) second_round upRound(%d)", a.Aid, a.Round)
|
|||
|
}
|
|||
|
var conts []string
|
|||
|
if conts, err = s.txUpArcAttrs(tx, a, attrs, redirectURL); err != nil {
|
|||
|
tx.Rollback()
|
|||
|
return
|
|||
|
}
|
|||
|
if err = tx.Commit(); err != nil {
|
|||
|
log.Error("tx.Commit() error(%v)", err)
|
|||
|
return
|
|||
|
}
|
|||
|
log.Info("aid(%d) end tran pass pgc", aid)
|
|||
|
if _, err := s.oversea.UpPolicyRelation(c, aid, gid); err != nil {
|
|||
|
conts = append(conts, fmt.Sprintf("[地区展示]应用策略组ID[%d]", gid))
|
|||
|
}
|
|||
|
if len(conts) > 0 {
|
|||
|
s.arc.AddArcOper(c, a.Aid, 221, a.Attribute, a.TypeID, int16(a.State), a.Round, 1, strings.Join(conts, ","), "")
|
|||
|
}
|
|||
|
// NOTE: send second_round for sync dede.
|
|||
|
s.busSecondRound(aid, 0, false, false, false, false, false, false, "", nil)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// ModifyByPGC update pgc archive attributes.
|
|||
|
func (s *Service) ModifyByPGC(c context.Context, aid int64, gid int64, attrs map[uint]int32, redirectURL string) (err error) {
|
|||
|
// archive
|
|||
|
var a *archive.Archive
|
|||
|
if a, err = s.arc.Archive(c, aid); err != nil || a == nil {
|
|||
|
log.Error("s.arc.Archive(%d) error(%v) or a==nil", aid, err)
|
|||
|
return
|
|||
|
}
|
|||
|
log.Info("aid(%d) begin tran modify pgc", aid)
|
|||
|
// begin tran
|
|||
|
var tx *sql.Tx
|
|||
|
if tx, err = s.arc.BeginTran(c); err != nil {
|
|||
|
log.Error("s.arc.BeginTran() error(%v)", err)
|
|||
|
return
|
|||
|
}
|
|||
|
defer func() {
|
|||
|
if r := recover(); r != nil {
|
|||
|
tx.Rollback()
|
|||
|
log.Error("wocao jingran recover le error(%v)", r)
|
|||
|
}
|
|||
|
}()
|
|||
|
var conts []string
|
|||
|
if conts, err = s.txUpArcAttrs(tx, a, attrs, redirectURL); err != nil {
|
|||
|
tx.Rollback()
|
|||
|
return
|
|||
|
}
|
|||
|
if err = tx.Commit(); err != nil {
|
|||
|
log.Error("tx.Commit() error(%v)", err)
|
|||
|
return
|
|||
|
}
|
|||
|
log.Info("aid(%d) end tran modify pgc", aid)
|
|||
|
if _, err := s.oversea.UpPolicyRelation(c, aid, gid); err != nil {
|
|||
|
conts = append(conts, fmt.Sprintf("[地区展示]应用策略组ID[%d]", gid))
|
|||
|
}
|
|||
|
if len(conts) > 0 {
|
|||
|
s.arc.AddArcOper(c, a.Aid, 221, a.Attribute, a.TypeID, int16(a.State), a.Round, 1, strings.Join(conts, ","), "")
|
|||
|
}
|
|||
|
// NOTE: send second_round for sync dede.
|
|||
|
s.busSecondRound(aid, 0, false, false, false, false, false, false, "", nil)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// LockByPGC update pgc archive state to StateForbidLock.
|
|||
|
func (s *Service) LockByPGC(c context.Context, aid int64) (err error) {
|
|||
|
// archive
|
|||
|
var a *archive.Archive
|
|||
|
if a, err = s.arc.Archive(c, aid); err != nil || a == nil {
|
|||
|
log.Error("s.arc.Archive(%d) error(%v) or a==nil", aid, err)
|
|||
|
return
|
|||
|
}
|
|||
|
if a.State == archive.StateForbidLock {
|
|||
|
return
|
|||
|
}
|
|||
|
log.Info("aid(%d) begin tran lock pgc", aid)
|
|||
|
// begin tran
|
|||
|
var tx *sql.Tx
|
|||
|
if tx, err = s.arc.BeginTran(c); err != nil {
|
|||
|
log.Error("s.arc.BeginTran() error(%v)", err)
|
|||
|
return
|
|||
|
}
|
|||
|
defer func() {
|
|||
|
if r := recover(); r != nil {
|
|||
|
tx.Rollback()
|
|||
|
log.Error("wocao jingran recover le error(%v)", r)
|
|||
|
}
|
|||
|
}()
|
|||
|
if _, err = s.txUpArcState(c, tx, a.Aid, archive.StateForbidLock); err != nil {
|
|||
|
tx.Rollback()
|
|||
|
log.Error("s.txUpArcState(aid(%d),state(%d)) error(%v)", aid, archive.StateForbidLock, err)
|
|||
|
return
|
|||
|
}
|
|||
|
a.State = archive.StateForbidLock
|
|||
|
log.Info("archive(%d) update archive state(%d)", a.Aid, a.State)
|
|||
|
if err = tx.Commit(); err != nil {
|
|||
|
log.Error("tx.Commit() error(%v)", err)
|
|||
|
return
|
|||
|
}
|
|||
|
log.Info("aid(%d) end tran lock pgc", aid)
|
|||
|
s.arc.AddArcOper(c, a.Aid, 221, a.Attribute, a.TypeID, int16(a.State), a.Round, 1, "", "")
|
|||
|
// NOTE: send second_round for sync dede.
|
|||
|
s.busSecondRound(aid, 0, false, false, false, false, false, false, "", nil)
|
|||
|
return
|
|||
|
}
|