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.
169 lines
5.2 KiB
169 lines
5.2 KiB
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 |
|
}
|
|
|