go-common/app/admin/main/videoup/service/pgc.go
2019-04-22 18:49:16 +08:00

170 lines
5.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}