util_order.lua 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. --[[
  2. Descripttion:
  3. version:
  4. Author: Neo,Huang
  5. Date: 2022-09-03 17:46:39
  6. LastEditors: Neo,Huang
  7. LastEditTime: 2022-09-03 17:47:04
  8. --]]
  9. local lib_game_mysql = require("lib_game_mysql")
  10. local timeUtil = require("utils.timeUtil")
  11. local mysqlUtil = require("utils.mysqlUtil")
  12. local util_user = require("utils.util_user")
  13. local userData = require("data.user")
  14. local root = {}
  15. -- 新增订单
  16. function root:add_order(orderAction)
  17. if orderAction == nil then
  18. return false
  19. end
  20. local bandShareCode = userData:get_key_info(tonumber(orderAction.uid), "bandShareCode")
  21. local sql =
  22. string.format(
  23. "INSERT INTO `mdl_order` (`payName`,`orderNo`,`uid`,`diamond`,`gold`,`gid`,`amount`,`time`,`status`,`resMsg`," ..
  24. "`channel`,`type`,`createtime`,`cut`,`bandShareCode`) VALUES ('%s','%s',%d,%s,%s,%d,%s,%d,%d,'%s',%d,%d,'%s',%d,'%s'); ",
  25. orderAction.pay or "",
  26. orderAction.orderNo or "",
  27. tonumber(orderAction.uid) or 0,
  28. tonumber(orderAction.diamond) or 0,
  29. tonumber(orderAction.gold) or 0,
  30. tonumber(orderAction.itemId) or 0,
  31. (tonumber(orderAction.amount) or 0),
  32. tonumber(orderAction.time) or timeUtil.now(),
  33. tonumber(orderAction.status) or 0,
  34. orderAction.resMsg or "",
  35. tonumber(orderAction.channel) or 0,
  36. tonumber(orderAction.type) or 0,
  37. orderAction.createtime or "",
  38. tonumber(orderAction.cut) or 0,
  39. bandShareCode or ""
  40. )
  41. return mysqlUtil:insert(sql)
  42. end
  43. -- 打包订单信息
  44. function root:pack_order_info(orderAction)
  45. if orderAction == nil then
  46. return
  47. end
  48. return {
  49. status = orderAction.status,
  50. orderId = orderAction.orderNo,
  51. gid = orderAction.itemId,
  52. errMsg = orderAction.resMsg,
  53. payName = orderAction.pay,
  54. errCode = orderAction.code,
  55. amount = orderAction.amount
  56. }
  57. end
  58. -- 通知
  59. function root:on_shop_order(orderAction)
  60. if orderAction == nil or orderAction.status ~= 1 then
  61. return false
  62. end
  63. local msg = {
  64. orderInfo = self:pack_order_info(orderAction)
  65. }
  66. util_user:user_proto_notify(orderAction.uid, "on_shop_order", msg)
  67. return true
  68. end
  69. -- 订单是否存在
  70. function root:is_order_exist(orderId)
  71. if is_empty(orderId) then
  72. return false
  73. end
  74. local sql = string.format("SELECT 1 FROM `mdl_order` WHERE orderNo = '%s';", orderId)
  75. local ok, ret = mysqlUtil:select(sql)
  76. if not ok or is_empty(ret) then
  77. return false
  78. end
  79. return true
  80. end
  81. -- 获取订单ID
  82. function root:get_order_id(orderId, uid)
  83. local sql =
  84. string.format(
  85. "SELECT id FROM `mdl_order` WHERE orderNo = '%s' and uid = %d ORDER BY id DESC LIMIT 1 ;",
  86. orderId or "",
  87. uid or 0
  88. )
  89. local ok, ret = mysqlUtil:select(sql)
  90. if not ok or ret == nil or #ret <= 0 then
  91. return
  92. end
  93. return tonumber(ret[1].id)
  94. end
  95. -- 更新订单状态
  96. function root:update_order_status(id, status)
  97. if id == nil or status == nil then
  98. return false
  99. end
  100. local sql =
  101. string.format("UPDATE `mdl_order` SET `gameStatus` = %s where `id` = %s", tostring(status), tostring(id))
  102. return mysqlUtil:update(sql)
  103. end
  104. -- 获取未处理订单列表
  105. function root:get_unhandle_order_list()
  106. local sql = string.format("SELECT * FROM `mdl_order` WHERE `gameStatus`=0 AND `status`=1 ORDER BY id DESC")
  107. local ok, ret = mysqlUtil:select(sql)
  108. if not ok or is_empty(ret) then
  109. return
  110. end
  111. return ret
  112. end
  113. -- 无效订单
  114. function root:handle_invalid_order(orderAction)
  115. -- 标记为已经处理并更新到数据库
  116. local sql =
  117. string.format(
  118. "UPDATE `mdl_order` SET `gameStatus` = 1,`status`=%s,`resMsg`='%s' where `id` = %s",
  119. tostring(orderAction.status),
  120. tostring(orderAction.resMsg),
  121. tostring(orderAction.id)
  122. )
  123. return mysqlUtil:update(sql)
  124. end
  125. return root