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.
154 lines
4.5 KiB
154 lines
4.5 KiB
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 |
|
} |
|
}
|
|
|