util_order.lua 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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 `tb_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:on_shop_order(orderAction)
  42. if orderAction == nil or orderAction.status ~= 1 then
  43. return false
  44. end
  45. local msg = {
  46. orderInfo = {
  47. status = orderAction.status,
  48. orderId = orderAction.orderNo,
  49. gid = orderAction.itemId,
  50. errMsg = orderAction.resMsg,
  51. payName = orderAction.pay,
  52. errCode = orderAction.code,
  53. amount = orderAction.amount
  54. }
  55. }
  56. util_user:user_proto_notify(orderAction.uid, "on_shop_order", msg)
  57. return true
  58. end
  59. -- 订单是否存在
  60. function root:is_order_exist(orderId)
  61. if is_empty(orderId) then
  62. return false
  63. end
  64. local sql = string.format("SELECT 1 FROM `tb_order` WHERE orderNo = '%s';", orderId)
  65. lib_game_mysql:query(sql)
  66. local ok, ret = mysqlUtil:select(sql)
  67. if not ok or is_empty(ret) then
  68. return false
  69. end
  70. return true
  71. end
  72. -- 获取订单ID
  73. function root:get_order_id(orderId, uid)
  74. local sql =
  75. string.format(
  76. "SELECT id FROM `tb_order` WHERE orderNo = '%s' and uid = %d ORDER BY id DESC LIMIT 1 ;",
  77. orderId or "",
  78. uid or 0
  79. )
  80. local ok, ret = mysqlUtil:select(sql)
  81. if not ok or ret == nil or #ret <= 0 then
  82. return
  83. end
  84. return tonumber(ret[1].id)
  85. end
  86. -- 更新订单状态
  87. function root:update_order_status(id, status)
  88. if id == nil or status == nil then
  89. return false
  90. end
  91. local sql = string.format("UPDATE `tb_order` SET `gameStatus` = %s where `id` = %s", tostring(status), tostring(id))
  92. return mysqlUtil:update(sql)
  93. end
  94. -- 获取未处理订单列表
  95. function root:get_unhandle_order_list()
  96. local sql = string.format("SELECT * FROM `tb_order` WHERE `gameStatus`=0 AND `status`=1 ORDER BY id DESC")
  97. local ok, ret = mysqlUtil:select(sql)
  98. if not ok or is_empty(ret) then
  99. return
  100. end
  101. return ret
  102. end
  103. -- 无效订单
  104. function root:handle_invalid_order(orderAction)
  105. -- 标记为已经处理并更新到数据库
  106. local sql =
  107. string.format(
  108. "UPDATE `tb_order` SET `gameStatus` = 1,`status`=%s,`resMsg`='%s' where `id` = %s",
  109. tostring(orderAction.status),
  110. tostring(orderAction.resMsg),
  111. tostring(orderAction.id)
  112. )
  113. return mysqlUtil:update(sql)
  114. end
  115. return root