transaction.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package ladder
  2. import (
  3. "bet24.com/database"
  4. "bet24.com/log"
  5. "bet24.com/servers/common"
  6. dbengine "bet24.com/servers/micros/dbengine/proto"
  7. pb "bet24.com/servers/micros/ladderservice/proto"
  8. "encoding/json"
  9. _ "runtime/debug"
  10. )
  11. func getUserConsecutiveRecord(userId int) string {
  12. statement := database.NewStatement()
  13. statement.SetNeedReturnValue(false)
  14. statement.SetProcName("WS_LadderService_GetConsecutiveRecord")
  15. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  16. retRows := dbengine.ExecuteRs(statement.GenSql())
  17. rowLen := len(retRows)
  18. if rowLen <= 0 {
  19. return ""
  20. }
  21. return retRows[0][0].(string)
  22. }
  23. func setUserConsecutiveRecord(userId int, record string) {
  24. statement := database.NewStatement()
  25. statement.SetNeedReturnValue(false)
  26. statement.SetProcName("WS_LadderService_SetConsecutiveRecord")
  27. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  28. statement.AddParamter("@Record", database.AdParamInput, database.AdVarChar, 1024, record)
  29. lock := getLadderManager().getUserLock(userId)
  30. if lock != nil {
  31. lock.Lock()
  32. defer lock.Unlock()
  33. }
  34. dbengine.Execute(statement.GenSql())
  35. }
  36. func getUserLadderInfo(userId int) pb.UserLadderInfo {
  37. statement := database.NewStatement()
  38. statement.SetNeedReturnValue(false)
  39. statement.SetProcName("WS_LadderService_GetUserLadderInfo")
  40. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  41. jsonData := dbengine.Execute(statement.GenSql())
  42. var ret []pb.UserLadderInfo
  43. err := json.Unmarshal([]byte(jsonData), &ret)
  44. if err != nil || len(ret) == 0 {
  45. log.Release("getUserLadderInfo failed err = %s", jsonData)
  46. // 没有记录,初始化分数
  47. uli := pb.UserLadderInfo{}
  48. uli.Point = getLadderConfig().InitialPoint
  49. return uli
  50. }
  51. return ret[0]
  52. }
  53. func setUserLadderInfo(userId int, userLadderInfo pb.UserLadderInfo) {
  54. statement := database.NewStatement()
  55. statement.SetNeedReturnValue(false)
  56. statement.SetProcName("WS_LadderService_SetUserLadderInfo")
  57. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  58. statement.AddParamter("@Point", database.AdParamInput, database.AdInteger, 4, userLadderInfo.Point)
  59. statement.AddParamter("@MaxConWin", database.AdParamInput, database.AdInteger, 4, userLadderInfo.MaxConWin)
  60. statement.AddParamter("@WinCount", database.AdParamInput, database.AdInteger, 4, userLadderInfo.WinCount)
  61. statement.AddParamter("@LoseCount", database.AdParamInput, database.AdInteger, 4, userLadderInfo.LoseCount)
  62. statement.AddParamter("@DrawCount", database.AdParamInput, database.AdInteger, 4, userLadderInfo.DrawCount)
  63. lock := getLadderManager().getUserLock(userId)
  64. if lock != nil {
  65. lock.Lock()
  66. defer lock.Unlock()
  67. }
  68. dbengine.Execute(statement.GenSql())
  69. }
  70. func getUserLadderSettlementRecord(userId int) []pb.WinningStreak {
  71. statement := database.NewStatement()
  72. statement.SetNeedReturnValue(false)
  73. statement.SetOpenRecordSet(true)
  74. statement.SetProcName("WS_LadderService_GetUserSettlementRecord")
  75. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  76. sqlString := statement.GenSql()
  77. //log.Debug(sqlstring)
  78. jsonData := dbengine.Execute(sqlString)
  79. var out []pb.WinningStreak
  80. if err := json.Unmarshal([]byte(jsonData), &out); err != nil {
  81. log.Error("transaction.getUserLadderSettlementRecord json unmarshal UserID=%d err %v", userId, err)
  82. }
  83. return out
  84. }
  85. func setUserLadderSettlementRecord(userId, point, winCount, winType int) {
  86. statement := database.NewStatement()
  87. statement.SetNeedReturnValue(false)
  88. statement.SetOpenRecordSet(true)
  89. statement.SetProcName("WS_LadderService_SetUserSettlementRecord")
  90. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  91. statement.AddParamter("@Point", database.AdParamInput, database.AdInteger, 4, point)
  92. statement.AddParamter("@WinCount", database.AdParamInput, database.AdInteger, 4, winCount)
  93. statement.AddParamter("@WinType", database.AdParamInput, database.AdInteger, 4, winType)
  94. statement.AddParamter("@Crdate", database.AdParamInput, database.AdVarChar, 20, common.GetNowTimeStr())
  95. lock := getLadderManager().getUserLock(userId)
  96. if lock != nil {
  97. lock.Lock()
  98. defer lock.Unlock()
  99. }
  100. dbengine.Execute(statement.GenSql())
  101. }