--[[ Descripttion: version: Author: Neo,Huang Date: 2022-09-03 17:46:39 LastEditors: Neo,Huang LastEditTime: 2022-09-03 17:47:04 --]] local lib_game_mysql = require("lib_game_mysql") local timeUtil = require("utils.timeUtil") local mysqlUtil = require("utils.mysqlUtil") local util_user = require("utils.util_user") local userData = require("data.user") local root = {} -- 新增订单 function root:add_order(orderAction) if orderAction == nil then return false end local bandShareCode = userData:get_key_info(tonumber(orderAction.uid), "bandShareCode") local sql = string.format( "INSERT INTO `mdl_order` (`payName`,`orderNo`,`uid`,`diamond`,`gold`,`gid`,`amount`,`time`,`status`,`resMsg`," .. "`channel`,`type`,`createtime`,`cut`,`bandShareCode`) VALUES ('%s','%s',%d,%s,%s,%d,%s,%d,%d,'%s',%d,%d,'%s',%d,'%s'); ", orderAction.pay or "", orderAction.orderNo or "", tonumber(orderAction.uid) or 0, tonumber(orderAction.diamond) or 0, tonumber(orderAction.gold) or 0, tonumber(orderAction.itemId) or 0, (tonumber(orderAction.amount) or 0), tonumber(orderAction.time) or timeUtil.now(), tonumber(orderAction.status) or 0, orderAction.resMsg or "", tonumber(orderAction.channel) or 0, tonumber(orderAction.type) or 0, orderAction.createtime or "", tonumber(orderAction.cut) or 0, bandShareCode or "" ) return mysqlUtil:insert(sql) end -- 打包订单信息 function root:pack_order_info(orderAction) if orderAction == nil then return end return { status = orderAction.status, orderId = orderAction.orderNo, gid = orderAction.itemId, errMsg = orderAction.resMsg, payName = orderAction.pay, errCode = orderAction.code, amount = orderAction.amount } end -- 通知 function root:on_shop_order(orderAction) if orderAction == nil or orderAction.status ~= 1 then return false end local msg = { orderInfo = self:pack_order_info(orderAction) } util_user:user_proto_notify(orderAction.uid, "on_shop_order", msg) return true end -- 订单是否存在 function root:is_order_exist(orderId) if is_empty(orderId) then return false end local sql = string.format("SELECT 1 FROM `mdl_order` WHERE orderNo = '%s';", orderId) lib_game_mysql:query(sql) local ok, ret = mysqlUtil:select(sql) if not ok or is_empty(ret) then return false end return true end -- 获取订单ID function root:get_order_id(orderId, uid) local sql = string.format( "SELECT id FROM `mdl_order` WHERE orderNo = '%s' and uid = %d ORDER BY id DESC LIMIT 1 ;", orderId or "", uid or 0 ) local ok, ret = mysqlUtil:select(sql) if not ok or ret == nil or #ret <= 0 then return end return tonumber(ret[1].id) end -- 更新订单状态 function root:update_order_status(id, status) if id == nil or status == nil then return false end local sql = string.format("UPDATE `mdl_order` SET `gameStatus` = %s where `id` = %s", tostring(status), tostring(id)) return mysqlUtil:update(sql) end -- 获取未处理订单列表 function root:get_unhandle_order_list() local sql = string.format("SELECT * FROM `mdl_order` WHERE `gameStatus`=0 AND `status`=1 ORDER BY id DESC") local ok, ret = mysqlUtil:select(sql) if not ok or is_empty(ret) then return end return ret end -- 无效订单 function root:handle_invalid_order(orderAction) -- 标记为已经处理并更新到数据库 local sql = string.format( "UPDATE `mdl_order` SET `gameStatus` = 1,`status`=%s,`resMsg`='%s' where `id` = %s", tostring(orderAction.status), tostring(orderAction.resMsg), tostring(orderAction.id) ) return mysqlUtil:update(sql) end return root