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.
76 lines
1.6 KiB
76 lines
1.6 KiB
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) |
|
|
|
}
|
|
|