transaction.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package card
  2. import (
  3. "encoding/json"
  4. "runtime/debug"
  5. item "bet24.com/servers/micros/item_inventory/proto"
  6. "bet24.com/servers/coreservice/dbengine"
  7. "bet24.com/database"
  8. "bet24.com/log"
  9. )
  10. // 使用充值卡
  11. func useRechargeCard(userId int, cardNo string) *cardInfo {
  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. statement := database.NewStatement()
  19. statement.SetNeedReturnValue(false)
  20. statement.SetOpenRecordSet(true)
  21. statement.SetProcName("WS_RechargeCard_Use")
  22. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  23. statement.AddParamter("@CardNo", database.AdParamInput, database.AdVarChar, 32, cardNo)
  24. sqlString := statement.GenSql()
  25. retRows := dbengine.CenterDB.ExecSql(sqlString)
  26. rowLen := len(retRows)
  27. if rowLen <= 0 {
  28. return nil
  29. }
  30. ret := retRows[0]
  31. retCode := int((ret[0]).(int64))
  32. goldAmount := int((ret[1]).(int64))
  33. coolSeconds := int((ret[2]).(int64))
  34. var items []item.ItemPack
  35. items = append(items, item.ItemPack{
  36. ItemId: item.Item_Gold,
  37. Count: goldAmount,
  38. })
  39. return &cardInfo{
  40. RetCode: retCode,
  41. Items: items,
  42. CoolSeconds: coolSeconds,
  43. }
  44. }
  45. // 使用兑换卡
  46. func useExchangeCard(userId int, cardNo string) *cardInfo {
  47. defer func() {
  48. if err := recover(); err != nil {
  49. log.Error("transaction recover err %v", err)
  50. log.Error("%s", debug.Stack())
  51. }
  52. }()
  53. statement := database.NewStatement()
  54. statement.SetNeedReturnValue(false)
  55. statement.SetOpenRecordSet(true)
  56. statement.SetProcName("WS_ExchangeCard_Use")
  57. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  58. statement.AddParamter("@CardNo", database.AdParamInput, database.AdVarChar, 32, cardNo)
  59. sqlString := statement.GenSql()
  60. retRows := dbengine.CenterDB.ExecSql(sqlString)
  61. rowLen := len(retRows)
  62. if rowLen <= 0 {
  63. return nil
  64. }
  65. ret := retRows[0]
  66. retCode := int((ret[0]).(int64))
  67. award := (ret[1]).(string)
  68. coolSeconds := int((ret[2]).(int64))
  69. var items []item.ItemPack
  70. if retCode == 1 && len(award) > 0 {
  71. if err := json.Unmarshal([]byte(award), &items); err != nil {
  72. log.Error("useExchangeCard json unmarshal error %v", err)
  73. }
  74. }
  75. return &cardInfo{
  76. RetCode: retCode,
  77. Items: items,
  78. CoolSeconds: coolSeconds,
  79. }
  80. }
  81. // 使用比赛卡
  82. func useMatchCard(userId int, cardNo string) *cardInfo {
  83. defer func() {
  84. if err := recover(); err != nil {
  85. log.Error("transaction recover err %v", err)
  86. log.Error("%s", debug.Stack())
  87. }
  88. }()
  89. statement := database.NewStatement()
  90. statement.SetNeedReturnValue(false)
  91. statement.SetOpenRecordSet(true)
  92. statement.SetProcName("WS_MatchCard_Use")
  93. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  94. statement.AddParamter("@CardNo", database.AdParamInput, database.AdVarChar, 32, cardNo)
  95. sqlString := statement.GenSql()
  96. retRows := dbengine.CenterDB.ExecSql(sqlString)
  97. rowLen := len(retRows)
  98. if rowLen <= 0 {
  99. return nil
  100. }
  101. ret := retRows[0]
  102. retCode := int((ret[0]).(int64))
  103. coolSeconds := int((ret[1]).(int64))
  104. timeMemo := (ret[2]).(string)
  105. sceneMemo := (ret[3]).(string)
  106. return &cardInfo{
  107. RetCode: retCode,
  108. CoolSeconds: coolSeconds,
  109. TimeMemo: timeMemo,
  110. SceneMemo: sceneMemo,
  111. }
  112. }