trans_income.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. package database
  2. import (
  3. "bet24.com/database"
  4. "bet24.com/log"
  5. pb "bet24.com/servers/micros/audioroom/proto"
  6. dbengine "bet24.com/servers/micros/dbengine/proto"
  7. "runtime/debug"
  8. "strconv"
  9. )
  10. // 获取用户收益等级
  11. func GetUserIncomeLevel(userId int) (incomeLevel 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_AudioRoom_GetIncomeLevel")
  22. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  23. sqlString := statement.GenSql()
  24. retRows := dbengine.ExecuteRs(sqlString)
  25. rowLen := len(retRows)
  26. if rowLen <= 0 {
  27. return
  28. }
  29. incomeLevel = int(retRows[0][0].(int64))
  30. return
  31. }
  32. // 修改用户收益等级
  33. func UpdateUserIncomeLevel(userId, incomeLevel int) {
  34. defer func() {
  35. if err := recover(); err != nil {
  36. log.Error("transaction recover err %v", err)
  37. log.Error("%s", debug.Stack())
  38. }
  39. }()
  40. statement := database.NewStatement()
  41. statement.SetNeedReturnValue(false)
  42. statement.SetOpenRecordSet(true)
  43. statement.SetProcName("WS_AudioRoom_UpdateIncomeLevel")
  44. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  45. statement.AddParamter("@IncomeLevel", database.AdParamInput, database.AdInteger, 4, incomeLevel)
  46. sqlString := statement.GenSql()
  47. dbengine.Execute(sqlString)
  48. return
  49. }
  50. // 获取用户收益列表
  51. func GetUserIncomeList(userId int) []pb.IncomeInfo {
  52. defer func() {
  53. if err := recover(); err != nil {
  54. log.Error("transaction recover err %v", err)
  55. log.Error("%s", debug.Stack())
  56. }
  57. }()
  58. var list []pb.IncomeInfo
  59. statement := database.NewStatement()
  60. statement.SetNeedReturnValue(false)
  61. statement.SetOpenRecordSet(true)
  62. statement.SetProcName("WS_AudioRoom_GetIncomeList")
  63. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  64. sqlString := statement.GenSql()
  65. retRows := dbengine.ExecuteRs(sqlString)
  66. rowLen := len(retRows)
  67. if rowLen <= 0 {
  68. return list
  69. }
  70. for i := 0; i < rowLen; i++ {
  71. ret := retRows[i]
  72. var info pb.IncomeInfo
  73. info.ItemType = int(ret[0].(int64))
  74. balanceStr := string(ret[1].([]byte))
  75. info.Balance, _ = strconv.ParseFloat(balanceStr, 64)
  76. totalProfitStr := string(ret[2].([]byte))
  77. info.TotalProfit, _ = strconv.ParseFloat(totalProfitStr, 64)
  78. list = append(list, info)
  79. }
  80. return list
  81. }
  82. // 添加用户收益
  83. func AddUserIncome(userId, itemType int, balance, totalProfit float64) {
  84. defer func() {
  85. if err := recover(); err != nil {
  86. log.Error("transaction recover err %v", err)
  87. log.Error("%s", debug.Stack())
  88. }
  89. }()
  90. statement := database.NewStatement()
  91. statement.SetNeedReturnValue(false)
  92. statement.SetOpenRecordSet(true)
  93. statement.SetProcName("WS_AudioRoom_AddIncome")
  94. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  95. statement.AddParamter("@ItemType", database.AdParamInput, database.AdInteger, 4, itemType)
  96. statement.AddParamter("@Balance", database.AdParamInput, database.AdFloat, 64, balance)
  97. statement.AddParamter("@TotalProfit", database.AdParamInput, database.AdFloat, 64, totalProfit)
  98. sqlString := statement.GenSql()
  99. dbengine.Execute(sqlString)
  100. }
  101. // 添加收益日志
  102. func AddUserIncomeLog(userId, roomId, gameId, fromUserId, itemType, incomeType, userType, amount, realProfit int, profit, stillProfit float64) {
  103. defer func() {
  104. if err := recover(); err != nil {
  105. log.Error("transaction recover err %v", err)
  106. log.Error("%s", debug.Stack())
  107. }
  108. }()
  109. statement := database.NewStatement()
  110. statement.SetNeedReturnValue(false)
  111. statement.SetOpenRecordSet(true)
  112. statement.SetProcName("WS_AudioRoom_AddIncomeLog")
  113. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  114. statement.AddParamter("@RoomID", database.AdParamInput, database.AdInteger, 4, roomId)
  115. statement.AddParamter("@GameID", database.AdParamInput, database.AdInteger, 4, gameId)
  116. statement.AddParamter("@FromUserID", database.AdParamInput, database.AdInteger, 4, fromUserId)
  117. statement.AddParamter("@ItemType", database.AdParamInput, database.AdInteger, 4, itemType)
  118. statement.AddParamter("@IncomeType", database.AdParamInput, database.AdInteger, 4, incomeType)
  119. statement.AddParamter("@UserType", database.AdParamInput, database.AdInteger, 4, userType)
  120. statement.AddParamter("@Amount", database.AdParamInput, database.AdInteger, 4, amount)
  121. statement.AddParamter("@Profit", database.AdParamInput, database.AdFloat, 64, profit)
  122. statement.AddParamter("@StillProfit", database.AdParamInput, database.AdFloat, 64, stillProfit)
  123. statement.AddParamter("@RealProfit", database.AdParamInput, database.AdInteger, 4, realProfit)
  124. sqlString := statement.GenSql()
  125. dbengine.Execute(sqlString)
  126. return
  127. }
  128. // 获取收益日志
  129. func GetIncomeLog(userId, roomId, fromUserId, itemType int, beginTime, endTime string,
  130. pageIndex, pageSize int) (recordCount int, list []pb.IncomeLog) {
  131. defer func() {
  132. if err := recover(); err != nil {
  133. log.Error("transaction recover err %v", err)
  134. log.Error("%s", debug.Stack())
  135. }
  136. }()
  137. statement := database.NewStatement()
  138. statement.SetNeedReturnValue(false)
  139. statement.SetOpenRecordSet(true)
  140. statement.SetProcName("WS_AudioRoom_GetIncomeLog")
  141. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  142. statement.AddParamter("@RoomID", database.AdParamInput, database.AdInteger, 4, roomId)
  143. statement.AddParamter("@FromUserID", database.AdParamInput, database.AdInteger, 4, fromUserId)
  144. statement.AddParamter("@ItemType", database.AdParamInput, database.AdInteger, 4, itemType)
  145. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 20, beginTime)
  146. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 20, endTime)
  147. statement.AddParamter("@PageIndex", database.AdParamInput, database.AdInteger, 4, pageIndex)
  148. statement.AddParamter("@PageSize", database.AdParamInput, database.AdInteger, 4, pageSize)
  149. statement.AddParamter("@RecordCount", database.AdParamOutput, database.AdInteger, 4, recordCount)
  150. sqlString := statement.GenSql()
  151. retRows := dbengine.ExecuteRs(sqlString)
  152. rowLen := len(retRows)
  153. if rowLen <= 0 {
  154. return
  155. }
  156. if rowLen > 1 {
  157. for i := 0; i < rowLen-1; i++ {
  158. ret := retRows[i]
  159. var info pb.IncomeLog
  160. info.FromUserId = int(ret[0].(int64))
  161. info.GameId = int(ret[1].(int64))
  162. info.IncomeType = int(ret[2].(int64))
  163. info.UserType = int(ret[3].(int64))
  164. info.UserLevel = int(ret[4].(int64))
  165. info.Amount = int(ret[5].(int64))
  166. profit := string(ret[6].([]byte))
  167. info.Profit, _ = strconv.ParseFloat(profit, 64)
  168. list = append(list, info)
  169. }
  170. }
  171. recordCount = int(retRows[rowLen-1][0].(int64))
  172. return
  173. }
  174. // 获取用户收益统计
  175. func GetUserIncomeStat(userId, roomId, fromUserId, itemType, sortType int, beginTime, endTime string,
  176. pageIndex, pageSize int) (recordCount int, totalGameProfit, totalGiftProfit float64, list []pb.UserIncomeStat) {
  177. defer func() {
  178. if err := recover(); err != nil {
  179. log.Error("transaction recover err %v", err)
  180. log.Error("%s", debug.Stack())
  181. }
  182. }()
  183. statement := database.NewStatement()
  184. statement.SetNeedReturnValue(false)
  185. statement.SetOpenRecordSet(true)
  186. statement.SetProcName("WS_AudioRoom_GetUserIncomeStat")
  187. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  188. statement.AddParamter("@RoomID", database.AdParamInput, database.AdInteger, 4, roomId)
  189. statement.AddParamter("@FromUserID", database.AdParamInput, database.AdInteger, 4, fromUserId)
  190. statement.AddParamter("@ItemType", database.AdParamInput, database.AdInteger, 4, itemType)
  191. statement.AddParamter("@SortType", database.AdParamInput, database.AdInteger, 4, sortType)
  192. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 20, beginTime)
  193. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 20, endTime)
  194. statement.AddParamter("@PageIndex", database.AdParamInput, database.AdInteger, 4, pageIndex)
  195. statement.AddParamter("@PageSize", database.AdParamInput, database.AdInteger, 4, pageSize)
  196. statement.AddParamter("@RecordCount", database.AdParamOutput, database.AdInteger, 4, recordCount)
  197. statement.AddParamter("@TotalGameProfit", database.AdParamOutput, database.AdFloat, 64, totalGameProfit)
  198. statement.AddParamter("@TotalGiftProfit", database.AdParamOutput, database.AdFloat, 64, totalGiftProfit)
  199. sqlString := statement.GenSql()
  200. retRows := dbengine.ExecuteRs(sqlString)
  201. rowLen := len(retRows)
  202. if rowLen <= 0 {
  203. return
  204. }
  205. if rowLen > 1 {
  206. for i := 0; i < rowLen-1; i++ {
  207. ret := retRows[i]
  208. var info pb.UserIncomeStat
  209. info.FromUserId = int(ret[0].(int64))
  210. gameProfitStr := string(ret[1].([]byte))
  211. info.GameProfit, _ = strconv.ParseFloat(gameProfitStr, 64)
  212. giftProfitStr := string(ret[2].([]byte))
  213. info.GiftProfit, _ = strconv.ParseFloat(giftProfitStr, 64)
  214. list = append(list, info)
  215. }
  216. }
  217. recordCount = int(retRows[rowLen-1][0].(int64))
  218. totalGameProfitStr := string(retRows[rowLen-1][1].([]byte))
  219. totalGameProfit, _ = strconv.ParseFloat(totalGameProfitStr, 64)
  220. totalGiftProfitStr := string(retRows[rowLen-1][2].([]byte))
  221. totalGiftProfit, _ = strconv.ParseFloat(totalGiftProfitStr, 64)
  222. return
  223. }
  224. // 获取游戏收益统计
  225. func GetGameIncomeStat(userId, roomId, itemType, sortType int, beginTime, endTime string,
  226. pageIndex, pageSize int) (recordCount int, list []pb.GameIncomeStat) {
  227. defer func() {
  228. if err := recover(); err != nil {
  229. log.Error("transaction recover err %v", err)
  230. log.Error("%s", debug.Stack())
  231. }
  232. }()
  233. statement := database.NewStatement()
  234. statement.SetNeedReturnValue(false)
  235. statement.SetOpenRecordSet(true)
  236. statement.SetProcName("WS_AudioRoom_GetGameIncomeStat")
  237. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  238. statement.AddParamter("@RoomID", database.AdParamInput, database.AdInteger, 4, roomId)
  239. statement.AddParamter("@ItemType", database.AdParamInput, database.AdInteger, 4, itemType)
  240. statement.AddParamter("@SortType", database.AdParamInput, database.AdInteger, 4, sortType)
  241. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 20, beginTime)
  242. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 20, endTime)
  243. statement.AddParamter("@PageIndex", database.AdParamInput, database.AdInteger, 4, pageIndex)
  244. statement.AddParamter("@PageSize", database.AdParamInput, database.AdInteger, 4, pageSize)
  245. statement.AddParamter("@RecordCount", database.AdParamOutput, database.AdInteger, 4, recordCount)
  246. sqlString := statement.GenSql()
  247. retRows := dbengine.ExecuteRs(sqlString)
  248. rowLen := len(retRows)
  249. if rowLen <= 0 {
  250. return
  251. }
  252. if rowLen > 1 {
  253. for i := 0; i < rowLen-1; i++ {
  254. ret := retRows[i]
  255. var info pb.GameIncomeStat
  256. info.GameId = int(ret[0].(int64))
  257. info.Amount = int(ret[1].(int64))
  258. profitStr := string(ret[2].([]byte))
  259. info.Profit, _ = strconv.ParseFloat(profitStr, 64)
  260. list = append(list, info)
  261. }
  262. }
  263. recordCount = int(retRows[rowLen-1][0].(int64))
  264. return
  265. }