local UIBoliShopBuyTipsCtr = class("UIBoliShopBuyTipsCtr", require("UICtrBase")) function UIBoliShopBuyTipsCtr:Init(view) self.view = view end function UIBoliShopBuyTipsCtr:SetData(data) self.asyncIdx = 0 self.data = data self:InitData() end function UIBoliShopBuyTipsCtr:GetAsyncIdx() self.asyncIdx = self.asyncIdx + 1 return self.asyncIdx end function UIBoliShopBuyTipsCtr:GetData() return self.data end function UIBoliShopBuyTipsCtr:OnDispose() self.data = nil self.view = nil self.curShopData = nil self.curGoodsData = nil self.maxBuyNumOnce = nil self.buyNum = nil end function UIBoliShopBuyTipsCtr:InitData() local goodId = self.data self.curShopData = ManagerContainer.DataMgr.BoliShopData:GetBoliShopData() if self.curShopData then self.curGoodsData = self.curShopData:GetGoodsDataById(goodId) else self.curGoodsData = nil end self.maxBuyNumOnce = GlobalConfig.Instance:GetConfigIntValue(120) self:SetBuyNum(1) end function UIBoliShopBuyTipsCtr:GetCurShopData() return self.curShopData end function UIBoliShopBuyTipsCtr:GetCurGoodsData() return self.curGoodsData end function UIBoliShopBuyTipsCtr:GetCurPrice() return self.curGoodsData.curPrice end function UIBoliShopBuyTipsCtr:GetMaxBuyNumOnce() return self.maxBuyNumOnce end function UIBoliShopBuyTipsCtr:GetBuyNum() return self.buyNum end function UIBoliShopBuyTipsCtr:SetBuyNum(buyNum) if not self:IsValidData() then return false end local remainBuyNum = self.curGoodsData:GetRemainBuyNum() if remainBuyNum >= 0 then if buyNum > remainBuyNum then buyNum = remainBuyNum end end local price = self.curGoodsData.curPrice local goodsCfgData = self.curGoodsData:GetGoodsCfgData() local ownCount = self:GetOwnResCountByItemId(goodsCfgData.PayForType) remainBuyNum = Mathf.Floor(ownCount / price) if buyNum > remainBuyNum then buyNum = remainBuyNum end buyNum = Mathf.Clamp(buyNum, 1, self.maxBuyNumOnce) if self.buyNum == buyNum then return false end self.buyNum = buyNum return true end function UIBoliShopBuyTipsCtr:ChangeDeltaBuyNum(deltaBuyNum) local buyNum = self.buyNum + deltaBuyNum return self:SetBuyNum(buyNum) end function UIBoliShopBuyTipsCtr:GetOwnResCountByItemId(itemCfgId) return CommonUtil.GetOwnResCountByItemId(itemCfgId) end function UIBoliShopBuyTipsCtr:IsValidData() return self.curShopData and self.curGoodsData end function UIBoliShopBuyTipsCtr:SendShopBuyItemReq() if not self:IsValidData() then return 390 end local price = self.curGoodsData.curPrice local goodsCfgData = self.curGoodsData:GetGoodsCfgData() local ownCount = self:GetOwnResCountByItemId(goodsCfgData.PayForType) if ownCount < (price * self.buyNum) then return 391, goodsCfgData.PayForType end if not ManagerContainer.DataMgr.BoliShopData:SendBoliShopBuyReq(self.curGoodsData.id, self.buyNum) then return 100007 end return 0 end return UIBoliShopBuyTipsCtr