12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package dao
- import (
- "bytes"
- "context"
- "crypto/md5"
- "encoding/hex"
- "strconv"
- "time"
- "go-common/app/job/main/growup/model"
- "go-common/library/log"
- )
- var (
- //HBaseArchiveTablePrefix 分类分端播放
- HBaseArchiveTablePrefix = "video_play_category_"
- //HBaseFamilyPlat family
- HBaseFamilyPlat = []byte("v")
- )
- func hbaseMd5Key(aid int64) string {
- hasher := md5.New()
- hasher.Write([]byte(strconv.Itoa(int(aid))))
- return hex.EncodeToString(hasher.Sum(nil))
- }
- // ArchiveStat get the stat of archive.
- func (d *Dao) ArchiveStat(c context.Context, aid int64, date time.Time) (stat *model.ArchiveStat, err error) {
- var (
- ctx, cancel = context.WithTimeout(c, time.Duration(d.c.HBase.ReadTimeout))
- tableName = HBaseArchiveTablePrefix + date.Format("20060102")
- key = hbaseMd5Key(aid)
- )
- defer cancel()
- result, err := d.hbase.GetStr(ctx, tableName, key)
- if err != nil {
- log.Error("ArchiveStat d.hbase.GetStr tableName(%s)|aid(%d)|key(%v)|error(%v)", tableName, aid, key, err)
- return
- }
- if result == nil {
- return
- }
- stat = &model.ArchiveStat{}
- for _, c := range result.Cells {
- if c == nil {
- continue
- }
- v, _ := strconv.ParseInt(string(c.Value[:]), 10, 64)
- if !bytes.Equal(c.Family, HBaseFamilyPlat) {
- continue
- }
- switch {
- case bytes.Equal(c.Qualifier, []byte("play")):
- stat.Play = v
- case bytes.Equal(c.Qualifier, []byte("dm")):
- stat.Dm = v
- case bytes.Equal(c.Qualifier, []byte("reply")):
- stat.Reply = v
- case bytes.Equal(c.Qualifier, []byte("like")):
- stat.Like = v
- case bytes.Equal(c.Qualifier, []byte("sh")):
- stat.Share = v
- }
- }
- return
- }
|