From 2dbe4fb9ebe21ce4526d3d47eff0696051923f7f Mon Sep 17 00:00:00 2001 From: chenyueqi Date: Thu, 25 Mar 2021 16:42:34 +0800 Subject: [PATCH] 充值礼包自选部分逻辑 --- src/actions/StoreAction.lua | 12 ++++++++---- src/models/Order.lua | 2 ++ src/models/RolePlugin.lua | 40 ++++++++++++++++++++++++++++++++++++---- 3 files changed, 46 insertions(+), 8 deletions(-) diff --git a/src/actions/StoreAction.lua b/src/actions/StoreAction.lua index 5f34aa2..f8e4708 100644 --- a/src/actions/StoreAction.lua +++ b/src/actions/StoreAction.lua @@ -7,12 +7,13 @@ function _M.rechargeRpc(agent , data) local role = agent.role local msg = MsgPack.unpack(data) local id = msg.id + local choose = msg.choose or "" local dataSet = csvdb["shop_rechargeCsv"][id] if not dataSet then return end local roleId = role:getProperty("id") --创建订单号 - local partnerOrderId = role:getPurchaseOrder(id) + local partnerOrderId = role:getPurchaseOrder(id,nil,choose) if partnerOrderId == "" then return 1 end @@ -58,13 +59,14 @@ function _M.googleRechargeRpc(agent, data) local role = agent.role local msg = MsgPack.unpack(data) local id = msg.id + local choose = msg.choose or "" local dataSet = csvdb["shop_rechargeCsv"][id] if not dataSet then return end local roleId = role:getProperty("id") role.ignoreHeartbeat = true --创建订单号 - local partnerOrderId = role:getPurchaseOrder(id) + local partnerOrderId = role:getPurchaseOrder(id,nil,choose) -- 签名 local secret_key = "b7657fa7ccd44c16a35e3f454ac7a075" local need = { @@ -85,13 +87,14 @@ function _M.myCardRechargeRpc(agent, data) local role = agent.role local msg = MsgPack.unpack(data) local id = msg.id + local choose = msg.choose or "" local dataSet = csvdb["shop_rechargeCsv"][id] if not dataSet then return end local roleId = role:getProperty("id") role.ignoreHeartbeat = true --创建订单号 - local partnerOrderId = role:getPurchaseOrder(id) + local partnerOrderId = role:getPurchaseOrder(id,nil,choose) -- 签名 local secret_key = "48759e07540f46d9af17ec82669b4272" local need = { @@ -111,13 +114,14 @@ function _M.iosRechargeRpc(agent, data) local role = agent.role local msg = MsgPack.unpack(data) local id = msg.id + local choose = msg.choose or "" local dataSet = csvdb["shop_rechargeCsv"][id] if not dataSet then return end local roleId = role:getProperty("id") role.ignoreHeartbeat = true --创建订单号 - local partnerOrderId = role:getPurchaseOrder(id) + local partnerOrderId = role:getPurchaseOrder(id,nil,choose) -- 签名 local secret_key = "9647d2efe1074c73b9ac19af4337a70e" local need = { diff --git a/src/models/Order.lua b/src/models/Order.lua index 30b0b32..2291365 100644 --- a/src/models/Order.lua +++ b/src/models/Order.lua @@ -12,6 +12,7 @@ Order.schema = { createTime = {"number", skynet.timex()}, -- 订单创建时间 finishTime = {"number", 0}, -- 服务端验证完成时间 status = {"string", "create"}, + choose = {"string", ""}, -- 自选奖励 } Order.fields = { @@ -21,6 +22,7 @@ Order.fields = { createTime = true, finishTime = true, status = true, + choose = true, } return Order \ No newline at end of file diff --git a/src/models/RolePlugin.lua b/src/models/RolePlugin.lua index 3244bdc..672301e 100644 --- a/src/models/RolePlugin.lua +++ b/src/models/RolePlugin.lua @@ -2013,7 +2013,7 @@ function RolePlugin.bind(Role) return "error money" end -- 发现需要的id - local partnerOrderId = self:getPurchaseOrder(k, params.transactionId) + local partnerOrderId = self:getPurchaseOrder(k, params.transactionId, params.choose) if partnerOrderId == "" then return "no product" end @@ -2023,7 +2023,7 @@ function RolePlugin.bind(Role) end -- 获取充值订单号 - function Role:getPurchaseOrder(rechargeId, transactionId) + function Role:getPurchaseOrder(rechargeId, transactionId, choose) local roleId = self:getProperty("id") local rechargeData = csvdb["shop_rechargeCsv"][rechargeId] if not rechargeData then @@ -2035,6 +2035,25 @@ function RolePlugin.bind(Role) if limit ~= 0 and limit <= (rechargeRecord[rechargeId] or 0) then return "" end + + -- 检查礼包自选奖励合法 + if choose and choose ~= "" then + if rechargeData.itemgift == "" then return "" end + local slot = rechargeData.itemdirect or 0 + local set = choose:toTableArray(true) + if slot ~= #set then return "" end + local pass = {} + local groups = rechargeData.itemdirect:toTableArray(true) + for _, item in ipairs(set) do + for _, group in ipairs(groups) do + if group[2] == item[1] and group[3] == item[2] then + pass[group[1]] = 1 + break + end + end + end + if #pass ~= slot then return "" end + end --判断是否是活动商品 if rechargeData.activity_id ~= 0 then @@ -2061,6 +2080,7 @@ function RolePlugin.bind(Role) rechargeId = rechargeId, createTime = skynet.timex(), transactionId = transactionId, + choose = choose or "", }) order:create() -- 正在进行中的订单 缓存 @@ -2128,7 +2148,7 @@ function RolePlugin.bind(Role) }) end - return true, rechargeId + return true, rechargeId, orderObject:getProperty("choose") end -- 充值 -- @@ -2146,7 +2166,7 @@ function RolePlugin.bind(Role) local roleId = self:getProperty("id") local partnerOrderStr = params.order - local status, back = self:updatePurchaseOrder(partnerOrderStr, params.transactionId, "finsh") + local status, back, choose = self:updatePurchaseOrder(partnerOrderStr, params.transactionId, "finsh") if not status then if back == "finsh" then -- 订单已经处理 @@ -2168,6 +2188,7 @@ function RolePlugin.bind(Role) transactionId = params.transactionId, pay_time = params.pay_time, order = partnerOrderStr, + choose = choose, }) if not status then @@ -2215,6 +2236,17 @@ function RolePlugin.bind(Role) return 3 end + -- 自选奖励部分 + if params.choose and params.choose ~= "" then + local tReward, tChange = self:award(params.choose, {log = {desc = "recharge", int1 = id}}) + for itemId, value in pairs(tReward) do + reward[itemId] = (reward[itemId] or 0) + value + end + for itemId, value in pairs(tChange) do + reward[itemId] = (reward[itemId] or 0) + value + end + end + if diamondCount > 0 then reward[ItemId.Diamond] = (reward[ItemId.Diamond] or 0) + diamondCount end -- libgit2 0.21.2