77 lines
1.6 KiB
Go
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)
|
||
|
|
||
|
}
|