77 lines
1.7 KiB
Go
77 lines
1.7 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"go-common/app/interface/main/growup/model"
|
|
|
|
"go-common/library/ecode"
|
|
"go-common/library/log"
|
|
"go-common/library/net/metadata"
|
|
xtime "go-common/library/time"
|
|
)
|
|
|
|
// JoinColumn join up to creative column
|
|
func (s *Service) JoinColumn(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
|
|
}
|
|
|
|
// get up view
|
|
ip := metadata.String(c, metadata.RemoteIP)
|
|
stat, err := s.dao.ArticleStat(c, mid, ip)
|
|
if err != nil {
|
|
log.Error("s.dao.ArticleStat mid(%d) error(%v)", mid, err)
|
|
return
|
|
}
|
|
if stat.View < s.conf.Threshold.LimitArticleView {
|
|
log.Info("mid(%d) view(%s) not reach standard", mid, stat.View)
|
|
return ecode.GrowupDisabled
|
|
}
|
|
|
|
// get up nickname
|
|
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
|
|
}
|
|
state, err := s.dao.GetAccountState(c, "up_info_column", mid)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
// if account state is 2 3 4 5 6 7 return
|
|
if state >= 2 && state < 8 {
|
|
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,
|
|
MainCategory: 0,
|
|
Fans: fans,
|
|
AccountState: 2,
|
|
SignType: signType,
|
|
ApplyAt: now,
|
|
TotalPlayCount: stat.View,
|
|
}
|
|
|
|
_, err = s.dao.InsertUpInfo(c, "up_info_column", "total_view_count", v)
|
|
return
|
|
}
|