hbase.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package timemachine
  2. import (
  3. "bytes"
  4. "context"
  5. "strconv"
  6. "time"
  7. "go-common/app/interface/main/activity/model/timemachine"
  8. "go-common/library/log"
  9. "github.com/tsuna/gohbase/hrpc"
  10. )
  11. const (
  12. _hBaseUpItemTableName = "dw:mid_main_profile_y"
  13. )
  14. // reverse for string.
  15. func hbaseRowKey(mid int64) string {
  16. s := strconv.FormatInt(mid, 10)
  17. rs := []rune(s)
  18. l := len(rs)
  19. for f, t := 0, l-1; f < t; f, t = f+1, t-1 {
  20. rs[f], rs[t] = rs[t], rs[f]
  21. }
  22. ns := string(rs)
  23. if l < 10 {
  24. for i := 0; i < 10-l; i++ {
  25. ns = ns + "0"
  26. }
  27. }
  28. return ns
  29. }
  30. // RawTimemachine .
  31. func (d *Dao) RawTimemachine(c context.Context, mid int64) (data *timemachine.Item, err error) {
  32. var (
  33. result *hrpc.Result
  34. ctx, cancel = context.WithTimeout(c, time.Duration(d.c.Hbase.RegionReadTimeout))
  35. key = hbaseRowKey(mid)
  36. tableName = _hBaseUpItemTableName
  37. )
  38. defer cancel()
  39. if result, err = d.hbase.GetStr(ctx, tableName, key); err != nil {
  40. log.Error("UserItem d.hbase.GetStr tableName(%s)|mid(%d)|key(%v)|error(%v)", tableName, mid, key, err)
  41. return
  42. }
  43. if result == nil {
  44. return
  45. }
  46. data = &timemachine.Item{Mid: mid}
  47. for _, c := range result.Cells {
  48. if c == nil {
  49. continue
  50. }
  51. if !bytes.Equal(c.Family, []byte("m")) {
  52. continue
  53. }
  54. tmFillFields(data, c)
  55. }
  56. return
  57. }
  58. func tmFillFields(data *timemachine.Item, c *hrpc.Cell) {
  59. var (
  60. intVal int64
  61. strVal string
  62. )
  63. strVal = string(c.Value[:])
  64. if v, e := strconv.ParseInt(string(c.Value[:]), 10, 64); e == nil {
  65. intVal = v
  66. }
  67. switch {
  68. case bytes.Equal(c.Qualifier, []byte("is_up")):
  69. data.IsUp = intVal
  70. case bytes.Equal(c.Qualifier, []byte("dh")):
  71. data.DurationHour = intVal
  72. case bytes.Equal(c.Qualifier, []byte("adh")):
  73. data.AvDurationHour = intVal
  74. case bytes.Equal(c.Qualifier, []byte("a_vv")):
  75. data.ArchiveVv = intVal
  76. case bytes.Equal(c.Qualifier, []byte("tag_id")):
  77. data.LikeTagID = intVal
  78. case bytes.Equal(c.Qualifier, []byte("ls_vv")):
  79. data.LikeSubtidVv = intVal
  80. case bytes.Equal(c.Qualifier, []byte("ugc_avs")):
  81. data.LikesUgc3Avids = strVal
  82. case bytes.Equal(c.Qualifier, []byte("pgc_avs")):
  83. data.LikePgc3Avids = strVal
  84. case bytes.Equal(c.Qualifier, []byte("up")):
  85. data.LikeBestUpID = intVal
  86. case bytes.Equal(c.Qualifier, []byte("up_ad")):
  87. data.LikeUpAvDuration = intVal
  88. case bytes.Equal(c.Qualifier, []byte("up_ld")):
  89. data.LikeUpLiveDuration = intVal
  90. case bytes.Equal(c.Qualifier, []byte("up_avs")):
  91. data.LikeUp3Avs = strVal
  92. case bytes.Equal(c.Qualifier, []byte("up_st")):
  93. data.LikeLiveUpSubTname = strVal
  94. case bytes.Equal(c.Qualifier, []byte("cir_tm")):
  95. data.BrainwashCirTime = strVal
  96. case bytes.Equal(c.Qualifier, []byte("cir_av")):
  97. data.BrainwashCirAvid = intVal
  98. case bytes.Equal(c.Qualifier, []byte("cir_v")):
  99. data.BrainwashCirVv = intVal
  100. case bytes.Equal(c.Qualifier, []byte("fs_av")):
  101. data.FirstSubmitAvid = intVal
  102. case bytes.Equal(c.Qualifier, []byte("fs_tm")):
  103. data.FirstSubmitTime = strVal
  104. case bytes.Equal(c.Qualifier, []byte("fs_ty")):
  105. data.FirstSubmitType = intVal
  106. case bytes.Equal(c.Qualifier, []byte("s_av_rd")):
  107. data.SubmitAvsRds = strVal
  108. case bytes.Equal(c.Qualifier, []byte("bt_av")):
  109. data.BestAvid = intVal
  110. case bytes.Equal(c.Qualifier, []byte("bt_ty")):
  111. data.BestAvidType = intVal
  112. case bytes.Equal(c.Qualifier, []byte("bt_av_o")):
  113. data.BestAvidOld = intVal
  114. case bytes.Equal(c.Qualifier, []byte("bt_av_ty")):
  115. data.BestAvidOldType = intVal
  116. case bytes.Equal(c.Qualifier, []byte("o_vv")):
  117. data.OldAvVv = intVal
  118. case bytes.Equal(c.Qualifier, []byte("all_vv")):
  119. data.AllVv = intVal
  120. case bytes.Equal(c.Qualifier, []byte("live_d")):
  121. data.UpLiveDuration = intVal
  122. case bytes.Equal(c.Qualifier, []byte("is_live")):
  123. data.IsLiveUp = intVal
  124. case bytes.Equal(c.Qualifier, []byte("ld")):
  125. data.ValidLiveDays = intVal
  126. case bytes.Equal(c.Qualifier, []byte("md")):
  127. data.MaxCdnNumDate = strVal
  128. case bytes.Equal(c.Qualifier, []byte("mc")):
  129. data.MaxCdnNum = intVal
  130. case bytes.Equal(c.Qualifier, []byte("att")):
  131. data.Attentions = intVal
  132. case bytes.Equal(c.Qualifier, []byte("fan_vv")):
  133. data.UpBestFanVv = strVal
  134. case bytes.Equal(c.Qualifier, []byte("fan_live")):
  135. data.UpBestFanLiveMinute = strVal
  136. case bytes.Equal(c.Qualifier, []byte("like_tid")):
  137. data.Like2Tids = strVal
  138. case bytes.Equal(c.Qualifier, []byte("like_st")):
  139. data.Like2SubTids = strVal
  140. case bytes.Equal(c.Qualifier, []byte("wr")):
  141. data.WinRatio = strVal
  142. case bytes.Equal(c.Qualifier, []byte("pd_hr")):
  143. data.PlayDurationHourRep = intVal
  144. case bytes.Equal(c.Qualifier, []byte("lu_adr")):
  145. data.LikeUpAvDurationRep = intVal
  146. }
  147. }