331 lines
11 KiB
Lua
331 lines
11 KiB
Lua
local ShopManager = class("ShopManager", BaseModule)
|
|
|
|
ShopManager.COMMERCE_TYPE = {
|
|
CHAPTER_GIFT = 1,
|
|
DAILY_STORE = 2,
|
|
GEM_STORE = 3,
|
|
GOLD_STORE = 4,
|
|
}
|
|
|
|
ShopManager.SUMMON_ID = {
|
|
NORMAL = 1,
|
|
EPIC = 2,
|
|
SSR = 3,
|
|
}
|
|
|
|
function ShopManager:showBuyGemUI()
|
|
UIManager:showUI("app/ui/shop/buy_gem_ui")
|
|
end
|
|
|
|
function ShopManager:showFirstRechargeUI()
|
|
UIManager:showUI("app/ui/shop/first_recharge_ui")
|
|
end
|
|
|
|
function ShopManager:showFundUI(showPage)
|
|
UIManager:showUI("app/ui/fund/fund_main_ui", {showPage = showPage})
|
|
end
|
|
|
|
function ShopManager:showFundRewardUI(params)
|
|
UIManager:showUI("app/ui/fund/fund_reward_ui", params)
|
|
end
|
|
|
|
function ShopManager:showThirdGiftPopUI()
|
|
UIManager:showUI("app/ui/shop/third_gift_pop_ui")
|
|
end
|
|
|
|
function ShopManager:showVoucherReceiveUI()
|
|
UIManager:showUI("app/ui/shop/voucher_receive_ui")
|
|
end
|
|
|
|
-- 展示竞技场ad宝箱
|
|
function ShopManager:showArenaAdBoxUI(isWin)
|
|
local params = {
|
|
isWin = isWin
|
|
}
|
|
UIManager:showUI("app/ui/shop/box_hero_ui", {arena = params})
|
|
end
|
|
|
|
-- 宝箱奖励开箱界面 type,params,rewards
|
|
function ShopManager:showBoxOpenUI(params)
|
|
return UIManager:showUI("app/ui/shop/open_box_ui", params)
|
|
end
|
|
|
|
-- 宝箱奖励展示界面
|
|
function ShopManager:showBoxRewardUI(params)
|
|
UIManager:showUI("app/ui/shop/box_reward_ui", params)
|
|
end
|
|
|
|
-- 章节礼包
|
|
function ShopManager:reqBuyChapterGift(id)
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.MallChapterBuyReq, {id = id}, self.rspBuyChapterGift, BIReport.ITEM_GET_TYPE.SHOP_CHAPTER)
|
|
end
|
|
|
|
function ShopManager:rspBuyChapterGift(result)
|
|
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
|
|
return
|
|
end
|
|
|
|
GFunc.showRewardBox(result.rewards)
|
|
DataManager.ShopData:onBuyChapterGiftSuccess(result.reqData.id)
|
|
end
|
|
|
|
-- 魂芯商店
|
|
function ShopManager:reqBuyCoreSoulBox(id, free, times)
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.SoulSummonReq, {id = id, free = free, times = times}, self.rspBuyCoreSoulBox, BIReport.ITEM_GET_TYPE.SHOP_CORE_SOUL)
|
|
end
|
|
|
|
function ShopManager:rspBuyCoreSoulBox(result)
|
|
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
|
|
return
|
|
end
|
|
|
|
DataManager.ShopData:onBuyCoreSoulBoxSuccess(result.reqData.id, result.reqData.free, result.reqData.times, result.trigger_count)
|
|
local rewards = {}
|
|
for _, reward in ipairs(result.rewards) do
|
|
if reward.type == GConst.REWARD_TYPE.SOUL then
|
|
table.insert(rewards, reward)
|
|
end
|
|
end
|
|
table.sort(rewards, function(a, b)
|
|
return a.soul.uid < b.soul.uid
|
|
end)
|
|
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.CLOSE_BOX_REWARD_UI)
|
|
local goldKeyCost = 0
|
|
if result.reqData.id == GConst.ShopConst.CORE_SOUL_TYPE.ELITE then
|
|
if result.costs then
|
|
for _, cost in ipairs(result.costs) do
|
|
if cost.item and cost.item.id == GConst.ItemConst.GOLD_KEY then
|
|
goldKeyCost = cost.item.count
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.OPEN_CORE_SOUL_BOX, result.reqData, goldKeyCost)
|
|
if result.reqData.id then
|
|
local uiObj = self:showBoxOpenUI({type = GConst.BOX_REWARD_TYPE.SUMMON, openType = result.reqData.id, count = result.reqData.times, rewards = rewards})
|
|
uiObj:addEnterAniCompleteListener(function()
|
|
DataManager.ShopData:setDirty()
|
|
end)
|
|
end
|
|
-- bi
|
|
if result.reqData.id == GConst.ShopConst.CORE_SOUL_TYPE.NORMAL then
|
|
BIReport:postBoxReward(BIReport.BOX_TYPE.NORMAL_BOX, result.rewards, nil, result.reqData.free, result.reqData.times)
|
|
elseif result.reqData.id == GConst.ShopConst.CORE_SOUL_TYPE.ELITE then
|
|
BIReport:postBoxReward(BIReport.BOX_TYPE.EPIC_BOX, result.rewards, nil, result.reqData.free, result.reqData.times)
|
|
end
|
|
end
|
|
|
|
-- 每日商店
|
|
function ShopManager:reqBuyDailyGift(id)
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.MallDailyBuyReq, {id = id}, self.rspBuyDailyGift, BIReport.ITEM_GET_TYPE.SHOP_DAILY)
|
|
end
|
|
|
|
function ShopManager:rspBuyDailyGift(result)
|
|
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
|
|
return
|
|
end
|
|
|
|
GFunc.showRewardBox(result.rewards)
|
|
DataManager.ShopData:refreshDailyShop(result.store)
|
|
end
|
|
|
|
-- 每日商店刷新
|
|
function ShopManager:reqRefreshDailyGift(isAd)
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.MallDailyRefreshReq, {Ad = isAd}, self.rspRefreshDailyGift, BIReport.ITEM_GET_TYPE.SHOP_DAILY_REFRESH)
|
|
end
|
|
|
|
function ShopManager:rspRefreshDailyGift(result)
|
|
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
|
|
return
|
|
end
|
|
|
|
DataManager.ShopData:refreshDailyShop(result.store)
|
|
end
|
|
|
|
function ShopManager:reqBuyEmblemGift(id)
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.MallMythicBuyReq, {id = id}, self.rspBuyEmblemGift, BIReport.ITEM_GET_TYPE.SHOP_EMBLEM)
|
|
end
|
|
|
|
function ShopManager:rspBuyEmblemGift(result)
|
|
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
|
|
return
|
|
end
|
|
|
|
GFunc.showRewardBox(result.rewards)
|
|
DataManager.ShopData:onBuyEmblemGiftSuccess(result.reqData.id)
|
|
end
|
|
|
|
-- 金币商店
|
|
function ShopManager:reqBuyGoldGift(id)
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.MallGoldBuyReq, {id = id}, self.rspBuyGoldGift, BIReport.ITEM_GET_TYPE.SHOP_GOLD)
|
|
end
|
|
|
|
function ShopManager:rspBuyGoldGift(result)
|
|
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
|
|
return
|
|
end
|
|
|
|
GFunc.showRewardBox(result.rewards)
|
|
DataManager.ShopData:onBuyGoldGiftSuccess(result.reqData.id)
|
|
end
|
|
|
|
-- 钻石商店
|
|
function ShopManager:onBuyGemGift(id, doubleType)
|
|
PayManager:purchasePackage(id, PayManager.PURCHARSE_TYPE.SHOP_GEM, nil, doubleType)
|
|
end
|
|
|
|
-- 首冲礼包购买
|
|
function ShopManager:onBuyFirstRecharge(gear, day)
|
|
PayManager:purchasePackage(DataManager.ShopData:getFirstRechargeGiftId(gear, day), PayManager.PURCHARSE_TYPE.ACT_GIFT, true)
|
|
end
|
|
|
|
-- 购买体力
|
|
function ShopManager:reqBuyVit(buyType)
|
|
if buyType == GConst.VIT_BUY_TYPE.AD then
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.EnergyByADReq, {}, self.rspBuyVit, BIReport.ITEM_GET_TYPE.BUY_VIT)
|
|
else
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.EnergyByDiamondReq, {}, self.rspBuyVit, BIReport.ITEM_GET_TYPE.BUY_VIT)
|
|
end
|
|
end
|
|
|
|
function ShopManager:rspBuyVit(result)
|
|
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
|
|
return
|
|
end
|
|
|
|
GFunc.showRewardBox(result.rewards)
|
|
DataManager.ShopData:onVitBuySuccess(result.energy_limit)
|
|
-- 累计购买体力X次
|
|
ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.BUY_VIT_NUM)
|
|
end
|
|
|
|
function ShopManager:checkWebPurchaseGift()
|
|
if DataManager.TutorialData:getIsInTutorial() then
|
|
return false
|
|
end
|
|
if DataManager.ShopData:getNeedShowGiftReceiveUI() then
|
|
ModuleManager.ShopManager:showThirdGiftPopUI()
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
--@region 领取三方支付礼包
|
|
function ShopManager:receiveWebPurchaseGiftRewards()
|
|
local orders = DataManager.ShopData:getThirdPayGiftOrders()
|
|
local orderIds = {}
|
|
for k, v in ipairs(orders) do
|
|
table.insert(orderIds, v.order_id)
|
|
end
|
|
local parmas = {
|
|
order_ids = orderIds
|
|
}
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.ThirdPayGiftReq, parmas, self.onReceiveWebPurchaseGiftRewards, BIReport.ITEM_GET_TYPE.WEB_PAY_GIFT)
|
|
end
|
|
|
|
function ShopManager:onReceiveWebPurchaseGiftRewards(result)
|
|
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
|
|
return
|
|
end
|
|
|
|
if result.rewards then
|
|
GFunc.showRewardBox(result.rewards)
|
|
end
|
|
local isJollyMax = false
|
|
for k, v in ipairs(result.reqData.order_ids) do
|
|
local orderInfo = DataManager.ShopData:getThirdPayGiftOrderInfo(v)
|
|
if orderInfo then
|
|
local cfg
|
|
local rewards
|
|
local giftId = orderInfo.gift_id
|
|
if orderInfo.gift_type == PayManager.PURCHARSE_TYPE.ACT_GIFT then
|
|
cfg = ConfigManager:getConfig("act_gift")[giftId]
|
|
rewards = cfg.reward
|
|
elseif orderInfo.gift_type == PayManager.PURCHARSE_TYPE.GIFT_ROUTINE then
|
|
cfg = ConfigManager:getConfig("gift_routine")[giftId]
|
|
rewards = cfg.reward
|
|
elseif orderInfo.gift_type == PayManager.PURCHARSE_TYPE.SHOP_GEM then
|
|
cfg = ConfigManager:getConfig("mall_treasure")[giftId]
|
|
rewards = {}
|
|
if cfg.reward then
|
|
for i,v in ipairs(cfg.reward) do
|
|
table.insert(rewards, v)
|
|
end
|
|
if DataManager.PaymentData:isGemStoreDouble(giftId) then
|
|
for i,v in ipairs(cfg.reward) do
|
|
table.insert(rewards, v)
|
|
end
|
|
end
|
|
end
|
|
elseif orderInfo.gift_type == PayManager.PURCHARSE_TYPE.GIFT_JOLLYMAX then
|
|
cfg = ConfigManager:getConfig("gift_jollymax")[giftId]
|
|
rewards = cfg.reward
|
|
isJollyMax = true
|
|
end
|
|
if isJollyMax or VersionCompatible:getIsRUPackage() then
|
|
-- local rCfg = ConfigManager:getConfig("recharge")[cfg.recharge_id]
|
|
-- local productId = rCfg[VersionCompatible:getRechargePayId()]
|
|
local productId = cfg.goods_id
|
|
BIReport:postReceiveThirdPayJollyMaxGiftRewards(orderInfo.order_id, productId, orderInfo.gift_id, orderInfo.revenue, rewards, cfg.price)
|
|
BIReport:postJollyMaxPurchase(orderInfo.revenue, productId, orderInfo.order_id)
|
|
else
|
|
local rCfg = ConfigManager:getConfig("recharge")[cfg.recharge_id]
|
|
local productId = rCfg[VersionCompatible:getRechargePayId()]
|
|
BIReport:postReceiveThirdPayGiftRewars(orderInfo.order_id, productId, orderInfo.gift_id, orderInfo.revenue, rewards, rCfg.price)
|
|
BIReport:postVTCPurchase(orderInfo.revenue, productId, orderInfo.order_id)
|
|
end
|
|
end
|
|
end
|
|
-- 购买礼包后续处理
|
|
if isJollyMax or VersionCompatible:getIsRUPackage() then
|
|
PayManager:requestThirdJollyMaxGiftRewards(result.gifts or {})
|
|
else
|
|
PayManager:requestThirdGiftRewards(result.gifts or {})
|
|
end
|
|
DataManager.ShopData:deleteThirdPayGiftOrders(result.reqData.order_ids)
|
|
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.RECEIVE_WEB_PURCHASE_REWARDS_SUCCESS)
|
|
end
|
|
--@endregion
|
|
|
|
function ShopManager:checkWebPurchase()
|
|
if DataManager.TutorialData:getIsInTutorial() then
|
|
return false
|
|
end
|
|
if DataManager.ShopData:getNeedShowVoucherReceiveUI() then
|
|
self:showVoucherReceiveUI()
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function ShopManager:receiveWebPurchaseRewards()
|
|
local orders = DataManager.ShopData:getThirdPayOrders()
|
|
local orderIds = {}
|
|
for k, v in ipairs(orders) do
|
|
table.insert(orderIds, v.order_id)
|
|
end
|
|
local parmas = {
|
|
order_ids = orderIds
|
|
}
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.ThirdPayClaimReq, parmas, self.onReceiveWebPurchaseRewards, BIReport.ITEM_GET_TYPE.WEB_PAY)
|
|
end
|
|
|
|
function ShopManager:onReceiveWebPurchaseRewards(result)
|
|
if result.err_code ~= GConst.ERROR_STR.SUCCESS then
|
|
return
|
|
end
|
|
|
|
GFunc.showRewardBox(result.rewards)
|
|
for k, v in ipairs(result.reqData.order_ids) do
|
|
local orderInfo = DataManager.ShopData:getThirdPayOrderInfo(v)
|
|
if orderInfo then
|
|
BIReport:postReceiveThirdPayRewars(orderInfo.order_id, orderInfo.voucher, orderInfo.product_id, orderInfo.revenue, orderInfo.price)
|
|
BIReport:postWebPurchase(orderInfo.revenue, orderInfo.product_id, orderInfo.order_id)
|
|
end
|
|
end
|
|
DataManager.ShopData:deleteThirdPayOrders(result.reqData.order_ids)
|
|
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.RECEIVE_WEB_PURCHASE_REWARDS_SUCCESS)
|
|
end
|
|
|
|
return ShopManager |