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.
58 lines
1.4 KiB
58 lines
1.4 KiB
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 |
|
}
|
|
|