12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package dao
- import (
- "bytes"
- "context"
- "github.com/pkg/errors"
- "github.com/tsuna/gohbase/hrpc"
- "go-common/app/interface/live/push-live/model"
- "go-common/library/log"
- "strconv"
- "strings"
- )
- var (
- _hbaseTable = "live:push_blacklist"
- _hbaseFamily = "blacklist"
- errLinkValueSplit = errors.New("link_value split result nil.")
- )
- // GetBlackList get blacklist from hbase by target id
- func (d *Dao) GetBlackList(c context.Context, task *model.ApPushTask) (mids map[int64]bool, err error) {
- var (
- key string
- result *hrpc.Result
- ctx, cancel = context.WithTimeout(c, d.blackListHBaseReadTimeout)
- emptyByte = []byte("")
- fbytes = []byte(_hbaseFamily)
- )
- defer cancel()
- split := strings.Split(task.LinkValue, ",")
- if split == nil {
- err = errLinkValueSplit
- return
- }
- key = split[0]
- mids = make(map[int64]bool)
- if result, err = d.blackListHBase.GetStr(ctx, _hbaseTable, key); err != nil {
- log.Error("[dao.blacklist|GetBlackList] d.blackListHBase.Get error(%v) querytable(%v), roomid(%s), task(%v)",
- err, _hbaseTable, key, task)
- return
- }
- if result == nil {
- return
- }
- for _, c := range result.Cells {
- if c != nil && bytes.Equal(c.Family, fbytes) && !bytes.Equal(c.Qualifier, emptyByte) {
- uid, e := strconv.ParseInt(string(c.Qualifier), 10, 64)
- if e != nil {
- continue
- }
- mids[uid] = true
- }
- }
- log.Info("[dao.blacklist|GetBlackList] get blacklist(%v), roomid(%s), task(%v)", mids, key, task)
- return
- }
|