| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- local RuneShopGoodsData = class('RuneShopGoodsData')
- function RuneShopGoodsData:ctor()
- self.id = 0
- self.isFirstBuy = false
- self.isLimitBuy = false
- self.remainNum = -1
- self.price = 0
- self.endTime = 0
- self.cfgData = nil
- end
- function RuneShopGoodsData:Dispose()
- self.id = nil
- self.remainNum = nil
- self.endTime = nil
- self.cfgData = nil
- end
- function RuneShopGoodsData:SetData(data, cfgData)
- self:RefreshData(data)
- self.cfgData = cfgData
- end
- function RuneShopGoodsData:RefreshData(data)
- self.id = data.goods_id or 0
- self.isFirstBuy = data.first_buy or false
- self.isLimitBuy = data.buy_limit or false
- self.remainNum = data.buy_nums
- self.price = CommonUtil.GetValidPayPrice(data.price or 0)
- self.endTime = data.end_time
- end
- function RuneShopGoodsData:IsFirstBuy()
- return self.isFirstBuy
- end
- function RuneShopGoodsData:IsCanBuy()
- if not self.isLimitBuy then
- return true
- end
- if self:GetRemainBuyNumInternal() <= 0 then
- return false
- end
- return true
- end
- function RuneShopGoodsData:IsValidTime()
- if self.isLimitBuy then
- if self.endTime and self.endTime > 0 then
- return self.endTime < self:GetCurTime()
- end
- end
- return true
- end
- function RuneShopGoodsData:HasResidueTime()
- if self.endTime and self.endTime > 0 then
- return self.endTime < self:GetCurTime()
- end
- return true
- end
- function RuneShopGoodsData:IsSoldout()
- if self.isLimitBuy then
- return self.remainNum <= 0
- else
- return false
- end
- end
- function RuneShopGoodsData:GetRemainBuyNumInternal()
- return self.remainNum
- end
- --- 返回剩余可购买次数
- ---@return integer -1时为无限次
- function RuneShopGoodsData:GetRemainBuyNum()
- if not self.isLimitBuy then
- return -1
- end
- local remainNum = self:GetRemainBuyNumInternal()
- if remainNum <= 0 then
- return 0
- end
- return remainNum
- end
- function RuneShopGoodsData:GetPrice()
- return self.price
- end
- function RuneShopGoodsData:GetShowInfo()
- if self.endTime and self.endTime > 0 then
- if self.endTime < self:GetCurTime() then
- return false, nil, nil
- else
- return true, self.endTime, self.endTime
- end
- end
- return true, nil, nil
- end
- function RuneShopGoodsData:GetId()
- return self.id
- end
- function RuneShopGoodsData:GetSortId()
- return self.cfgData.SortId or self.cfgData.Id
- end
- function RuneShopGoodsData:GetCfgData()
- return self.cfgData
- end
- function RuneShopGoodsData:HasEndTime()
- return (self.endTime and self.endTime > 0)
- end
- function RuneShopGoodsData:IsFree()
- if self.price and self.price > 0 then
- return false
- end
- return true
- end
- function RuneShopGoodsData:CalculateLimitTime()
- if self.endTime and self.endTime > 0 then
- local remainTime = ManagerContainer.LuaTimerMgr:GetRemainSecondsWithUInt64(self.endTime)
- local timerStr, outTime = CommonUtil.FormatTimeDMS(remainTime)
- return timerStr, outTime, remainTime
- end
- return nil, true, nil
- end
- function RuneShopGoodsData:GetCurTime()
- return ManagerContainer.LuaTimerMgr:CurLuaServerTime()
- end
- return RuneShopGoodsData
|