chip_transaction.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  1. package handler
  2. import (
  3. "runtime/debug"
  4. "bet24.com/database"
  5. "bet24.com/log"
  6. dbengine "bet24.com/servers/micros/dbengine/proto"
  7. pb "bet24.com/servers/micros/money/proto"
  8. )
  9. // 筹码日志
  10. func chipLog(userId int, beginTime, endTime string, pageIndex, pageSize int) (int, []*pb.CashInfo) {
  11. defer func() {
  12. if err := recover(); err != nil {
  13. log.Release("transaction recover err %v", err)
  14. log.Release("%s", debug.Stack())
  15. }
  16. }()
  17. recordCount := 0
  18. var list []*pb.CashInfo
  19. statement := database.NewStatement()
  20. statement.SetNeedReturnValue(false)
  21. statement.SetOpenRecordSet(true)
  22. statement.SetProcName("WS_Chip_GetLog")
  23. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  24. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 32, beginTime)
  25. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 32, endTime)
  26. statement.AddParamter("@PageIndex", database.AdParamInput, database.AdInteger, 4, pageIndex)
  27. statement.AddParamter("@PageSize", database.AdParamInput, database.AdInteger, 4, pageSize)
  28. statement.AddParamter("@RecordCount", database.AdParamOutput, database.AdInteger, 4, recordCount)
  29. sqlstring := statement.GenSql()
  30. retRows := dbengine.ExecuteRs(sqlstring)
  31. rowLen := len(retRows)
  32. if rowLen <= 0 {
  33. return recordCount, list
  34. }
  35. if rowLen > 1 {
  36. for i := 0; i < rowLen-1; i++ {
  37. ret := retRows[i]
  38. var info pb.CashInfo
  39. info.Desc = (ret[0]).(string)
  40. info.Amount = int((ret[1]).(int64))
  41. info.Balance = int((ret[2]).(int64))
  42. info.Date = (ret[3]).(string)
  43. list = append(list, &info)
  44. }
  45. }
  46. recordCount = int((retRows[rowLen-1][0]).(int64))
  47. return recordCount, list
  48. }
  49. // 获取筹码
  50. func getChip(userId int) (bool, int, int) {
  51. defer func() {
  52. if err := recover(); err != nil {
  53. log.Error("inventory.getMoney transaction recover err %v", err)
  54. log.Error("%s", debug.Stack())
  55. }
  56. }()
  57. gold, bank := 0, 0
  58. statement := database.NewStatement()
  59. statement.SetNeedReturnValue(false)
  60. statement.SetOpenRecordSet(true)
  61. statement.SetProcName("WS_Chip_GetInfo")
  62. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  63. statement.AddParamter("@Gold", database.AdParamOutput, database.AdBigint, 8, gold)
  64. statement.AddParamter("@Bank", database.AdParamOutput, database.AdBigint, 8, bank)
  65. sqlstring := statement.GenSql()
  66. retRows := dbengine.ExecuteRs(sqlstring)
  67. if len(retRows) <= 0 {
  68. return false, gold, bank
  69. }
  70. gold = int((retRows[0][0]).(int64))
  71. bank = int((retRows[0][1]).(int64))
  72. return true, gold, bank
  73. }
  74. // 加筹码
  75. func giveChip(userId, amount, logType int, sourceName, remark, ipAddress string) int {
  76. defer func() {
  77. if err := recover(); err != nil {
  78. log.Error("inventory.giveMoney transaction recover err %v", err)
  79. log.Error("%s", debug.Stack())
  80. }
  81. }()
  82. retCode := 0
  83. statement := database.NewStatement()
  84. statement.SetNeedReturnValue(false)
  85. statement.SetOpenRecordSet(true)
  86. statement.SetProcName("WS_Chip_Give")
  87. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  88. statement.AddParamter("@Amount", database.AdParamInput, database.AdBigint, 8, amount)
  89. statement.AddParamter("@LogType", database.AdParamInput, database.AdInteger, 4, logType)
  90. statement.AddParamter("@SourceName", database.AdParamInput, database.AdNVarChar, 32, sourceName)
  91. statement.AddParamter("@Remark", database.AdParamInput, database.AdNVarChar, 128, remark)
  92. statement.AddParamter("@IPAddress", database.AdParamInput, database.AdVarChar, 16, ipAddress)
  93. statement.AddParamter("@RetCode", database.AdParamOutput, database.AdInteger, 4, retCode)
  94. sqlstring := statement.GenSql()
  95. // log.Debug(sqlstring)
  96. retRows := dbengine.ExecuteRs(sqlstring)
  97. if len(retRows) <= 0 {
  98. return retCode
  99. }
  100. retCode = int((retRows[0][0]).(int64))
  101. return retCode
  102. }
  103. // 减筹码
  104. func reduceChip(userId, amount, logType int, sourceName, remark, ipAddress string) int {
  105. defer func() {
  106. if err := recover(); err != nil {
  107. log.Error("inventory.reduceMoney transaction recover err %v", err)
  108. log.Error("%s", debug.Stack())
  109. }
  110. }()
  111. retCode := 0
  112. statement := database.NewStatement()
  113. statement.SetNeedReturnValue(false)
  114. statement.SetOpenRecordSet(true)
  115. statement.SetProcName("WS_Chip_Reduce")
  116. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  117. statement.AddParamter("@Amount", database.AdParamInput, database.AdBigint, 8, amount)
  118. statement.AddParamter("@LogType", database.AdParamInput, database.AdInteger, 4, logType)
  119. statement.AddParamter("@SourceName", database.AdParamInput, database.AdNVarChar, 64, sourceName)
  120. statement.AddParamter("@Remark", database.AdParamInput, database.AdNVarChar, 128, remark)
  121. statement.AddParamter("@IPAddress", database.AdParamInput, database.AdVarChar, 16, ipAddress)
  122. statement.AddParamter("@RetCode", database.AdParamOutput, database.AdInteger, 4, retCode)
  123. sqlstring := statement.GenSql()
  124. //log.Debug(sqlstring)
  125. retRows := dbengine.ExecuteRs(sqlstring)
  126. if len(retRows) <= 0 {
  127. return retCode
  128. }
  129. retCode = int((retRows[0][0]).(int64))
  130. return retCode
  131. }
  132. // 保险柜存入
  133. func chipBankIn(userId, amount, gameId int, serverName, ipAddress string) (int, int, int, string) {
  134. defer func() {
  135. if err := recover(); err != nil {
  136. log.Release("transaction recover %v", err)
  137. log.Release("%s", debug.Stack())
  138. }
  139. }()
  140. retCode, cash, bank, outMsg := 0, 0, 0, ""
  141. statement := database.NewStatement()
  142. statement.SetNeedReturnValue(false)
  143. statement.SetOpenRecordSet(true)
  144. statement.SetProcName("Game_Chip_BankIn")
  145. statement.AddParamter("@userid", database.AdParamInput, database.AdInteger, 4, userId)
  146. statement.AddParamter("@amount", database.AdParamInput, database.AdBigint, 8, amount)
  147. statement.AddParamter("@servername", database.AdParamInput, database.AdNVarChar, 64, serverName)
  148. statement.AddParamter("@cashamount", database.AdParamOutput, database.AdBigint, 8, cash)
  149. statement.AddParamter("@bankamount", database.AdParamOutput, database.AdBigint, 8, bank)
  150. statement.AddParamter("@outmsg", database.AdParamOutput, database.AdNVarChar, 512, outMsg)
  151. statement.AddParamter("@GameID", database.AdParamInput, database.AdInteger, 4, gameId)
  152. statement.AddParamter("@EPassword", database.AdParamInput, database.AdVarChar, 32, "")
  153. statement.AddParamter("@IPAddress", database.AdParamInput, database.AdVarChar, 16, ipAddress)
  154. statement.AddParamter("@RetCode", database.AdParamOutput, database.AdInteger, 4, retCode)
  155. sqlstring := statement.GenSql()
  156. //log.Debug(sqlstring)
  157. retRows := dbengine.ExecuteRs(sqlstring)
  158. if len(retRows) <= 0 {
  159. return retCode, cash, bank, outMsg
  160. }
  161. ret := retRows[0]
  162. cash = int((ret[0]).(int64))
  163. bank = int((ret[1]).(int64))
  164. outMsg = (ret[2]).(string)
  165. retCode = int((ret[3]).(int64))
  166. return retCode, cash, bank, outMsg
  167. }
  168. // 保险柜取出
  169. func chipBankOut(userId, amount, gameId int, serverName, ipAddress string) (int, int, int, string) {
  170. defer func() {
  171. if err := recover(); err != nil {
  172. log.Release("transaction recover %v", err)
  173. log.Release("%s", debug.Stack())
  174. }
  175. }()
  176. retCode, cash, bank, outMsg := 0, 0, 0, ""
  177. statement := database.NewStatement()
  178. statement.SetNeedReturnValue(false)
  179. statement.SetOpenRecordSet(true)
  180. statement.SetProcName("Game_Chip_BankOut")
  181. statement.AddParamter("@userid", database.AdParamInput, database.AdInteger, 4, userId)
  182. statement.AddParamter("@amount", database.AdParamInput, database.AdBigint, 8, amount)
  183. statement.AddParamter("@safeboxpwd", database.AdParamInput, database.AdVarChar, 16, "")
  184. statement.AddParamter("@servername", database.AdParamInput, database.AdNVarChar, 64, serverName)
  185. statement.AddParamter("@cashamount", database.AdParamOutput, database.AdBigint, 8, amount)
  186. statement.AddParamter("@bankamount", database.AdParamOutput, database.AdBigint, 8, bank)
  187. statement.AddParamter("@outmsg", database.AdParamOutput, database.AdVarChar, 512, outMsg)
  188. statement.AddParamter("@EPassword", database.AdParamInput, database.AdVarChar, 32, "")
  189. statement.AddParamter("@IPAddress", database.AdParamInput, database.AdVarChar, 16, ipAddress)
  190. statement.AddParamter("@RetCode", database.AdParamOutput, database.AdInteger, 4, retCode)
  191. statement.AddParamter("@GameID", database.AdParamInput, database.AdInteger, 4, gameId)
  192. sqlstring := statement.GenSql()
  193. //log.Debug(sqlstring)
  194. retRows := dbengine.ExecuteRs(sqlstring)
  195. if len(retRows) <= 0 {
  196. return retCode, cash, bank, outMsg
  197. }
  198. ret := retRows[0]
  199. cash = int((ret[0]).(int64))
  200. bank = int((ret[1]).(int64))
  201. outMsg = (ret[2]).(string)
  202. retCode = int((ret[3]).(int64))
  203. return retCode, cash, bank, outMsg
  204. }
  205. // 保险柜查询
  206. func chipBankQuery(userId int) (int, int) {
  207. defer func() {
  208. if err := recover(); err != nil {
  209. log.Release("transaction recover %v", err)
  210. log.Release("%s", debug.Stack())
  211. }
  212. }()
  213. bank := 0
  214. statement := database.NewStatement()
  215. statement.SetNeedReturnValue(false)
  216. statement.SetOpenRecordSet(false)
  217. statement.SetProcName("Game_Chip_BankQuery")
  218. statement.AddParamter("@userid", database.AdParamInput, database.AdInteger, 4, userId)
  219. statement.AddParamter("@bankamount", database.AdParamOutput, database.AdBigint, 8, bank)
  220. sqlstring := statement.GenSql()
  221. //log.Debug(sqlstring)
  222. retRows := dbengine.ExecuteRs(sqlstring)
  223. if len(retRows) <= 0 {
  224. return 0, bank
  225. }
  226. bank = int((retRows[0][0]).(int64))
  227. return 1, bank
  228. }
  229. // 转账(操作结果/操作描述/剩余金额/返还金额)
  230. func chipBankTransfer(userId, toUserId, amount int, ipAddress string) (int, int, string, int) {
  231. defer func() {
  232. if err := recover(); err != nil {
  233. log.Release("transaction recover %v", err)
  234. log.Release("%s", debug.Stack())
  235. }
  236. }()
  237. retCode, stillAmount, outMsg, refund := 0, 0, "", 0
  238. statement := database.NewStatement()
  239. statement.SetNeedReturnValue(false)
  240. statement.SetOpenRecordSet(true)
  241. statement.SetProcName("Game_Chip_Transfer")
  242. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  243. statement.AddParamter("@AcceptUserID", database.AdParamInput, database.AdInteger, 4, toUserId)
  244. statement.AddParamter("@WantAmount", database.AdParamInput, database.AdBigint, 8, amount)
  245. statement.AddParamter("@IPAddress", database.AdParamInput, database.AdVarChar, 16, ipAddress)
  246. sqlstring := statement.GenSql()
  247. retRows := dbengine.ExecuteRs(sqlstring)
  248. if len(retRows) <= 0 {
  249. return retCode, stillAmount, outMsg, refund
  250. }
  251. ret := retRows[0]
  252. outMsg = (ret[0]).(string)
  253. stillAmount = int((ret[1]).(int64))
  254. retCode = int((ret[2]).(int64))
  255. refund = int((ret[3]).(int64))
  256. return retCode, stillAmount, outMsg, refund
  257. }
  258. // 赠送记录
  259. func chipTransferLog(userId int) []*pb.TransferInfo {
  260. defer func() {
  261. if err := recover(); err != nil {
  262. log.Error("transaction recover err %v", err)
  263. log.Error("%s", debug.Stack())
  264. }
  265. }()
  266. statement := database.NewStatement()
  267. statement.SetNeedReturnValue(false)
  268. statement.SetOpenRecordSet(true)
  269. statement.SetProcName("Game_Chip_TransferLog")
  270. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  271. sqlstring := statement.GenSql()
  272. retRows := dbengine.ExecuteRs(sqlstring)
  273. rowLen := len(retRows)
  274. if rowLen <= 0 {
  275. return nil
  276. }
  277. var list []*pb.TransferInfo
  278. for i := 0; i < rowLen; i++ {
  279. ret := retRows[i]
  280. var out pb.TransferInfo
  281. out.UserID = int((ret[0]).(int64))
  282. out.NickName = (ret[1]).(string)
  283. out.Amount = int((ret[2]).(int64))
  284. out.Crdate = (ret[3]).(string)
  285. list = append(list, &out)
  286. }
  287. return list
  288. }
  289. func getTransferCfg() *pb.TransferCfg {
  290. defer func() {
  291. if err := recover(); err != nil {
  292. log.Error("transaction recover err %v", err)
  293. log.Error("%s", debug.Stack())
  294. }
  295. }()
  296. statement := database.NewStatement()
  297. statement.SetNeedReturnValue(false)
  298. statement.SetOpenRecordSet(true)
  299. statement.SetProcName("WS_TransferCfg_GetInfo")
  300. sqlString := statement.GenSql()
  301. retRows := dbengine.ExecuteRs(sqlString)
  302. if len(retRows) <= 0 {
  303. return &pb.TransferCfg{}
  304. }
  305. ret := retRows[0]
  306. return &pb.TransferCfg{
  307. Fee: int((ret[0]).(int64)),
  308. FreeBeginTime: (ret[1]).(string),
  309. FreeEndTime: (ret[2]).(string),
  310. FreeFlag: int((ret[3]).(int64)),
  311. RefundBeginTime: (ret[4]).(string),
  312. RefundEndTime: (ret[5]).(string),
  313. RefundRatio: int((ret[6]).(int64)),
  314. RefundMaxAmount: int((ret[7]).(int64)),
  315. RefundFlag: int((ret[8]).(int64)),
  316. MinBeginTime: (ret[9]).(string),
  317. MinEndTime: (ret[10]).(string),
  318. MinAmount: int((ret[11]).(int64)),
  319. MinFlag: int((ret[12]).(int64)),
  320. }
  321. }
  322. // 保险柜记录
  323. func chipBankLog(userId int, beginTime, endTime string, pageIndex, pageSize int) (int, []*pb.BankLogInfo) {
  324. defer func() {
  325. if err := recover(); err != nil {
  326. log.Release("transaction recover %v", err)
  327. log.Release("%s", debug.Stack())
  328. }
  329. }()
  330. recordCount := 0
  331. var list []*pb.BankLogInfo
  332. statement := database.NewStatement()
  333. statement.SetNeedReturnValue(false)
  334. statement.SetOpenRecordSet(true)
  335. statement.SetProcName("WS_Chip_GetLog")
  336. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  337. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 32, beginTime)
  338. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 32, endTime)
  339. statement.AddParamter("@PageIndex", database.AdParamInput, database.AdInteger, 4, pageIndex)
  340. statement.AddParamter("@PageSize", database.AdParamInput, database.AdInteger, 4, pageSize)
  341. statement.AddParamter("@RecordCount", database.AdParamOutput, database.AdInteger, 4, recordCount)
  342. sqlstring := statement.GenSql()
  343. retRows := dbengine.ExecuteRs(sqlstring)
  344. rowsLen := len(retRows)
  345. if rowsLen <= 0 {
  346. return recordCount, list
  347. }
  348. // 这里带输出和结果集,最后一行是输出参数
  349. if rowsLen > 1 {
  350. //这里是结果集
  351. for i := 0; i < rowsLen-1; i++ {
  352. ret := retRows[i]
  353. var info pb.BankLogInfo
  354. info.From = (ret[0]).(string)
  355. info.To = (ret[1]).(string)
  356. info.WantedAmount = int((ret[2]).(int64))
  357. info.StillAmount = int((ret[3]).(int64))
  358. info.Crdate = (ret[4]).(string)
  359. list = append(list, &info)
  360. }
  361. }
  362. //这里是输出参数
  363. recordCount = int((retRows[rowsLen-1][0]).(int64))
  364. return recordCount, list
  365. }
  366. // 获取银行信息
  367. func getBankInfo(userId int) *pb.BankInfo {
  368. defer func() {
  369. if err := recover(); err != nil {
  370. log.Error("transaction recover err %v", err)
  371. log.Error("%s", debug.Stack())
  372. }
  373. }()
  374. statement := database.NewStatement()
  375. statement.SetNeedReturnValue(false)
  376. statement.SetOpenRecordSet(true)
  377. statement.SetProcName("WS_AllUser_GetBankInfo")
  378. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  379. sqlstring := statement.GenSql()
  380. retRows := dbengine.ExecuteRs(sqlstring)
  381. rowLen := len(retRows)
  382. if rowLen <= 0 {
  383. return &pb.BankInfo{}
  384. }
  385. ret := retRows[0]
  386. return &pb.BankInfo{
  387. RealName: (ret[0]).(string),
  388. BankName: (ret[1]).(string),
  389. BankCode: (ret[2]).(string),
  390. BankCard: (ret[3]).(string),
  391. Mobile: (ret[4]).(string),
  392. }
  393. }
  394. // 保存银行信息
  395. func saveBankInfo(userId int, info *pb.BankInfo) bool {
  396. defer func() {
  397. if err := recover(); err != nil {
  398. log.Error("transaction recover err %v", err)
  399. log.Error("%s", debug.Stack())
  400. }
  401. }()
  402. retCode := 0
  403. statement := database.NewStatement()
  404. statement.SetNeedReturnValue(false)
  405. statement.SetOpenRecordSet(true)
  406. statement.SetProcName("WS_AllUser_SaveBankInfo")
  407. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  408. statement.AddParamter("@RealName", database.AdParamInput, database.AdVarChar, 32, info.RealName)
  409. statement.AddParamter("@BankName", database.AdParamInput, database.AdVarChar, 32, info.BankName)
  410. statement.AddParamter("@BankCode", database.AdParamInput, database.AdVarChar, 16, info.BankCode)
  411. statement.AddParamter("@BankCard", database.AdParamInput, database.AdVarChar, 32, info.BankCard)
  412. statement.AddParamter("@Mobile", database.AdParamInput, database.AdVarChar, 32, info.Mobile)
  413. statement.AddParamter("@RetCode", database.AdParamOutput, database.AdInteger, 4, retCode)
  414. sqlstring := statement.GenSql()
  415. retRows := dbengine.ExecuteRs(sqlstring)
  416. if len(retRows) <= 0 {
  417. return false
  418. }
  419. retCode = int((retRows[0][0]).(int64))
  420. return retCode == 1
  421. }