exp.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package model
  2. const (
  3. _MasterLevelMax = int32(40)
  4. _UserLevelMax = int32(60)
  5. _ColorLevel1 = int32(9868950)
  6. _ColorLevel2 = int32(6406234)
  7. _ColorLevel3 = int32(5805790)
  8. _ColorLevel4 = int32(9868950)
  9. )
  10. var (
  11. _masterLevelMap = []int64{
  12. 0, // 0
  13. 5000, // 1
  14. 20000, // 2
  15. 47000, // 3
  16. 92000, // 4
  17. 210000, // 5
  18. 406000, // 6
  19. 716000, // 7
  20. 1176000, // 8
  21. 1806000, // 9
  22. 2716000, // 10
  23. 3961000, // 11
  24. 5641000, // 12
  25. 7881000, // 13
  26. 10981000, // 14
  27. 15481000, // 15
  28. 22681000, // 16
  29. 31981000, // 17
  30. 44281000, // 18
  31. 60281000, // 19
  32. 81681000, // 20
  33. 113881000, // 21
  34. 159481000, // 22
  35. 221481000, // 23
  36. 300481000, // 24
  37. 398481000, // 25
  38. 522981000, // 26
  39. 690981000, // 27
  40. 901381000, // 28
  41. 1188381000, // 29
  42. 1561381000, // 30
  43. 2061381000, // 31
  44. 2731381000, // 32
  45. 3641381000, // 33
  46. 4781381000, // 34
  47. 6201381000, // 35
  48. 7951381000, // 36
  49. 9951381000, // 37
  50. 12201381000, // 38
  51. 14701381000, // 39
  52. }
  53. _userLevelMap = []int64{
  54. 100000, // 0
  55. 200000, // 1
  56. 300000, // 2
  57. 400000, // 3
  58. 500000, // 4
  59. 600000, // 5
  60. 700000, // 6
  61. 800000, // 7
  62. 900000, // 8
  63. 1000000, // 9
  64. 1800000, // 10
  65. 2600000, // 11
  66. 3400000, // 12
  67. 4200000, // 13
  68. 5000000, // 14
  69. 6000000, // 15
  70. 7000000, // 16
  71. 8000000, // 17
  72. 9000000, // 18
  73. 10000000, // 19
  74. 18000000, // 20
  75. 26000000, // 21
  76. 34000000, // 22
  77. 42000000, // 23
  78. 50000000, // 24
  79. 60000000, // 25
  80. 70000000, // 26
  81. 80000000, // 27
  82. 90000000, // 28
  83. 100000000, // 29
  84. 110000000, // 30
  85. 120000000, // 31
  86. 130000000, // 32
  87. 140000000, // 33
  88. 150000000, // 34
  89. 180000000, // 35
  90. 210000000, // 36
  91. 240000000, // 37
  92. 270000000, // 38
  93. 300000000, // 39
  94. 340000000, // 40
  95. 380000000, // 41
  96. 420000000, // 42
  97. 460000000, // 43
  98. 500000000, // 44
  99. 550000000, // 45
  100. 600000000, // 46
  101. 700000000, // 47
  102. 800000000, // 48
  103. 1000000000, // 49
  104. 1200000000, // 50
  105. 1400000000, // 51
  106. 1600000000, // 52
  107. 1800000000, // 53
  108. 2000000000, // 54
  109. 2200000000, // 55
  110. 2400000000, // 56
  111. 2600000000, // 57
  112. 2800000000, // 58
  113. 3000000000, // 59
  114. 4000000000, // 60
  115. }
  116. )
  117. // FormatLevel 计算等级
  118. func FormatLevel(exp *Exp) (level *Level) {
  119. level = &Level{Uid: exp.Uid, Uexp: exp.Uexp, Rexp: exp.Rexp, Ulevel: -1, Rlevel: -1, Color: 0}
  120. level.Uid = exp.Uid
  121. level.Uexp = exp.Uexp
  122. level.Rexp = exp.Rexp
  123. // 主播等级
  124. for rlevel, v := range _masterLevelMap {
  125. if exp.Rexp < v {
  126. level.Rlevel = int32(rlevel)
  127. level.Rnext = v - exp.Rexp
  128. break
  129. }
  130. }
  131. if level.Rlevel == -1 {
  132. level.Rlevel = _MasterLevelMax
  133. }
  134. // 用户等级
  135. for ulevel, v := range _userLevelMap {
  136. if exp.Uexp < v {
  137. level.Ulevel = int32(ulevel)
  138. level.Unext = v - exp.Uexp
  139. break
  140. }
  141. }
  142. if level.Ulevel == -1 {
  143. level.Ulevel = _UserLevelMax
  144. }
  145. // 等级颜色
  146. switch {
  147. case level.Ulevel <= 10:
  148. level.Color = _ColorLevel1
  149. case level.Ulevel <= 20:
  150. level.Color = _ColorLevel2
  151. case level.Ulevel <= 40:
  152. level.Color = _ColorLevel3
  153. case level.Ulevel < 50:
  154. level.Color = _ColorLevel4
  155. default:
  156. level.Color = _ColorLevel4
  157. }
  158. return
  159. }