util_order.lua 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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. lib_game_mysql:query(sql)
  76. local ok, ret = mysqlUtil:select(sql)
  77. if not ok or is_empty(ret) then
  78. return false
  79. end
  80. return true
  81. end
  82. -- 获取订单ID
  83. function root:get_order_id(orderId, uid)
  84. local sql =
  85. string.format(
  86. "SELECT id FROM `mdl_order` WHERE orderNo = '%s' and uid = %d ORDER BY id DESC LIMIT 1 ;",
  87. orderId or "",
  88. uid or 0
  89. )
  90. local ok, ret = mysqlUtil:select(sql)
  91. if not ok or ret == nil or #ret <= 0 then
  92. return
  93. end
  94. return tonumber(ret[1].id)
  95. end
  96. -- 更新订单状态
  97. function root:update_order_status(id, status)
  98. if id == nil or status == nil then
  99. return false
  100. end
  101. local sql =
  102. string.format("UPDATE `mdl_order` SET `gameStatus` = %s where `id` = %s", tostring(status), tostring(id))
  103. return mysqlUtil:update(sql)
  104. end
  105. -- 获取未处理订单列表
  106. function root:get_unhandle_order_list()
  107. local sql = string.format("SELECT * FROM `mdl_order` WHERE `gameStatus`=0 AND `status`=1 ORDER BY id DESC")
  108. local ok, ret = mysqlUtil:select(sql)
  109. if not ok or is_empty(ret) then
  110. return
  111. end
  112. return ret
  113. end
  114. -- 无效订单
  115. function root:handle_invalid_order(orderAction)
  116. -- 标记为已经处理并更新到数据库
  117. local sql =
  118. string.format(
  119. "UPDATE `mdl_order` SET `gameStatus` = 1,`status`=%s,`resMsg`='%s' where `id` = %s",
  120. tostring(orderAction.status),
  121. tostring(orderAction.resMsg),
  122. tostring(orderAction.id)
  123. )
  124. return mysqlUtil:update(sql)
  125. end
  126. return root