track.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. package controller
  2. import (
  3. "bet24.com/servers/adminserver/badge"
  4. "bet24.com/servers/adminserver/gift"
  5. "bet24.com/servers/adminserver/item"
  6. "bet24.com/servers/adminserver/shop"
  7. "bet24.com/servers/adminserver/task"
  8. "fmt"
  9. "net/http"
  10. "strconv"
  11. "strings"
  12. "bet24.com/log"
  13. "bet24.com/servers/adminserver/dao"
  14. "github.com/gin-gonic/gin"
  15. )
  16. // 获取轨迹产品id、道具id等信息
  17. func getTrackId(trackLevel, trackItem string) (oldItem, name string) {
  18. var (
  19. itemId string
  20. productId string
  21. giftId string
  22. taskId string
  23. badgeId string
  24. )
  25. switch trackLevel {
  26. case "充值成功":
  27. productId = trackItem
  28. case "商城":
  29. if strings.Contains(trackItem, "道具 --> 点击") {
  30. oldItem = "道具 --> 点击"
  31. } else if strings.Contains(trackItem, "购买弹窗 --> 打开shop/") {
  32. oldItem = "购买弹窗 --> 打开shop/"
  33. } else if strings.Contains(trackItem, "购买弹窗 --> 打开") {
  34. oldItem = "购买弹窗 --> 打开"
  35. } else if strings.Contains(trackItem, "购买弹窗 --> 点击购买") {
  36. oldItem = "购买弹窗 --> 点击购买"
  37. } else if strings.Contains(trackItem, "金币或钻石 --> 点击") {
  38. oldItem = "金币或钻石 --> 点击"
  39. }
  40. if oldItem == "" {
  41. log.Debug("track.getTrackId is empty ==>level=%s item=%s", trackLevel, trackItem)
  42. return
  43. }
  44. switch oldItem {
  45. case "道具 --> 点击":
  46. fallthrough
  47. case "购买弹窗 --> 打开":
  48. itemId = strings.ReplaceAll(trackItem, oldItem, "")
  49. default:
  50. productId = strings.ReplaceAll(trackItem, oldItem, "")
  51. }
  52. case "新手充值":
  53. if strings.Contains(trackItem, "点击") {
  54. oldItem = "点击"
  55. }
  56. if oldItem == "" {
  57. log.Debug("track.getTrackId is empty ==>level=%s item=%s", trackLevel, trackItem)
  58. return
  59. }
  60. productId = strings.ReplaceAll(trackItem, oldItem, "")
  61. case "首冲":
  62. if strings.Contains(trackItem, "购买 --> ") {
  63. oldItem = "购买 --> "
  64. }
  65. if oldItem == "" {
  66. log.Debug("track.getTrackId is empty ==>level=%s item=%s", trackLevel, trackItem)
  67. return
  68. }
  69. productId = strings.ReplaceAll(trackItem, oldItem, "")
  70. case "背包":
  71. if strings.Contains(trackItem, "道具 --> 点击") {
  72. oldItem = "道具 --> 点击"
  73. } else if strings.Contains(trackItem, "礼物 --> 点击") {
  74. oldItem = "礼物 --> 点击"
  75. }
  76. if oldItem == "" {
  77. log.Debug("track.getTrackId is empty ==>level=%s item=%s", trackLevel, trackItem)
  78. return
  79. }
  80. switch oldItem {
  81. case "道具 --> 点击":
  82. fallthrough
  83. case "礼物 --> 点击":
  84. itemId = strings.ReplaceAll(trackItem, oldItem, "")
  85. default:
  86. productId = strings.ReplaceAll(trackItem, oldItem, "")
  87. }
  88. case "礼物赠送":
  89. if strings.Contains(trackItem, "礼物Id:") {
  90. oldItem = "礼物Id:"
  91. }
  92. if oldItem == "" {
  93. log.Debug("track.getTrackId is empty ==>level=%s item=%s", trackLevel, trackItem)
  94. return
  95. }
  96. giftId = strings.ReplaceAll(trackItem, oldItem, "")
  97. case "送礼物":
  98. if strings.Contains(trackItem, "赠送 --> 点击") {
  99. oldItem = "赠送 --> 点击"
  100. }
  101. if oldItem == "" {
  102. log.Debug("track.getTrackId is empty ==>level=%s item=%s", trackLevel, trackItem)
  103. return
  104. }
  105. giftId = strings.ReplaceAll(trackItem, oldItem, "")
  106. case "vip":
  107. if strings.Contains(trackItem, "vip卡 --> 点击") {
  108. oldItem = "vip卡 --> 点击"
  109. }
  110. if oldItem == "" {
  111. log.Debug("track.getTrackId is empty ==>level=%s item=%s", trackLevel, trackItem)
  112. return
  113. }
  114. itemId = strings.ReplaceAll(trackItem, oldItem, "")
  115. case "任务":
  116. if strings.Contains(trackItem, "领取 --> ") {
  117. oldItem = "领取 --> "
  118. } else if strings.Contains(trackItem, "前往 --> ") {
  119. oldItem = "前往 --> "
  120. }
  121. if oldItem == "" {
  122. log.Debug("track.getTrackId is empty ==>level=%s item=%s", trackLevel, trackItem)
  123. return
  124. }
  125. taskId = strings.ReplaceAll(trackItem, oldItem, "")
  126. case "徽章佩戴":
  127. //if strings.Contains(trackItem, "Id:") {
  128. // oldItem = "Id:"
  129. //}
  130. if oldItem == "" {
  131. log.Debug("track.getTrackId is empty ==>level=%s item=%s", trackLevel, trackItem)
  132. return
  133. }
  134. }
  135. if productId != "" {
  136. if name = shop.GetProductName(productId); name == "" {
  137. return
  138. }
  139. name = fmt.Sprintf("%s (商品id:%s)", name, productId)
  140. } else if itemId != "" {
  141. id, err := strconv.Atoi(itemId)
  142. if err != nil {
  143. log.Error("track.getTrackId itemId=%s err=%+v", itemId, err)
  144. return
  145. }
  146. if name = item.GetItemName(id); name == "" {
  147. return
  148. }
  149. name = fmt.Sprintf("%s (道具id:%d)", name, id)
  150. } else if giftId != "" {
  151. id, err := strconv.Atoi(giftId)
  152. if err != nil {
  153. log.Error("track.getTrackId giftId=%s err=%+v", giftId, err)
  154. return
  155. }
  156. if name = gift.GetGiftName(id); name == "" {
  157. return
  158. }
  159. name = fmt.Sprintf("%s (礼物id:%d)", name, id)
  160. } else if taskId != "" {
  161. id, err := strconv.Atoi(taskId)
  162. if err != nil {
  163. log.Error("track.getTrackId giftId=%s err=%+v", taskId, err)
  164. return
  165. }
  166. if name = task.GetTaskName(id); name == "" {
  167. return
  168. }
  169. name = fmt.Sprintf("%s (任务id:%d)", name, id)
  170. } else if badgeId != "" {
  171. id, err := strconv.Atoi(badgeId)
  172. if err != nil {
  173. log.Error("track.getTrackId giftId=%s err=%+v", badgeId, err)
  174. return
  175. }
  176. if name = badge.GetBadgeName(id); name == "" {
  177. return
  178. }
  179. name = fmt.Sprintf("%s (徽章id:%d)", name, id)
  180. }
  181. return
  182. }
  183. // 游戏轨迹记录
  184. func UserTrackList(c *gin.Context) {
  185. obj := dao.NewUserTrackList()
  186. if err := c.ShouldBind(&obj.In); err != nil {
  187. log.Debug("%s shouldBind err %v", "userTrackList", err)
  188. return
  189. }
  190. obj.DoAction()
  191. for i, v := range obj.Out.List {
  192. oldItem, name := getTrackId(v.Level, v.Item)
  193. if name == "" {
  194. continue
  195. }
  196. obj.Out.List[i].Item = fmt.Sprintf("%s %s", oldItem, name)
  197. }
  198. c.JSON(http.StatusOK, obj.Out)
  199. return
  200. }
  201. // 游戏轨迹统计
  202. func UserTrackStat(c *gin.Context) {
  203. obj := dao.NewUserTrackStat()
  204. if err := c.ShouldBind(&obj.In); err != nil {
  205. log.Debug("%s shouldBind err %v", "userTrackStat", err)
  206. return
  207. }
  208. obj.DoAction()
  209. c.JSON(http.StatusOK, obj.Out)
  210. return
  211. }
  212. // 用户足迹
  213. func TrackList(c *gin.Context) {
  214. obj := dao.NewTrackList()
  215. if err := c.ShouldBind(&obj.In); err != nil {
  216. log.Debug("%s shouldBind err %v", "TrackList", err)
  217. return
  218. }
  219. obj.DoAction()
  220. c.JSON(http.StatusOK, obj.Out)
  221. return
  222. }