RuneShopGoodsData.lua 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. local RuneShopGoodsData = class('RuneShopGoodsData')
  2. function RuneShopGoodsData:ctor()
  3. self.id = 0
  4. self.isFirstBuy = false
  5. self.isLimitBuy = false
  6. self.remainNum = -1
  7. self.price = 0
  8. self.endTime = 0
  9. self.cfgData = nil
  10. end
  11. function RuneShopGoodsData:Dispose()
  12. self.id = nil
  13. self.remainNum = nil
  14. self.endTime = nil
  15. self.cfgData = nil
  16. end
  17. function RuneShopGoodsData:SetData(data, cfgData)
  18. self:RefreshData(data)
  19. self.cfgData = cfgData
  20. end
  21. function RuneShopGoodsData:RefreshData(data)
  22. self.id = data.goods_id or 0
  23. self.isFirstBuy = data.first_buy or false
  24. self.isLimitBuy = data.buy_limit or false
  25. self.remainNum = data.buy_nums
  26. self.price = CommonUtil.GetValidPayPrice(data.price or 0)
  27. self.endTime = data.end_time
  28. end
  29. function RuneShopGoodsData:IsFirstBuy()
  30. return self.isFirstBuy
  31. end
  32. function RuneShopGoodsData:IsCanBuy()
  33. if not self.isLimitBuy then
  34. return true
  35. end
  36. if self:GetRemainBuyNumInternal() <= 0 then
  37. return false
  38. end
  39. return true
  40. end
  41. function RuneShopGoodsData:IsValidTime()
  42. if self.isLimitBuy then
  43. if self.endTime and self.endTime > 0 then
  44. return self.endTime < self:GetCurTime()
  45. end
  46. end
  47. return true
  48. end
  49. function RuneShopGoodsData:HasResidueTime()
  50. if self.endTime and self.endTime > 0 then
  51. return self.endTime < self:GetCurTime()
  52. end
  53. return true
  54. end
  55. function RuneShopGoodsData:IsSoldout()
  56. if self.isLimitBuy then
  57. return self.remainNum <= 0
  58. else
  59. return false
  60. end
  61. end
  62. function RuneShopGoodsData:GetRemainBuyNumInternal()
  63. return self.remainNum
  64. end
  65. --- 返回剩余可购买次数
  66. ---@return integer -1时为无限次
  67. function RuneShopGoodsData:GetRemainBuyNum()
  68. if not self.isLimitBuy then
  69. return -1
  70. end
  71. local remainNum = self:GetRemainBuyNumInternal()
  72. if remainNum <= 0 then
  73. return 0
  74. end
  75. return remainNum
  76. end
  77. function RuneShopGoodsData:GetPrice()
  78. return self.price
  79. end
  80. function RuneShopGoodsData:GetShowInfo()
  81. if self.endTime and self.endTime > 0 then
  82. if self.endTime < self:GetCurTime() then
  83. return false, nil, nil
  84. else
  85. return true, self.endTime, self.endTime
  86. end
  87. end
  88. return true, nil, nil
  89. end
  90. function RuneShopGoodsData:GetId()
  91. return self.id
  92. end
  93. function RuneShopGoodsData:GetSortId()
  94. return self.cfgData.SortId or self.cfgData.Id
  95. end
  96. function RuneShopGoodsData:GetCfgData()
  97. return self.cfgData
  98. end
  99. function RuneShopGoodsData:HasEndTime()
  100. return (self.endTime and self.endTime > 0)
  101. end
  102. function RuneShopGoodsData:IsFree()
  103. if self.price and self.price > 0 then
  104. return false
  105. end
  106. return true
  107. end
  108. function RuneShopGoodsData:CalculateLimitTime()
  109. if self.endTime and self.endTime > 0 then
  110. local remainTime = ManagerContainer.LuaTimerMgr:GetRemainSecondsWithUInt64(self.endTime)
  111. local timerStr, outTime = CommonUtil.FormatTimeDMS(remainTime)
  112. return timerStr, outTime, remainTime
  113. end
  114. return nil, true, nil
  115. end
  116. function RuneShopGoodsData:GetCurTime()
  117. return ManagerContainer.LuaTimerMgr:CurLuaServerTime()
  118. end
  119. return RuneShopGoodsData