| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- --------------------------------------------------
- -- 超值基金
- -- db.superFund[type] = {ts, loginDay, sendDay}
- --------------------------------------------------
- local PresentExcel = require("excel.present")
- local MailExcel = require("excel.mail")
- local DB = require("common.DB")
- local Util = require("common.Util")
- local Lang = require("common.Lang")
- local Msg = require("core.Msg")
- local ObjHuman = require("core.ObjHuman")
- local Grid = require("bag.Grid")
- local MailManager = require("mail.MailManager")
- local ItemDefine = require("bag.ItemDefine")
- local BuyLogic = require("topup.BuyLogic")
- local Broadcast = require("broadcast.Broadcast")
- local BagLogic = require("bag.BagLogic")
- local PanelDefine = require("broadcast.PanelDefine")
- local YunYingLogic = require("yunying.YunYingLogic")
- local SceneHandler = require("scene.Handler")
- -- 超值基金类型
- local TYPE_SMALL = 1
- local TYPE_BIG = 2
- -- 状态
- local STATE_CANT_BUY = 0
- local STATE_CAN_BUY = 1
- local STATE_HAD_BUY = 2
- local MAILID_LIST = {61, 60}
- -- 获取状态
- local function getBuyState(human, fundType)
- if human.db.superFund and
- human.db.superFund[fundType] then
- return STATE_HAD_BUY
- end
- if not human.db.bigPrivFlag then
- return STATE_CANT_BUY
- end
- return STATE_CAN_BUY
- end
- -- 获取配置
- local function getConfig(fundType)
- if fundType == TYPE_BIG then
- return PresentExcel.superBigFund
- end
- if fundType == TYPE_SMALL then
- return PresentExcel.superSmallFund
- end
- end
- -- 已发送天数 0-30
- local function getSendDay(human, fundType)
- if not human.db.superFund or
- not human.db.superFund[fundType] then
- return 0
- end
- local fundData = human.db.superFund[fundType]
- return fundData.sendDay
- end
- -- 封装奖励结构体
- local function fontRewardNet(net, day, rcf, sendDay)
- net.day = day
- Grid.makeItem(net.reward, rcf.reward[1][1], rcf.reward[1][2])
- net.isGet = (sendDay >= day) and 1 or 0
- end
- -- 查询
- function superFundQuery(human, fundType)
- local config = getConfig(fundType)
- if not config then return end
- local fdefine = config[1]
- local msgRet = Msg.gc.GC_SUPER_FUND_QUERY
- local net = msgRet.data
- net.type = fundType
- net.canBuy = getBuyState(human, fundType)
- local sendDay = getSendDay(human, fundType)
- net.list[0] = 0
- for i = 1, #config do
- local rcf = config[i]
- if rcf.preview == 1 then
- net.list[0] = net.list[0] + 1
- fontRewardNet(net.list[net.list[0]], i, rcf, sendDay)
- end
- end
- net.vipexp = fdefine.vipexp
- net.zuanshi = fdefine.zuanshi
- BuyLogic.fontBuyItem(human, net.buyItem, fdefine.buyID)
- --Msg.trace(msgRet)
- Msg.send(msgRet, human.fd)
- end
- -- 奖励查看
- function rewardQuery(human, fundType)
- local config = getConfig(fundType)
- if not config then return end
- local msgRet = Msg.gc.GC_SUPER_FUND_REWARD_QUERY
- msgRet.type = fundType
- local sendDay = getSendDay(human, fundType)
- msgRet.reward[0] = #config
- for i = 1, msgRet.reward[0] do
- fontRewardNet(msgRet.reward[i], i, config[i], sendDay)
- end
- --Msg.trace(msgRet)
- Msg.send(msgRet,human.fd)
- end
- -- 购买
- function buySuperFund(human, fundType)
- local config = getConfig(fundType)
- if not config then return end
- local fdefine = config[1]
- local fundData = {}
- fundData.ts = os.time()
- fundData.loginDay = 1
- fundData.sendDay = 0
- human.db.superFund = human.db.superFund or {}
- human.db.superFund[fundType] = fundData
- sendReward(human)
- BagLogic.cleanMomentItemList()
- BagLogic.updateMomentItem(BagLogic.ADDITEM_TYPE_1, ItemDefine.ITEM_ZUANSHI_ID, fdefine.zuanshi)
- BagLogic.addMomentItemList(human, "superFund")
- Broadcast.sendErr(human, Lang.ITEM_BUY_SUCCESS)
- for k, v in pairs(funcID) do
- YunYingLogic.updateIcon(YYInfo[k], human)
- break
- end
- superFundQuery(human, fundType)
- end
- -- 发送奖励
- function sendReward(human)
- if not human.db.superFund then return end
- local delList = nil
- local isChange = nil
- for fundType, fundData in pairs(human.db.superFund) do
- local config = getConfig(fundType)
- local sendDay = fundData.sendDay
- for day = sendDay + 1, fundData.loginDay do
- local rcf = config and config[day]
- if not rcf then break end
- fundData.sendDay = day
- local mailID = MAILID_LIST[fundType]
- local mailConfig = MailExcel.mail[mailID]
- local title = mailConfig.title
- local content = Util.format(mailConfig.content, day)
- local senderName = mailConfig.senderName
- MailManager.add(MailManager.SYSTEM, human.db._id, title, content, rcf.reward, senderName)
- isChange = true
- end
- if not (config and config[fundData.loginDay]) then
- delList = delList or {}
- delList[#delList + 1] = fundType
- end
- end
- if delList then
- for _, fundType in ipairs(delList) do
- human.db.superFund[fundType] = nil
- end
- if not next(human.db.superFund) then
- human.db.superFund = nil
- end
- end
- -- 发完就存DB,保险
- if isChange or delList then
- ObjHuman.save(human)
- end
- end
- -- 登录
- function onLogin(human)
- updateDaily(human)
- sendReward(human)
- end
- -- 0点刷新
- function updateDaily(human)
- if not human.db.superFund then return end
- local isChange = nil
- for fundType, fundData in pairs(human.db.superFund) do
- if not Util.isSameDay(fundData.ts) then
- fundData.ts = os.time()
- fundData.loginDay = fundData.loginDay + 1
- isChange = true
- end
- end
- if isChange then
- sendReward(human)
- end
- end
- function isOpen(human)
- if not SceneHandler.canCharge(human) then
- return
- end
-
- return true
- end
- -- 没购买就红点??
- function isRed(human, YYInfo, funcConfig)
- if funcConfig.panelID == PanelDefine.PANEL_ID_67 then -- 128
- if getBuyState(human, TYPE_SMALL) ~= STATE_HAD_BUY then
- return true
- end
- elseif funcConfig.panelID == PanelDefine.PANEL_ID_68 then --328
- if getBuyState(human, TYPE_BIG) ~= STATE_HAD_BUY then
- return true
- end
- end
- end
|