Commit 2c04a1498ae7a59983d5b1f0e55e4a21ee1beab3

Authored by zhangqijia
1 parent 2c585b73

fix: 特刊购买,在生成订单的时候进行判断是否能购买,不能购买则订单生成失败

Showing 2 changed files with 25 additions and 22 deletions   Show diff stats
src/models/RolePlugin.lua
... ... @@ -2315,6 +2315,18 @@ function RolePlugin.bind(Role)
2315 2315 -- end
2316 2316 -- end
2317 2317  
  2318 + --月卡-特刊加判断;
  2319 + -- 问题描述: 支付回调里订单支付完成,但是没有奖励,对应的特刊也没有购买成功。
  2320 + -- 避免这种情况发生,在生成订单的时候就判断是否能购买特刊,生成对应的订单id
  2321 + if rechargeData.shop == 2 and rechargeData.type == CardType.SuperMonthCard then
  2322 + local card = csvdb["shop_cardCsv"][rechargeData.id]
  2323 + if not card then return "" end
  2324 +
  2325 + if not self.storeData:buySMonthCardLimit(card["buyLimit"]) then
  2326 + return ""
  2327 + end
  2328 + end
  2329 +
2318 2330 local orderId = redisproxy:hincrby("autoincrement_set", "order", 1)
2319 2331 local uid = orderId * MAX_SVR_ID + serverId
2320 2332 local partnerOrderId = string.format("%d", orderId * MAX_SVR_ID + serverId)
... ...
src/models/Store.lua
... ... @@ -342,26 +342,26 @@ function Store:isSMonthCardExpired(id)
342 342 end
343 343  
344 344 function Store:buySMonthCardLimit(buylimit)
  345 + if not buylimit or buylimit == "" then return true end
  346 +
345 347 local smonthCards = self:getProperty("smonthCards") or {}
346   - for k, v in pairs(buylimit) do
  348 + for k, v in pairs(buylimit:toNumMap() or {}) do
347 349 if k == 1 then
348 350 if v == 101 then
349 351 if self:isMonthCardExpire() then
350   - skynet.error("月卡过期")
351 352 return false
352 353 end
353 354 else
354   - if smonthCards[v] == nil then
355   - skynet.error("没有购买增刊里的条件, %d", v)
  355 + if not smonthCards[v] then
356 356 return false
357 357 end
358 358 end
359 359 elseif k == 2 then
360   - if smonthCards[v] == nil and v ~= 101 then
  360 + if not smonthCards[v] then
361 361 skynet.error("没有购买增刊条件里的特刊, %d", v)
362 362 return false
363 363 end
364   - if self:isSMonthCardExpired(v) == false and v ~= 101 then
  364 + if not self:isSMonthCardExpired(v) then
365 365 skynet.error("上期特刊奖励没领完") --策划yc+hbw 没领完上期特刊,新一期特刊不展示,不允许购买
366 366 return false
367 367 end
... ... @@ -372,18 +372,17 @@ end
372 372  
373 373 function Store:buySMonthCard(id)
374 374 local smonthCards = self:getProperty("smonthCards") or {}
  375 + local card = csvdb["shop_cardCsv"][id]
  376 + if not card then return false end
  377 +
  378 + if not self:buySMonthCardLimit(card["buyLimit"]) then
  379 + skynet.error("不满足购买条件")
  380 + return false
  381 + end
375 382  
376 383 local BuyMonthCard = {}
377 384 BuyMonthCard["renewal"]= function()
378 385 --续刊
379   - local card = csvdb["shop_cardCsv"][id] or {}
380   - if card["buyLimit"] and card["buyLimit"] ~= "" then
381   - if not self:buySMonthCardLimit(card["buyLimit"]:toNumMap()) then
382   - skynet.error("不满足购买条件")
383   - return false
384   - end
385   - end
386   -
387 386 local smonthCard = smonthCards[id] or {}
388 387 if next(smonthCard) then
389 388 smonthCard["buyCount"] = (smonthCard["buyCount"] or 0) + 1
... ... @@ -397,14 +396,6 @@ function Store:buySMonthCard(id)
397 396  
398 397 BuyMonthCard["order"] = function()
399 398 --增刊
400   - local card = csvdb["shop_cardCsv"][id] or {}
401   - if card["buyLimit"] and card["buyLimit"] ~= "" then
402   - if not self:buySMonthCardLimit(card["buyLimit"]:toNumMap()) then
403   - skynet.error("不满足增刊条件")
404   - return false
405   - end
406   - end
407   -
408 399 smonthCards[id] = {["periods"] = (card["amount"] or 30), ["buyCount"] = 1}
409 400 self:updateProperty({field= "smonthCards", value = smonthCards})
410 401 return true
... ...