util_order.lua 3.7 KB

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