TopupLogic.lua 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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. local amountCond = 1000
  72. if price < amountCond then return end -- 如果充值金额小于100,不发送邮件
  73. -- 计算烟花数量
  74. local nFireWorksCount = math.floor(price / amountCond)
  75. if 0 >= nFireWorksCount then
  76. return
  77. end
  78. local mailCfg = MailExcel.mail[YANHUA_EMAIL]
  79. local title = mailCfg.title
  80. local content = mailCfg.content
  81. local senderName = mailCfg.senderName
  82. local items = {
  83. {ITEMID,nFireWorksCount} -- 1022是烟花的道具ID
  84. }
  85. -- 调用邮件管理器发送邮件
  86. MailManager.add(MailManager.SYSTEM, human.db._id, title, content, items, senderName)
  87. end
  88. function checkKf(human)
  89. -- 激活专属客服
  90. if human.db.topupAcount ~= nil and human.db.topupAcount >= EXCLUSIVE_SERVER_9937 then
  91. Msg.send(Msg.gc.GC_EXCLUSIVE_SERVER,human.fd)
  92. end
  93. end
  94. --给客户端下发结束时间//定义的协议时间 //当客户端有点击请求的时候
  95. function DurationofBonus(human)
  96. local tMsgData = Msg.gc.GC_FIREWORKS_QUERY
  97. local nowBufferDuration = CommonDB.getFireWorksBonusTime()-os.time()
  98. tMsgData.buffDuration = math.max(0,nowBufferDuration)
  99. Msg.send(tMsgData, human.fd)
  100. end
  101. function Addtime(human, fireworksCount)
  102. local nNowTime = os.time()
  103. if not human or fireworksCount <= 0 then
  104. return
  105. end
  106. local currentEndTime = CommonDB.getFireWorksBonusTime()
  107. local baseTime = nNowTime
  108. if currentEndTime > nNowTime then
  109. baseTime = currentEndTime
  110. end
  111. local addedTime = math.max(fireworksCount * 60,60)
  112. local newEndTime = math.min(
  113. baseTime + addedTime,
  114. nNowTime + MAX_FIREWORKS_DURATION
  115. )
  116. local totalDuration = newEndTime-nNowTime
  117. if totalDuration <=0 or totalDuration> MAX_FIREWORKS_DURATION then
  118. return
  119. end
  120. CommonDB.setFireWorkBonusTime(newEndTime)
  121. local tMsgData = Msg.gc.GC_FIREWORKS_SHOW
  122. local nowBuffDuration = CommonDB.getFireWorksBonusTime()-os.time()
  123. tMsgData.buffDuration = math.max(0,nowBuffDuration)
  124. tMsgData.playerName = human.db.name
  125. -- 下发时间和玩家名称
  126. for _, human in pairs(ObjHuman.onlineUuid) do
  127. if human and human.fd then
  128. Msg.send(tMsgData, human.fd)
  129. end
  130. end
  131. end