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.
102 lines
1.9 KiB
102 lines
1.9 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"time" |
|
|
|
"go-common/app/interface/main/growup/model" |
|
|
|
"go-common/library/database/sql" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
xtime "go-common/library/time" |
|
) |
|
|
|
// JoinBgm join bgm |
|
func (s *Service) JoinBgm(c context.Context, mid int64, accountType, signType int) (err error) { |
|
id, err := s.dao.Blocked(c, mid) |
|
if err != nil { |
|
log.Error("s.dao.GetBlocked mid(%d) error(%v)", mid, err) |
|
return |
|
} |
|
if id != 0 { |
|
log.Info("mid(%d) is blocked", mid) |
|
return ecode.GrowupDisabled |
|
} |
|
|
|
ok, err := s.checkBgmStat(c, mid) |
|
if err != nil { |
|
log.Info("s.checkBgmStat error(%v)", err) |
|
return |
|
} |
|
if !ok { |
|
return ecode.GrowupDisabled |
|
} |
|
|
|
count, err := s.dao.BGMCount(c, mid) |
|
if err != nil { |
|
log.Info("s.dao.BGMCount error(%v)", err) |
|
return |
|
} |
|
|
|
avStat, err := s.dao.GetAccountState(c, "up_info_video", mid) |
|
if err != nil { |
|
return |
|
} |
|
|
|
if avStat >= 5 && avStat <= 7 { |
|
return ecode.GrowupDisabled |
|
} |
|
|
|
columnStat, err := s.dao.GetAccountState(c, "up_info_column", mid) |
|
if err != nil { |
|
return |
|
} |
|
|
|
if columnStat >= 5 && columnStat <= 7 { |
|
return ecode.GrowupDisabled |
|
} |
|
|
|
card, err := s.dao.Card(c, mid) |
|
if err != nil { |
|
log.Error("s.dao.Card(%d) error(%v)", mid, err) |
|
return |
|
} |
|
fans, err := s.dao.Fans(c, mid) |
|
if err != nil { |
|
return |
|
} |
|
|
|
now := xtime.Time(time.Now().Unix()) |
|
// sign_type: 1.basic; 2.first publish; 0:default. |
|
v := &model.UpInfo{ |
|
MID: mid, |
|
Nickname: card.Name, |
|
AccountType: accountType, |
|
Fans: fans, |
|
SignType: signType, |
|
SignedAt: now, |
|
Bgms: count, |
|
} |
|
|
|
var tx *sql.Tx |
|
if tx, err = s.dao.BeginTran(c); err != nil { |
|
return |
|
} |
|
|
|
if _, err = s.dao.TxInsertBgmUpInfo(tx, v); err != nil { |
|
tx.Rollback() |
|
return |
|
} |
|
|
|
if _, err = s.dao.TxInsertCreditScore(tx, mid); err != nil { |
|
tx.Rollback() |
|
return |
|
} |
|
|
|
err = tx.Commit() |
|
if err != nil { |
|
log.Error("tx.Commit error(%v)", err) |
|
} |
|
return |
|
}
|
|
|