go-common/app/job/bbq/video/service/comment.go
2019-04-22 18:49:16 +08:00

77 lines
1.6 KiB
Go

package service
import (
"context"
"fmt"
"go-common/library/log"
"sync"
"sync/atomic"
)
const (
_stateActive = 0
_defaultType = 23
)
//CommentReg 评论开关
func (s *Service) CommentReg(c context.Context, oid int64, state int16) (err error) {
req := map[string]interface{}{
"oid": oid,
"type": _defaultType,
"adid": 0,
"mid": 0,
"state": state,
}
err = s.dao.ReplyReg(c, req)
return
}
// AutoRegAll 批量注册评论
func (s *Service) AutoRegAll(c context.Context) {
var (
IDs []int64
e int
err error
lastID int64
num int64
failNum int64
)
for {
IDs, lastID, _ = s.dao.GetVideoByLastID(c, lastID)
if len(IDs) == 0 {
break
}
sum := len(IDs)
partNum := 200
rnum := int(sum / partNum)
log.Info("rountine start num[%d]", rnum)
var wg sync.WaitGroup
for i := 0; i < rnum+1; i++ {
wg.Add(1)
if e = (i + 1) * partNum; e > sum {
e = sum
}
r := IDs[i*partNum : e]
go func(ids []int64, k int) {
defer wg.Done()
for _, svid := range ids {
err = s.CommentReg(c, svid, _stateActive)
if err != nil {
atomic.AddInt64(&failNum, 1)
fmt.Printf("Comment active fail [%v]\n", err)
log.Errorv(c, log.KV("log", fmt.Sprintf("Comment active fail [%v]", err)))
} else {
atomic.AddInt64(&num, 1)
fmt.Printf("Comment active success oid:[%d]\n", svid)
log.Infov(c, log.KV("log", fmt.Sprintf("Comment active success oid:[%d]", svid)))
}
}
}(r, i)
}
wg.Wait()
}
log.Info("comment reg complete succ[%d] fail[%d]", num, failNum)
fmt.Printf("comment reg complete succ[%d] fail[%d]", num, failNum)
}