155 lines
4.5 KiB
Go
155 lines
4.5 KiB
Go
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
|
|
}
|
|
}
|