123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- package timemachine
- import (
- "bytes"
- "context"
- "strconv"
- "time"
- "go-common/app/interface/main/activity/model/timemachine"
- "go-common/library/log"
- "github.com/tsuna/gohbase/hrpc"
- )
- const (
- _hBaseUpItemTableName = "dw:mid_main_profile_y"
- )
- // reverse for string.
- func hbaseRowKey(mid int64) string {
- s := strconv.FormatInt(mid, 10)
- rs := []rune(s)
- l := len(rs)
- for f, t := 0, l-1; f < t; f, t = f+1, t-1 {
- rs[f], rs[t] = rs[t], rs[f]
- }
- ns := string(rs)
- if l < 10 {
- for i := 0; i < 10-l; i++ {
- ns = ns + "0"
- }
- }
- return ns
- }
- // RawTimemachine .
- func (d *Dao) RawTimemachine(c context.Context, mid int64) (data *timemachine.Item, err error) {
- var (
- result *hrpc.Result
- ctx, cancel = context.WithTimeout(c, time.Duration(d.c.Hbase.RegionReadTimeout))
- key = hbaseRowKey(mid)
- tableName = _hBaseUpItemTableName
- )
- defer cancel()
- if result, err = d.hbase.GetStr(ctx, tableName, key); err != nil {
- log.Error("UserItem d.hbase.GetStr tableName(%s)|mid(%d)|key(%v)|error(%v)", tableName, mid, key, err)
- return
- }
- if result == nil {
- return
- }
- data = &timemachine.Item{Mid: mid}
- for _, c := range result.Cells {
- if c == nil {
- continue
- }
- if !bytes.Equal(c.Family, []byte("m")) {
- continue
- }
- tmFillFields(data, c)
- }
- return
- }
- func tmFillFields(data *timemachine.Item, c *hrpc.Cell) {
- var (
- intVal int64
- strVal string
- )
- strVal = string(c.Value[:])
- if v, e := strconv.ParseInt(string(c.Value[:]), 10, 64); e == nil {
- intVal = v
- }
- switch {
- case bytes.Equal(c.Qualifier, []byte("is_up")):
- data.IsUp = intVal
- case bytes.Equal(c.Qualifier, []byte("dh")):
- data.DurationHour = intVal
- case bytes.Equal(c.Qualifier, []byte("adh")):
- data.AvDurationHour = intVal
- case bytes.Equal(c.Qualifier, []byte("a_vv")):
- data.ArchiveVv = intVal
- case bytes.Equal(c.Qualifier, []byte("tag_id")):
- data.LikeTagID = intVal
- case bytes.Equal(c.Qualifier, []byte("ls_vv")):
- data.LikeSubtidVv = intVal
- case bytes.Equal(c.Qualifier, []byte("ugc_avs")):
- data.LikesUgc3Avids = strVal
- case bytes.Equal(c.Qualifier, []byte("pgc_avs")):
- data.LikePgc3Avids = strVal
- case bytes.Equal(c.Qualifier, []byte("up")):
- data.LikeBestUpID = intVal
- case bytes.Equal(c.Qualifier, []byte("up_ad")):
- data.LikeUpAvDuration = intVal
- case bytes.Equal(c.Qualifier, []byte("up_ld")):
- data.LikeUpLiveDuration = intVal
- case bytes.Equal(c.Qualifier, []byte("up_avs")):
- data.LikeUp3Avs = strVal
- case bytes.Equal(c.Qualifier, []byte("up_st")):
- data.LikeLiveUpSubTname = strVal
- case bytes.Equal(c.Qualifier, []byte("cir_tm")):
- data.BrainwashCirTime = strVal
- case bytes.Equal(c.Qualifier, []byte("cir_av")):
- data.BrainwashCirAvid = intVal
- case bytes.Equal(c.Qualifier, []byte("cir_v")):
- data.BrainwashCirVv = intVal
- case bytes.Equal(c.Qualifier, []byte("fs_av")):
- data.FirstSubmitAvid = intVal
- case bytes.Equal(c.Qualifier, []byte("fs_tm")):
- data.FirstSubmitTime = strVal
- case bytes.Equal(c.Qualifier, []byte("fs_ty")):
- data.FirstSubmitType = intVal
- case bytes.Equal(c.Qualifier, []byte("s_av_rd")):
- data.SubmitAvsRds = strVal
- case bytes.Equal(c.Qualifier, []byte("bt_av")):
- data.BestAvid = intVal
- case bytes.Equal(c.Qualifier, []byte("bt_ty")):
- data.BestAvidType = intVal
- case bytes.Equal(c.Qualifier, []byte("bt_av_o")):
- data.BestAvidOld = intVal
- case bytes.Equal(c.Qualifier, []byte("bt_av_ty")):
- data.BestAvidOldType = intVal
- case bytes.Equal(c.Qualifier, []byte("o_vv")):
- data.OldAvVv = intVal
- case bytes.Equal(c.Qualifier, []byte("all_vv")):
- data.AllVv = intVal
- case bytes.Equal(c.Qualifier, []byte("live_d")):
- data.UpLiveDuration = intVal
- case bytes.Equal(c.Qualifier, []byte("is_live")):
- data.IsLiveUp = intVal
- case bytes.Equal(c.Qualifier, []byte("ld")):
- data.ValidLiveDays = intVal
- case bytes.Equal(c.Qualifier, []byte("md")):
- data.MaxCdnNumDate = strVal
- case bytes.Equal(c.Qualifier, []byte("mc")):
- data.MaxCdnNum = intVal
- case bytes.Equal(c.Qualifier, []byte("att")):
- data.Attentions = intVal
- case bytes.Equal(c.Qualifier, []byte("fan_vv")):
- data.UpBestFanVv = strVal
- case bytes.Equal(c.Qualifier, []byte("fan_live")):
- data.UpBestFanLiveMinute = strVal
- case bytes.Equal(c.Qualifier, []byte("like_tid")):
- data.Like2Tids = strVal
- case bytes.Equal(c.Qualifier, []byte("like_st")):
- data.Like2SubTids = strVal
- case bytes.Equal(c.Qualifier, []byte("wr")):
- data.WinRatio = strVal
- case bytes.Equal(c.Qualifier, []byte("pd_hr")):
- data.PlayDurationHourRep = intVal
- case bytes.Equal(c.Qualifier, []byte("lu_adr")):
- data.LikeUpAvDurationRep = intVal
- }
- }
|