TopupLogic.lua 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. -------------------------------------------------
  2. -- 充值
  3. -------------------------------------------------
  4. local BuyExcel = require("excel.buy")
  5. local Msg = require("core.Msg")
  6. local ObjHuman = require("core.ObjHuman")
  7. local BuyLogic = require("topup.BuyLogic")
  8. local SceneHandler = require("scene.Handler")
  9. local YunYingLogic = require("yunying.YunYingLogic")
  10. local LeichongHaoli = require("present.LeichongHaoli")
  11. local LeijiChongzhi = require("present.LeijiChongzhi")
  12. local DailyLeichong = require("present.DailyLeichong")
  13. local LoginSignLogic = require("loginSign.LoginSignLogic")
  14. local RoleSystemLogic = require("roleSystem.RoleSystemLogic")
  15. local RoleSystemDefine = require("roleSystem.RoleSystemDefine")
  16. local MailExcel = require("excel.mail")
  17. local MailManager = require("mail.MailManager")
  18. local CommonDB = require("common.CommonDB")
  19. local BreakThroughTheme = require("battle.BreakThroughTheme")
  20. -- 专属客服充值额度
  21. EXCLUSIVE_SERVER_9937 = 1000
  22. TOPUP_LIBAO_ID1 = 1 --盲盒礼包
  23. TOPUP_LIBAO_ID2 = 2 --铂金周卡
  24. TOPUP_LIBAO_ID3 = 3 --365王卡
  25. local MAX_FIREWORKS_DURATION = 43200
  26. local YANHUA_EMAIL = 7012 --烟花邮箱
  27. local ITEMID=1022 --烟花道具ID
  28. --封装直购基本信息
  29. local function wrapTopupItem(net, config, human)
  30. net.id = config.id
  31. BuyLogic.fontBuyItem(human, net.buyItem, config.buyID)
  32. end
  33. -- 充值列表
  34. function query(human)
  35. if SceneHandler.canCharge(human) ~= true then
  36. return
  37. end
  38. local msgRet = Msg.gc.GC_TOPUP_QUERY
  39. msgRet.list[0] = #BuyExcel.topup
  40. for i, config in ipairs(BuyExcel.topup) do
  41. local net = msgRet.list[i]
  42. wrapTopupItem(net, config, human)
  43. end
  44. Msg.send(msgRet,human.fd)
  45. end
  46. -- 直购回调
  47. function clacTopupAcount(human, price, buyID, buyNum)
  48. if price < 0 then return end
  49. if not buyNum then
  50. buyNum = 1
  51. end
  52. ObjHuman.updateDaily(human)
  53. local nAllPrice = price * buyNum
  54. human.db.topupAcountDaily = (human.db.topupAcountDaily or 0) + nAllPrice
  55. human.db.topupAccountMonth = (human.db.topupAccountMonth or 0) + nAllPrice
  56. human.db.topupAcount = (human.db.topupAcount or 0) + nAllPrice
  57. checkKf(human)
  58. YunYingLogic.onCharge(human, nAllPrice, buyID, buyNum)
  59. DailyLeichong.charge(human, nAllPrice)
  60. LeichongHaoli.onAddMoney(human, nAllPrice)
  61. LeijiChongzhi.onAddMoney(human, nAllPrice)
  62. LoginSignLogic.chargeAfter(human)
  63. BreakThroughTheme.charge(human, nAllPrice, buyID)
  64. sendFireworksMail(human,nAllPrice)
  65. end
  66. -- 发送烟花邮件
  67. function sendFireworksMail(human, price)
  68. if price < 100 then return end -- 如果充值金额小于100,不发送邮件
  69. -- 计算烟花数量
  70. local nFireWorksCount = math.floor(price / 100)
  71. if 0 >= nFireWorksCount then
  72. return
  73. end
  74. local mailCfg = MailExcel.mail[YANHUA_EMAIL]
  75. local title = mailCfg.title
  76. local content = mailCfg.content
  77. local senderName = mailCfg.senderName
  78. local items = {
  79. {ITEMID,nFireWorksCount} -- 1022是烟花的道具ID
  80. }
  81. -- 调用邮件管理器发送邮件
  82. MailManager.add(MailManager.SYSTEM, human.db._id, title, content, items, senderName)
  83. end
  84. function checkKf(human)
  85. -- 激活专属客服
  86. if human.db.topupAcount ~= nil and human.db.topupAcount >= EXCLUSIVE_SERVER_9937 then
  87. Msg.send(Msg.gc.GC_EXCLUSIVE_SERVER,human.fd)
  88. end
  89. end
  90. --给客户端下发结束时间//定义的协议时间 //当客户端有点击请求的时候
  91. function DurationofBonus(human)
  92. local tMsgData = Msg.gc.GC_FIREWORKS_QUERY
  93. local nowBufferDuration = CommonDB.getFireWorksBonusTime()-os.time()
  94. tMsgData.buffDuration = math.max(0,nowBufferDuration)
  95. Msg.send(tMsgData, human.fd)
  96. end
  97. function Addtime(human, fireworksCount)
  98. local nNowTime = os.time()
  99. if not human or fireworksCount <= 0 then
  100. return
  101. end
  102. local currentEndTime = CommonDB.getFireWorksBonusTime()
  103. local baseTime = nNowTime
  104. if currentEndTime > nNowTime then
  105. baseTime = currentEndTime
  106. end
  107. local addedTime = math.max(fireworksCount * 60,60)
  108. local newEndTime = math.min(
  109. baseTime + addedTime,
  110. nNowTime + MAX_FIREWORKS_DURATION
  111. )
  112. local totalDuration = newEndTime-nNowTime
  113. if totalDuration <=0 or totalDuration> MAX_FIREWORKS_DURATION then
  114. return
  115. end
  116. CommonDB.setFireWorkBonusTime(newEndTime)
  117. local tMsgData = Msg.gc.GC_FIREWORKS_SHOW
  118. local nowBuffDuration = CommonDB.getFireWorksBonusTime()-os.time()
  119. tMsgData.buffDuration = math.max(0,nowBuffDuration)
  120. tMsgData.playerName = human.db.name
  121. -- 下发时间和玩家名称
  122. for _, human in pairs(ObjHuman.onlineUuid) do
  123. if human and human.fd then
  124. Msg.send(tMsgData, human.fd)
  125. end
  126. end
  127. end