transaction.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package shop
  2. import (
  3. "encoding/json"
  4. "runtime/debug"
  5. "sort"
  6. "strconv"
  7. "bet24.com/database"
  8. "bet24.com/log"
  9. "bet24.com/servers/coreservice/dbengine"
  10. )
  11. // 获取汇率
  12. func getExchangeRate() []*exchangeRate {
  13. defer func() {
  14. if err := recover(); err != nil {
  15. log.Error("shop.getExchangeRate transaction recover %v", err)
  16. log.Error("%s", debug.Stack())
  17. }
  18. }()
  19. statement := database.NewStatement()
  20. statement.SetNeedReturnValue(false)
  21. statement.SetOpenRecordSet(true)
  22. statement.SetProcName("WS_Shop_GetExchangeRate")
  23. sqlString := statement.GenSql()
  24. retRows := dbengine.CenterDB.ExecSql(sqlString)
  25. rowLen := len(retRows)
  26. if rowLen <= 0 {
  27. return nil
  28. }
  29. var list []*exchangeRate
  30. for i := 0; i < rowLen; i++ {
  31. ret := retRows[i]
  32. var out exchangeRate
  33. out.Currency = (ret[0]).(string)
  34. out.CountryName = (ret[1]).(string)
  35. out.CountryCode = (ret[2]).(string)
  36. rate := string((ret[3]).([]byte))
  37. out.Rate, _ = strconv.ParseFloat(rate, 64)
  38. list = append(list, &out)
  39. }
  40. return list
  41. }
  42. // 商店列表
  43. func getShopList() []*Shop_Item {
  44. defer func() {
  45. if err := recover(); err != nil {
  46. log.Error("shop.getShopList transaction recover %v", err)
  47. log.Error("%s", debug.Stack())
  48. }
  49. }()
  50. statement := database.NewStatement()
  51. statement.SetNeedReturnValue(false)
  52. statement.SetOpenRecordSet(true)
  53. statement.SetProcName("WS_Shop_GetList")
  54. sqlstring := statement.GenSql()
  55. retRows := dbengine.CenterDB.ExecSql(sqlstring)
  56. rowLen := len(retRows)
  57. var shops []*Shop_Item
  58. for i := 0; i < rowLen; i++ {
  59. ret := retRows[i]
  60. var out Shop_Item
  61. out.ProductId = (ret[0]).(string)
  62. out.ProductName = (ret[1]).(string)
  63. //out.Amount = int((ret[2]).(int64))
  64. price := string(ret[3].([]byte))
  65. out.Price, _ = strconv.ParseFloat(price, 64)
  66. out.PayType = int((ret[4]).(int64))
  67. out.IsHot = int((ret[5]).(int64))
  68. out.Bonus = int((ret[6]).(int64))
  69. extra := (ret[7]).(string)
  70. out.ShopType = int((ret[8]).(int64))
  71. showPrice := string(ret[9].([]byte))
  72. out.ShowPrice, _ = strconv.ParseFloat(showPrice, 64)
  73. out.Sort = int((ret[10]).(int64))
  74. out.AnimationType = int((ret[11]).(int64))
  75. out.UserType = int((ret[12]).(int64))
  76. out.IsBottom = int((ret[13]).(int64))
  77. out.ProductDesc = ret[14].(string)
  78. if len(extra) > 0 {
  79. if err := json.Unmarshal([]byte(extra), &out.Extra); err != nil {
  80. log.Error("shop.getShopList transaction json unmarshal error %v ==> %s", err, extra)
  81. }
  82. }
  83. shops = append(shops, &out)
  84. }
  85. if len(shops) > 0 {
  86. sort.Slice(shops, func(i, j int) bool {
  87. return shops[i].Price < shops[j].Price
  88. })
  89. }
  90. return shops
  91. }
  92. type firstPurchase struct {
  93. productId string
  94. value bool // true: 没有购买过,fase :已经购买过
  95. }
  96. func getFirstPurchase(userId int) []firstPurchase {
  97. defer func() {
  98. if err := recover(); err != nil {
  99. log.Error("shop.getShopList transaction recover %v", err)
  100. log.Error("%s", debug.Stack())
  101. }
  102. }()
  103. statement := database.NewStatement()
  104. statement.SetNeedReturnValue(false)
  105. statement.SetOpenRecordSet(true)
  106. statement.SetProcName("WS_Shop_GetFirstPurchase")
  107. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  108. sqlstring := statement.GenSql()
  109. retRows := dbengine.CenterDB.ExecSql(sqlstring)
  110. rowLen := len(retRows)
  111. var rets []firstPurchase
  112. for i := 0; i < rowLen; i++ {
  113. ret := retRows[i]
  114. var out firstPurchase
  115. out.productId = (ret[0]).(string)
  116. out.value = (int((ret[1]).(int64)) > 0)
  117. rets = append(rets, out)
  118. }
  119. return rets
  120. }
  121. // 充值触发
  122. func payTrigger(userId int, productId string, shopType, price int) {
  123. defer func() {
  124. if err := recover(); err != nil {
  125. log.Error("transaction recover err %v", err)
  126. log.Error("%s", debug.Stack())
  127. }
  128. }()
  129. statement := database.NewStatement()
  130. statement.SetNeedReturnValue(false)
  131. statement.SetOpenRecordSet(true)
  132. statement.SetProcName("WS_Pay_Trigger")
  133. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  134. statement.AddParamter("@ProductID", database.AdParamInput, database.AdVarChar, 32, productId)
  135. statement.AddParamter("@ShopType", database.AdParamInput, database.AdInteger, 4, shopType)
  136. statement.AddParamter("@Price", database.AdParamInput, database.AdInteger, 4, price)
  137. sqlstring := statement.GenSql()
  138. dbengine.CenterDB.ExecSql(sqlstring)
  139. return
  140. }
  141. type rechargeInfo struct {
  142. ProductId string
  143. ShopType int
  144. }
  145. /*
  146. // 充值列表
  147. func getRechargeList(userId, shopType int) []*rechargeInfo {
  148. var ret []*rechargeInfo
  149. statement := database.NewStatement()
  150. statement.SetNeedReturnValue(false)
  151. statement.SetOpenRecordSet(true)
  152. statement.SetProcName("WS_Shop_GetRechargeList")
  153. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  154. statement.AddParamter("@ShopType", database.AdParamInput, database.AdInteger, 4, shopType)
  155. sqlString := statement.GenSql()
  156. jsonData := dbengine.CenterDB.ExecSqlJson(sqlString)
  157. if err := json.Unmarshal([]byte(jsonData), &ret); err != nil {
  158. log.Error("shop.transaction.getRechargeList json unmarshal err %v ==> %s", err, jsonData)
  159. }
  160. return ret
  161. }
  162. */