transaction.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. package level
  2. import (
  3. "bet24.com/database"
  4. "bet24.com/log"
  5. dbengine "bet24.com/servers/micros/dbengine/proto"
  6. pb "bet24.com/servers/micros/userservices/proto"
  7. "encoding/json"
  8. "runtime/debug"
  9. )
  10. // 等级系统数值
  11. func getSysLevelList() (int, []pb.LevelInfo) {
  12. defer func() {
  13. if err := recover(); err != nil {
  14. log.Error("transaction recover err %v", err)
  15. log.Error("%s", debug.Stack())
  16. }
  17. }()
  18. var (
  19. maxLevel int
  20. list []pb.LevelInfo
  21. )
  22. statement := database.NewStatement()
  23. statement.SetNeedReturnValue(false)
  24. statement.SetOpenRecordSet(true)
  25. statement.SetProcName("Game_Level_SysList")
  26. sqlstring := statement.GenSql()
  27. retRows := dbengine.ExecuteRs(sqlstring)
  28. rowLen := len(retRows)
  29. if rowLen <= 0 {
  30. return maxLevel, list
  31. }
  32. for i := 0; i < rowLen; i++ {
  33. ret := retRows[i]
  34. var out pb.LevelInfo
  35. out.Level = int((ret[0]).(int64))
  36. out.Exp = int((ret[1]).(int64))
  37. out.Desc = (ret[2]).(string)
  38. giftPack := (ret[3]).(string)
  39. if giftPack != "" {
  40. if err := json.Unmarshal([]byte(giftPack), &out.GiftPack); err != nil {
  41. log.Error("level.getSysLevelList giftPack unmarshal data fail %v", err)
  42. }
  43. }
  44. privilege := (ret[4]).(string)
  45. if privilege != "" {
  46. if err := json.Unmarshal([]byte(privilege), &out.Privileges); err != nil {
  47. log.Error("level.getSysLevelList privilege unmarshal data fail %v", err)
  48. }
  49. }
  50. if out.Level > maxLevel {
  51. maxLevel = out.Level
  52. }
  53. list = append(list, out)
  54. }
  55. return maxLevel, list
  56. }
  57. // 游戏经验数值
  58. func getGameExpList() []pb.GameExpInfo {
  59. defer func() {
  60. if err := recover(); err != nil {
  61. log.Error("transaction recover err %v", err)
  62. log.Error("%s", debug.Stack())
  63. }
  64. }()
  65. var list []pb.GameExpInfo
  66. statement := database.NewStatement()
  67. statement.SetNeedReturnValue(false)
  68. statement.SetOpenRecordSet(true)
  69. statement.SetProcName("Game_Level_SysExpList")
  70. sqlstring := statement.GenSql()
  71. retRows := dbengine.ExecuteRs(sqlstring)
  72. rowLen := len(retRows)
  73. if rowLen <= 0 {
  74. return list
  75. }
  76. for i := 0; i < rowLen; i++ {
  77. ret := retRows[i]
  78. var out pb.GameExpInfo
  79. out.GameID = int((ret[0]).(int64))
  80. out.WinExp = int((ret[1]).(int64))
  81. out.LoseExp = int((ret[2]).(int64))
  82. list = append(list, out)
  83. }
  84. return list
  85. }
  86. // 用户等级信息
  87. func getUserLevel(userId int) pb.LevelBaseInfo {
  88. defer func() {
  89. if err := recover(); err != nil {
  90. log.Error("transaction recover err %v", err)
  91. log.Error("%s", debug.Stack())
  92. }
  93. }()
  94. var info pb.LevelBaseInfo
  95. statement := database.NewStatement()
  96. statement.SetNeedReturnValue(false)
  97. statement.SetOpenRecordSet(true)
  98. statement.SetProcName("Game_Level_GetUserInfo")
  99. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  100. sqlstring := statement.GenSql()
  101. // log.Debug(sqlstring)
  102. retRows := dbengine.ExecuteRs(sqlstring)
  103. if len(retRows) <= 0 {
  104. return info
  105. }
  106. info.Level = int((retRows[0][0]).(int64))
  107. info.Experience = int((retRows[0][1]).(int64))
  108. info.IsWhite = int((retRows[0][2]).(int64))
  109. info.LoginAward = int((retRows[0][3]).(int64))
  110. info.IsFacebook = int((retRows[0][4]).(int64)) == 1
  111. info.IsAdd = int((retRows[0][5]).(int64)) == 1
  112. return info
  113. }
  114. // 修改用户等级信息
  115. func updateUserLevel(userId, level, experience, loginAward int) {
  116. defer func() {
  117. if err := recover(); err != nil {
  118. log.Error("transaction recover err %v", err)
  119. log.Error("%s", debug.Stack())
  120. }
  121. }()
  122. statement := database.NewStatement()
  123. statement.SetNeedReturnValue(false)
  124. statement.SetOpenRecordSet(true)
  125. statement.SetProcName("Game_Level_UpdateUserInfo")
  126. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  127. statement.AddParamter("@Lv", database.AdParamInput, database.AdInteger, 4, level)
  128. statement.AddParamter("@Exp", database.AdParamInput, database.AdInteger, 4, experience)
  129. statement.AddParamter("@LoginAward", database.AdParamInput, database.AdInteger, 4, loginAward)
  130. sqlstring := statement.GenSql()
  131. // log.Debug(sqlstring)
  132. dbengine.ExecuteRs(sqlstring)
  133. return
  134. }
  135. // 登录奖励
  136. func loginAward(userId int) (bool, int) {
  137. defer func() {
  138. if err := recover(); err != nil {
  139. log.Error("transaction recover err %v", err)
  140. log.Error("%s", debug.Stack())
  141. }
  142. }()
  143. statement := database.NewStatement()
  144. statement.SetNeedReturnValue(false)
  145. statement.SetOpenRecordSet(true)
  146. statement.SetProcName("Game_Level_LoginAward")
  147. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  148. sqlstring := statement.GenSql()
  149. retRows := dbengine.ExecuteRs(sqlstring)
  150. if len(retRows) <= 0 {
  151. return false, 0
  152. }
  153. retCode := int((retRows[0][0]).(int64))
  154. amount := int((retRows[0][1]).(int64))
  155. return retCode == 1, amount
  156. }