TopupLogic.lua 4.5 KB

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