diff --git a/src/actions/StoreAction.lua b/src/actions/StoreAction.lua index 12084ac..daaf26a 100644 --- a/src/actions/StoreAction.lua +++ b/src/actions/StoreAction.lua @@ -3,7 +3,20 @@ local _M = {} local serverId = tonumber(skynet.getenv("servId")) local md5 = require "md5" -local function makeOrder(roleId, rechargeId) +local function makeOrder(role, rechargeId) + local roleId = role:getProperty("id") + local rechargeData = csvdb["shop_rechargeCsv"][rechargeId] + if not rechargeData then + skynet.error("recharge id not exist", rechargeId) + return "" + end + local limit = rechargeData.limit + local rechargeRecord = role:getProperty("payR") or {} + if limit ~= 0 and limit <= (rechargeRecord[rechargeId] or 0) then + skynet.error(string.format("recharge id:%d count over limit, user id:%d", rechargeId, roleId)) + return "" + end + local orderId = redisproxy:hincrby("autoincrement_set", "order", 1) local partnerOrderId = string.format("%d_%d_%d", serverId, roleId, orderId) local orderKey = string.format("order:%d:%d", roleId, orderId) @@ -28,7 +41,7 @@ function _M.rechargeRpc(agent , data) local roleId = role:getProperty("id") --创建订单号 - local partnerOrderId = makeOrder(roleId, id) + local partnerOrderId = makeOrder(role, id) SendPacket(actionCodes.Store_rechargeRpc, MsgPack.pack({ order = partnerOrderId })) @@ -77,7 +90,7 @@ function _M.googleRechargeRpc(agent, data) role.ignoreHeartbeat = true --创建订单号 - local partnerOrderId = makeOrder(roleId, id) + local partnerOrderId = makeOrder(role, id) -- 签名 local secret_key = "b7657fa7ccd44c16a35e3f454ac7a075" local need = { @@ -104,7 +117,7 @@ function _M.myCardRechargeRpc(agent, data) role.ignoreHeartbeat = true --创建订单号 - local partnerOrderId = makeOrder(roleId, id) + local partnerOrderId = makeOrder(role, id) -- 签名 local secret_key = "48759e07540f46d9af17ec82669b4272" local need = { @@ -130,7 +143,7 @@ function _M.iosRechargeRpc(agent, data) role.ignoreHeartbeat = true --创建订单号 - local partnerOrderId = makeOrder(roleId, id) + local partnerOrderId = makeOrder(role, id) -- 签名 local secret_key = "9647d2efe1074c73b9ac19af4337a70e" local need = { diff --git a/src/models/Store.lua b/src/models/Store.lua index 0ad99a9..f73b8b3 100644 --- a/src/models/Store.lua +++ b/src/models/Store.lua @@ -224,7 +224,7 @@ end --检测购买是否超过限制数量 function Store:checkRechargeRecord(limit, id) - local rechargeRecord = self:getProperty("payR") + local rechargeRecord = self:getProperty("payR") or {} if limit ~= 0 and limit <= (rechargeRecord[id] or 0) then skynet.error(string.format("recharge id:%d count over limit, user id:%d", id, self.owner:getProperty("id"))) return false -- libgit2 0.21.2