12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package dao
- import (
- "bytes"
- "context"
- "fmt"
- "strconv"
- "time"
- "go-common/app/job/main/spy/model"
- "go-common/library/log"
- "github.com/pkg/errors"
- "github.com/tsuna/gohbase/hrpc"
- )
- var (
- // table
- _hbaseTableActive = "active_data"
- // family
- _familyDays = "activeDays"
- _familyDaysB = []byte(_familyDays)
- )
- func strRowKey(mid int64) string {
- return fmt.Sprintf("%d", mid)
- }
- // GetActiveData get user active days and watched bangumi video time
- func (dao *Dao) GetActiveData(c context.Context, mid int64) (active *model.Active, err error) {
- var (
- result *hrpc.Result
- key = strRowKey(mid)
- ctx, cancel = context.WithTimeout(c, time.Duration(dao.c.HBase.ReadTimeout))
- )
- defer cancel()
- if result, err = dao.hbase.GetStr(ctx, _hbaseTableActive, key); err != nil {
- err = errors.Wrapf(err, "hbase.GetStr(%s,%s)", _hbaseTableActive, key)
- return
- }
- active = &model.Active{}
- for _, c := range result.Cells {
- h := &model.Active{}
- if c != nil && bytes.Equal(c.Family, _familyDaysB) {
- days, err := strconv.ParseInt(string(c.Qualifier), 10, 64)
- if err != nil {
- log.Error("strconv.ParseInt err(%v)", err)
- continue
- }
- h.Active = days
- active = h
- }
- }
- return
- }
|