Commit 3fbbd115dc90321b21f4430d0ad43ba00f70db15
Merge branch 'tr/develop' into cn/develop
Showing
5 changed files
with
143 additions
and
13 deletions
Show diff stats
src/actions/ActivityAction.lua
... | ... | @@ -140,6 +140,13 @@ function _M.signRpc(agent, data) |
140 | 140 | role:changeUpdates({{type = "sign", field = curDay, value = yearMonth}}) |
141 | 141 | role:checkTaskEnter("SignIn") |
142 | 142 | |
143 | + if monthData[curDay].daily_sign_email ~= "" then | |
144 | + local emails = monthData[curDay].daily_sign_email:toArray(true,"=") | |
145 | + for _, emailId in pairs(emails) do | |
146 | + redisproxy:insertEmail({roleId = role:getProperty("id"), emailId = emailId}) | |
147 | + end | |
148 | + end | |
149 | + | |
143 | 150 | SendPacket(actionCodes.Activity_signRpc, MsgPack.pack(role:packReward(reward, change))) |
144 | 151 | return true |
145 | 152 | end | ... | ... |
src/actions/StoreAction.lua
... | ... | @@ -7,12 +7,13 @@ function _M.rechargeRpc(agent , data) |
7 | 7 | local role = agent.role |
8 | 8 | local msg = MsgPack.unpack(data) |
9 | 9 | local id = msg.id |
10 | + local choose = msg.choose or "" | |
10 | 11 | local dataSet = csvdb["shop_rechargeCsv"][id] |
11 | 12 | if not dataSet then return end |
12 | 13 | local roleId = role:getProperty("id") |
13 | 14 | |
14 | 15 | --创建订单号 |
15 | - local partnerOrderId = role:getPurchaseOrder(id) | |
16 | + local partnerOrderId = role:getPurchaseOrder(id,nil,choose) | |
16 | 17 | if partnerOrderId == "" then |
17 | 18 | return 1 |
18 | 19 | end |
... | ... | @@ -161,13 +162,14 @@ function _M.googleRechargeRpc(agent, data) |
161 | 162 | local role = agent.role |
162 | 163 | local msg = MsgPack.unpack(data) |
163 | 164 | local id = msg.id |
165 | + local choose = msg.choose or "" | |
164 | 166 | local dataSet = csvdb["shop_rechargeCsv"][id] |
165 | 167 | if not dataSet then return end |
166 | 168 | local roleId = role:getProperty("id") |
167 | 169 | |
168 | 170 | role.ignoreHeartbeat = true |
169 | 171 | --创建订单号 |
170 | - local partnerOrderId = role:getPurchaseOrder(id) | |
172 | + local partnerOrderId = role:getPurchaseOrder(id,nil,choose) | |
171 | 173 | -- 签名 |
172 | 174 | -- local secret_key = "b7657fa7ccd44c16a35e3f454ac7a075" |
173 | 175 | local secret_key = "8920e9dcf0cb4ebca87393ce48021ead" |
... | ... | @@ -189,13 +191,14 @@ function _M.myCardRechargeRpc(agent, data) |
189 | 191 | local role = agent.role |
190 | 192 | local msg = MsgPack.unpack(data) |
191 | 193 | local id = msg.id |
194 | + local choose = msg.choose or "" | |
192 | 195 | local dataSet = csvdb["shop_rechargeCsv"][id] |
193 | 196 | if not dataSet then return end |
194 | 197 | local roleId = role:getProperty("id") |
195 | 198 | |
196 | 199 | role.ignoreHeartbeat = true |
197 | 200 | --创建订单号 |
198 | - local partnerOrderId = role:getPurchaseOrder(id) | |
201 | + local partnerOrderId = role:getPurchaseOrder(id,nil,choose) | |
199 | 202 | -- 签名 |
200 | 203 | local secret_key = "48759e07540f46d9af17ec82669b4272" |
201 | 204 | local need = { |
... | ... | @@ -215,13 +218,14 @@ function _M.iosRechargeRpc(agent, data) |
215 | 218 | local role = agent.role |
216 | 219 | local msg = MsgPack.unpack(data) |
217 | 220 | local id = msg.id |
221 | + local choose = msg.choose or "" | |
218 | 222 | local dataSet = csvdb["shop_rechargeCsv"][id] |
219 | 223 | if not dataSet then return end |
220 | 224 | local roleId = role:getProperty("id") |
221 | 225 | |
222 | 226 | role.ignoreHeartbeat = true |
223 | 227 | --创建订单号 |
224 | - local partnerOrderId = role:getPurchaseOrder(id) | |
228 | + local partnerOrderId = role:getPurchaseOrder(id,nil,choose) | |
225 | 229 | -- 签名 |
226 | 230 | local secret_key = "1916d62251dd4a8aa5e452121eefc9a1" |
227 | 231 | local need = { | ... | ... |
src/models/Order.lua
... | ... | @@ -13,6 +13,7 @@ Order.schema = { |
13 | 13 | finishTime = {"number", 0}, -- 服务端验证完成时间 |
14 | 14 | status = {"string", "create"}, |
15 | 15 | sid = {"number",0}, -- 创建单号的设备的sid |
16 | + choose = {"string", ""}, -- 自选奖励 | |
16 | 17 | } |
17 | 18 | |
18 | 19 | Order.fields = { |
... | ... | @@ -23,6 +24,7 @@ Order.fields = { |
23 | 24 | finishTime = true, |
24 | 25 | status = true, |
25 | 26 | sid = true, |
27 | + choose = true, | |
26 | 28 | } |
27 | 29 | |
28 | 30 | return Order |
29 | 31 | \ No newline at end of file | ... | ... |
src/models/RolePlugin.lua
... | ... | @@ -1349,8 +1349,7 @@ function RolePlugin.bind(Role) |
1349 | 1349 | local donate = seaport.donate or {} |
1350 | 1350 | if not reset and (not donate[1] or not donate[2]) then |
1351 | 1351 | local result = self:getSeaportServerProgress() |
1352 | - local seaportCsv = csvdb["seaport_purchaseCsv"] | |
1353 | - for idx, set in ipairs(seaportCsv) do | |
1352 | + for idx, set in ipairs(csvdb["seaport_purchaseCsv"]) do | |
1354 | 1353 | local done = true |
1355 | 1354 | for id, data in ipairs(set) do |
1356 | 1355 | if donate[id] or not result[idx] or not result[idx][id] or result[idx][id] < data.need_num then |
... | ... | @@ -1360,7 +1359,12 @@ function RolePlugin.bind(Role) |
1360 | 1359 | end |
1361 | 1360 | if done then |
1362 | 1361 | update = true |
1363 | - self:award(set[1].phase_award, {log = {desc = "seaportReward", int1 = set[1].phase, int2 = set[1].id}}) | |
1362 | + redisproxy:insertEmail({ | |
1363 | + roleId = self:getProperty("id"), | |
1364 | + emailId = idx == 1 and 361 or 362, | |
1365 | + attachments = set[1].phase_award, | |
1366 | + }) | |
1367 | + -- self:award(set[1].phase_award, {log = {desc = "seaportReward", int1 = set[1].phase, int2 = set[1].id}}) | |
1364 | 1368 | donate[idx] = 1 |
1365 | 1369 | end |
1366 | 1370 | end |
... | ... | @@ -1397,6 +1401,8 @@ function RolePlugin.bind(Role) |
1397 | 1401 | local expCarbonId = self:getProperty("hangInfo").expCarbonId |
1398 | 1402 | local taskCsv = csvdb["seaport_taskCsv"] |
1399 | 1403 | local endTime = openTime0 + 86400 * 2 |
1404 | + local reward = {} | |
1405 | + | |
1400 | 1406 | for slot, set in pairs(taskCsv) do |
1401 | 1407 | if collect[slot] then |
1402 | 1408 | update = true |
... | ... | @@ -1433,9 +1439,28 @@ function RolePlugin.bind(Role) |
1433 | 1439 | itemReward[key] = math.ceil(1.5 * value) |
1434 | 1440 | end |
1435 | 1441 | end |
1436 | - self:award(itemReward, {log = {desc = "seaportTask", int1 = slot, int2 = level}}) | |
1442 | + | |
1443 | + for itemId, value in pairs(itemReward) do | |
1444 | + reward[itemId] = (reward[itemId] or 0) + value | |
1445 | + end | |
1446 | + -- self:award(itemReward, {log = {desc = "seaportTask", int1 = slot, int2 = level}}) | |
1447 | + end | |
1448 | + end | |
1449 | + end | |
1450 | + | |
1451 | + if next(reward) then | |
1452 | + local rewardStr = "" | |
1453 | + for itemId, value in pairs(reward) do | |
1454 | + if rewardStr ~= "" then | |
1455 | + rewardStr = rewardStr .. " " | |
1437 | 1456 | end |
1457 | + rewardStr = rewardStr .. string.format("%s=%s",itemId,value) | |
1438 | 1458 | end |
1459 | + redisproxy:insertEmail({ | |
1460 | + roleId = self:getProperty("id"), | |
1461 | + emailId = 363, | |
1462 | + attachments = rewardStr, | |
1463 | + }) | |
1439 | 1464 | end |
1440 | 1465 | end |
1441 | 1466 | seaport.collect = {} |
... | ... | @@ -2022,7 +2047,7 @@ function RolePlugin.bind(Role) |
2022 | 2047 | return "error money" |
2023 | 2048 | end |
2024 | 2049 | -- 发现需要的id |
2025 | - local partnerOrderId = self:getPurchaseOrder(k, params.transactionId) | |
2050 | + local partnerOrderId = self:getPurchaseOrder(k, params.transactionId, params.choose) | |
2026 | 2051 | if partnerOrderId == "" then |
2027 | 2052 | return "no product" |
2028 | 2053 | end |
... | ... | @@ -2032,7 +2057,7 @@ function RolePlugin.bind(Role) |
2032 | 2057 | end |
2033 | 2058 | |
2034 | 2059 | -- 获取充值订单号 |
2035 | - function Role:getPurchaseOrder(rechargeId, transactionId) | |
2060 | + function Role:getPurchaseOrder(rechargeId, transactionId, choose) | |
2036 | 2061 | local roleId = self:getProperty("id") |
2037 | 2062 | local rechargeData = csvdb["shop_rechargeCsv"][rechargeId] |
2038 | 2063 | if not rechargeData then |
... | ... | @@ -2044,7 +2069,24 @@ function RolePlugin.bind(Role) |
2044 | 2069 | if limit ~= 0 and limit <= (rechargeRecord[rechargeId] or 0) then |
2045 | 2070 | return "" |
2046 | 2071 | end |
2047 | - | |
2072 | + -- 检查礼包自选奖励合法 | |
2073 | + if choose and choose ~= "" then | |
2074 | + if rechargeData.itemgift == "" then return "" end | |
2075 | + local slot = rechargeData.itemdirect or 0 | |
2076 | + local set = choose:toTableArray(true) | |
2077 | + if slot ~= #set then return "" end | |
2078 | + local pass = {} | |
2079 | + local groups = rechargeData.itemgift:toTableArray(true) | |
2080 | + for idx, item in ipairs(set) do | |
2081 | + for _, group in ipairs(groups) do | |
2082 | + if group[2] == item[1] and group[3] == item[2] and idx == group[1] then | |
2083 | + pass[group[1]] = 1 | |
2084 | + break | |
2085 | + end | |
2086 | + end | |
2087 | + end | |
2088 | + if #pass ~= slot then return "" end | |
2089 | + end | |
2048 | 2090 | --判断是否是活动商品 |
2049 | 2091 | if rechargeData.activity_id ~= 0 then |
2050 | 2092 | local actCfg = csvdb["activity_ctrlCsv"][rechargeData.activity_id] |
... | ... | @@ -2071,6 +2113,7 @@ function RolePlugin.bind(Role) |
2071 | 2113 | createTime = skynet.timex(), |
2072 | 2114 | transactionId = transactionId, |
2073 | 2115 | sid = self:getProperty("sid"), |
2116 | + choose = choose or "", | |
2074 | 2117 | }) |
2075 | 2118 | order:create() |
2076 | 2119 | -- 正在进行中的订单 缓存 |
... | ... | @@ -2139,7 +2182,7 @@ function RolePlugin.bind(Role) |
2139 | 2182 | }) |
2140 | 2183 | end |
2141 | 2184 | |
2142 | - return true, rechargeId, sid | |
2185 | + return true, rechargeId, sid, orderObject:getProperty("choose") | |
2143 | 2186 | end |
2144 | 2187 | |
2145 | 2188 | -- 充值 -- |
... | ... | @@ -2157,7 +2200,7 @@ function RolePlugin.bind(Role) |
2157 | 2200 | local roleId = self:getProperty("id") |
2158 | 2201 | local partnerOrderStr = params.order |
2159 | 2202 | |
2160 | - local status, back, sid = self:updatePurchaseOrder(partnerOrderStr, params.transactionId, "finsh") | |
2203 | + local status, back, sid, choose = self:updatePurchaseOrder(partnerOrderStr, params.transactionId, "finsh") | |
2161 | 2204 | if not status then |
2162 | 2205 | if back == "finsh" then |
2163 | 2206 | -- 订单已经处理 |
... | ... | @@ -2180,6 +2223,7 @@ function RolePlugin.bind(Role) |
2180 | 2223 | pay_time = params.pay_time, |
2181 | 2224 | order = partnerOrderStr, |
2182 | 2225 | sid = sid, |
2226 | + choose = choose, | |
2183 | 2227 | }) |
2184 | 2228 | |
2185 | 2229 | if not status then |
... | ... | @@ -2227,6 +2271,17 @@ function RolePlugin.bind(Role) |
2227 | 2271 | return 3 |
2228 | 2272 | end |
2229 | 2273 | |
2274 | + -- 自选奖励部分 | |
2275 | + if params.choose and params.choose ~= "" then | |
2276 | + local tReward, tChange = self:award(params.choose, {log = {desc = "recharge", int1 = id}}) | |
2277 | + for itemId, value in pairs(tReward) do | |
2278 | + reward[itemId] = (reward[itemId] or 0) + value | |
2279 | + end | |
2280 | + for itemId, value in pairs(tChange or {}) do | |
2281 | + reward[itemId] = (reward[itemId] or 0) + value | |
2282 | + end | |
2283 | + end | |
2284 | + | |
2230 | 2285 | if diamondCount > 0 then |
2231 | 2286 | reward[ItemId.Diamond] = (reward[ItemId.Diamond] or 0) + diamondCount |
2232 | 2287 | end | ... | ... |
src/services/globald.lua
... | ... | @@ -184,6 +184,67 @@ local function check_trade_seaport_status() |
184 | 184 | skynet.timeout(interval, check_trade_seaport_status) |
185 | 185 | end |
186 | 186 | |
187 | +-- @desc: 海港贸易捐赠作弊 | |
188 | +local seaportTimes = {} | |
189 | +local function check_trade_seaport_donate() | |
190 | + local time1 = tonumber(redisproxy:hget("autoincrement_set", "seaportTime1")) or 0 | |
191 | + local time2 = tonumber(redisproxy:hget("autoincrement_set", "seaportTime2")) or 0 | |
192 | + if time1 == 0 and time2 == 0 then | |
193 | + seaportTimes = {} | |
194 | + skynet.timeout(360000, check_trade_seaport_donate) | |
195 | + return | |
196 | + end | |
197 | + | |
198 | + local csvdb = require "shared.csvdata" | |
199 | + local donateCsv = csvdb["seaport_purchaseCsv"] | |
200 | + | |
201 | + local times = {time1, time2} | |
202 | + for phase, open in ipairs(times) do | |
203 | + if open == 1 and not seaportTimes[phase] then | |
204 | + seaportTimes[phase] = {} | |
205 | + for _, _ in ipairs(donateCsv[phase]) do | |
206 | + table.insert(seaportTimes[phase],math.randomInt(1800, 3600)) | |
207 | + end | |
208 | + end | |
209 | + end | |
210 | + | |
211 | + local interval = 3600 | |
212 | + local phase, id = 0, 0 | |
213 | + | |
214 | + for key1, data in ipairs(seaportTimes) do | |
215 | + for key2, temp in pairs(data) do | |
216 | + if times[key1] == 1 and temp < interval then | |
217 | + interval = temp | |
218 | + phase = key1 | |
219 | + id = key2 | |
220 | + end | |
221 | + end | |
222 | + end | |
223 | + | |
224 | + for _, data in ipairs(seaportTimes) do | |
225 | + for id, temp in pairs(data) do | |
226 | + data[id] = temp - interval | |
227 | + if data[id] == 0 then | |
228 | + data[id] = math.randomInt(1800, 3600) | |
229 | + end | |
230 | + end | |
231 | + end | |
232 | + | |
233 | + if phase ~= 0 and id ~= 0 then | |
234 | + local redisKeys = {SEAPORT_TRADE_TASK_1,SEAPORT_TRADE_TASK_2} | |
235 | + local all = donateCsv[phase][id].need_num | |
236 | + local old = tonumber(redisproxy:hget(redisKeys[phase],id)) or 0 | |
237 | + local add = math.min(math.randomInt(math.floor(all/20),math.floor(all/12)),all - old) | |
238 | + if add > 0 then | |
239 | + redisproxy:hincrby(redisKeys[phase],id,add) | |
240 | + else | |
241 | + seaportTimes[phase][id] = nil | |
242 | + end | |
243 | + end | |
244 | + | |
245 | + skynet.timeout(interval * 100, check_trade_seaport_donate) | |
246 | +end | |
247 | + | |
187 | 248 | local CMD = {} |
188 | 249 | |
189 | 250 | |
... | ... | @@ -208,6 +269,7 @@ function CMD.start() |
208 | 269 | check_mail_queue() |
209 | 270 | --check_battle_act_close() |
210 | 271 | check_trade_seaport_status() |
272 | + check_trade_seaport_donate() | |
211 | 273 | end |
212 | 274 | |
213 | 275 | local function __init__() | ... | ... |