transaction.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. package purchase
  2. import (
  3. "runtime/debug"
  4. "time"
  5. "bet24.com/database"
  6. "bet24.com/log"
  7. "bet24.com/servers/common"
  8. "bet24.com/servers/coreservice/dbengine"
  9. )
  10. // 100购活动信息
  11. func sysInfo() (int, time.Time, time.Time, int, int) {
  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_Purchase_GetInfo")
  22. sqlString := statement.GenSql()
  23. // log.Debug(sqlString)
  24. retRows := dbengine.CenterDB.ExecSql(sqlString)
  25. if len(retRows) <= 0 {
  26. return 0, time.Now(), time.Now(), 0, 0
  27. }
  28. ret := retRows[0]
  29. sn := int((ret[0]).(int64))
  30. beginTimeStr := (ret[1]).(string)
  31. beginTime := common.ParseTime(beginTimeStr)
  32. endTimeSr := (ret[2]).(string)
  33. endTime := common.ParseTime(endTimeSr)
  34. luckNumber := int((ret[3]).(int64))
  35. status := int((ret[4]).(int64))
  36. return sn, beginTime, endTime, luckNumber, status
  37. }
  38. // 100购活动开启
  39. func open(sn int, beginTime, endTime time.Time, luckNumber, status int) {
  40. defer func() {
  41. if err := recover(); err != nil {
  42. log.Error("transaction recover err %v", err)
  43. log.Error("%s", debug.Stack())
  44. }
  45. }()
  46. statement := database.NewStatement()
  47. statement.SetNeedReturnValue(false)
  48. statement.SetOpenRecordSet(true)
  49. statement.SetProcName("WS_Purchase_Open")
  50. statement.AddParamter("@SN", database.AdParamInput, database.AdInteger, 4, sn)
  51. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 32, beginTime.Format(common.Layout))
  52. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 32, endTime.Format(common.Layout))
  53. statement.AddParamter("@LuckNumber", database.AdParamInput, database.AdInteger, 4, luckNumber)
  54. statement.AddParamter("@Status", database.AdParamInput, database.AdInteger, 4, status)
  55. sqlString := statement.GenSql()
  56. // log.Debug(sqlString)
  57. retRows := dbengine.CenterDB.ExecSql(sqlString)
  58. if len(retRows) <= 0 {
  59. return
  60. }
  61. if retCode := int((retRows[0][0]).(int64)); retCode != 1 {
  62. log.Error("purchase.open transaction fail sn=%d beginTime=%v endTime=%v luckNumber=%d status=%d",
  63. sn, beginTime.Format(common.Layout), endTime.Format(common.Layout), luckNumber, status)
  64. }
  65. return
  66. }
  67. // 100购活动更新
  68. func update(sn, luckNumber, status int) {
  69. defer func() {
  70. if err := recover(); err != nil {
  71. log.Error("transaction recover err %v", err)
  72. log.Error("%s", debug.Stack())
  73. }
  74. }()
  75. statement := database.NewStatement()
  76. statement.SetNeedReturnValue(false)
  77. statement.SetOpenRecordSet(true)
  78. statement.SetProcName("WS_Purchase_Update")
  79. statement.AddParamter("@SN", database.AdParamInput, database.AdInteger, 4, sn)
  80. statement.AddParamter("@LuckNumber", database.AdParamInput, database.AdInteger, 4, luckNumber)
  81. statement.AddParamter("@Status", database.AdParamInput, database.AdInteger, 4, status)
  82. sqlString := statement.GenSql()
  83. // log.Debug(sqlString)
  84. retRows := dbengine.CenterDB.ExecSql(sqlString)
  85. if len(retRows) <= 0 {
  86. return
  87. }
  88. if retCode := int((retRows[0][0]).(int64)); retCode != 1 {
  89. log.Error("purchase.update transaction fail sn=%d luckNumber=%d status=%d",
  90. sn, luckNumber, status)
  91. }
  92. return
  93. }
  94. // 100购活动用户信息
  95. func userInfo(sn int) map[int]*userPurchase {
  96. defer func() {
  97. if err := recover(); err != nil {
  98. log.Error("transaction recover err %v", err)
  99. log.Error("%s", debug.Stack())
  100. }
  101. }()
  102. list := make(map[int]*userPurchase)
  103. statement := database.NewStatement()
  104. statement.SetNeedReturnValue(false)
  105. statement.SetOpenRecordSet(true)
  106. statement.SetProcName("WS_Purchase_GetUserInfo")
  107. statement.AddParamter("@SN", database.AdParamInput, database.AdInteger, 4, sn)
  108. sqlString := statement.GenSql()
  109. // log.Debug(sqlString)
  110. retRows := dbengine.CenterDB.ExecSql(sqlString)
  111. rowLen := len(retRows)
  112. if rowLen <= 0 {
  113. return list
  114. }
  115. for i := 0; i < rowLen; i++ {
  116. ret := retRows[0]
  117. userId := int((ret[0]).(int64))
  118. number := int((ret[1]).(int64))
  119. // 存在,追加数据
  120. if val, ok := list[userId]; ok {
  121. val.Numbers = append(val.Numbers, number)
  122. continue
  123. }
  124. // 初始化
  125. list[userId] = &userPurchase{
  126. UserId: userId,
  127. Numbers: []int{number},
  128. }
  129. }
  130. return list
  131. }
  132. // 100购活动抽奖
  133. func bet(userId, sn, number int) {
  134. defer func() {
  135. if err := recover(); err != nil {
  136. log.Error("transaction recover err %v", err)
  137. log.Error("%s", debug.Stack())
  138. }
  139. }()
  140. statement := database.NewStatement()
  141. statement.SetNeedReturnValue(false)
  142. statement.SetOpenRecordSet(true)
  143. statement.SetProcName("WS_Purchase_Bet")
  144. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  145. statement.AddParamter("@SN", database.AdParamInput, database.AdInteger, 4, sn)
  146. statement.AddParamter("@Number", database.AdParamInput, database.AdInteger, 4, number)
  147. sqlString := statement.GenSql()
  148. // log.Debug(sqlString)
  149. retRows := dbengine.CenterDB.ExecSql(sqlString)
  150. if len(retRows) <= 0 {
  151. return
  152. }
  153. if retCode := int((retRows[0][0]).(int64)); retCode != 1 {
  154. log.Error("purchase.bet transaction fail userId=%d sn=%d number=%d", userId, sn, number)
  155. }
  156. return
  157. }