local NewYear_Model = {} local private = {} local EventSystem = require 'Event/EventSystem' local activity_new_year_opt_pb = require 'Proto.activity_new_year_opt_pb' function NewYear_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageActivityNewYearLoginReward, private.NewYearLoginRewardResp) NetManager.RegisterMsgCB(MessageEnums.MessageActivityNewYearLuckyBagReward, private.NewYearLuckyBagRewardResp) NetManager.RegisterMsgCB(MessageEnums.MessageActivityNewYearGetMyExchangeInfo, private.NewYearGetMyExchangeInfoResp) NetManager.RegisterMsgCB(MessageEnums.MessageActivityNewYearUploadExchange, private.NewYearUploadExchangeResp) NetManager.RegisterMsgCB(MessageEnums.MessageActivityNewYearCancelExchange, private.NewYearCancelExchangeResp) NetManager.RegisterMsgCB(MessageEnums.MessageActivityNewYearGetOtherExchangeInfo, private.NewYearGetOtherExchangeInfoResp) NetManager.RegisterMsgCB(MessageEnums.MessageActivityNewYearExchange, private.NewYearExchangeResp) NetManager.RegisterMsgCB(MessageEnums.MessageG2CPushActivityNewYearExchangeNum, private.NewYearExchangeNumPush) private.exchangeNum = {} private.loginReward = {} private.prayPoolInfo = {} end function NewYear_Model.SetInfo(info) for i, v in ipairs(info) do local activityId = v.activityId private.SetExchangeNum(activityId, v.exchangeNum) private.SetLoginReward(activityId, v.unclaimedReward) private.SetPrayPoolInfo(activityId, v.poolInfo) CTL.NewYear.SetEndTimer(activityId) end end function NewYear_Model.GetExchangeNum(activityId) return private.exchangeNum[activityId] end function NewYear_Model.GetLoginReward(activityId, day) if day then if private.loginReward[activityId] then return private.loginReward[activityId][day] end else return private.loginReward[activityId] end end function NewYear_Model.GetPrayPoolInfo(activityId, rewardId) if rewardId then if private.prayPoolInfo[activityId] then return private.prayPoolInfo[activityId][rewardId] or 0 else return 0 end else return private.prayPoolInfo[activityId] end end function private.SetExchangeNum(activityId, exchangeNum) private.exchangeNum[activityId] = exchangeNum EventSystem.Dispatch(EventID.UI_NewYear_ExchangeNumRefresh, activityId) end ---@param rewardInfo 1-已领取 0-未领取 不可领取不在列表中 function private.SetLoginReward(activityId, rewardInfo) if not private.loginReward[activityId] then private.loginReward[activityId] = {} end for i, v in ipairs(rewardInfo) do private.loginReward[activityId][i] = v end EventSystem.Dispatch(EventID.UI_NewYear_LoginRewardRefresh, activityId) end function private.SetPrayPoolInfo(activityId, poolInfo) if not private.prayPoolInfo[activityId] then private.prayPoolInfo[activityId] = {} end local ifHasRewardLeft = false for i, v in ipairs(poolInfo) do private.prayPoolInfo[activityId][v.rewardId] = v.num if MDL.OperationActivity.NewYearLuckyBag:GetDataByActivityID_ID(activityId, v.rewardId).TotalNum > v.num then ifHasRewardLeft = true end end if not ifHasRewardLeft then --派发一个事件为了触发刷新红点的方法 EventSystem.Dispatch(EventID.UI_NewYear_LoginRewardRefresh, activityId) end end -- 领取登录奖励Req function NewYear_Model.NewYearLoginRewardReq(activityId, rewardId) local msg = activity_new_year_opt_pb.ActivityNewYearLoginRewardReq() msg.activityId = activityId msg.rewardId = rewardId NetManager.SendMessage(MessageEnums.MessageActivityNewYearLoginReward, msg) end function private.NewYearLoginRewardResp(msgResp) if msgResp.Resp.Code == 0 then local info = msgResp.info local activityId = info.activityId private.SetExchangeNum(activityId, info.exchangeNum) private.SetLoginReward(activityId, info.unclaimedReward) private.SetPrayPoolInfo(activityId, info.poolInfo) end end -- 兑换福袋奖励Req function NewYear_Model.NewYearLuckyBagRewardReq(activityId) local msg = activity_new_year_opt_pb.ActivityNewYearLuckyBagRewardReq() msg.activityId = activityId NetManager.SendMessage(MessageEnums.MessageActivityNewYearLuckyBagReward, msg) end function private.NewYearLuckyBagRewardResp(msgResp) if msgResp.Resp.Code == 0 then private.SetPrayPoolInfo(msgResp.activityId, msgResp.poolInfo) end end -- 获取我的上报交换信息Req function NewYear_Model.NewYearGetMyExchangeInfoReq(activityId) local msg = activity_new_year_opt_pb.ActivityNewYearGetMyExchangeInfoReq() msg.activityId = activityId NetManager.SendMessage(MessageEnums.MessageActivityNewYearGetMyExchangeInfo, msg) end function private.NewYearGetMyExchangeInfoResp(msgResp) if msgResp.Resp.Code == 0 then EventSystem.Dispatch(EventID.UI_NewYear_MyExchangeInfoRefresh, msgResp.activityId, msgResp.info) end end -- 上报福袋交换信息Req function NewYear_Model.NewYearUploadExchangeReq(activityId, itemId, targetItemId) local msg = activity_new_year_opt_pb.ActivityNewYearUploadExchangeReq() msg.activityId = activityId msg.itemId = itemId msg.targetItemId = targetItemId NetManager.SendMessage(MessageEnums.MessageActivityNewYearUploadExchange, msg) end function private.NewYearUploadExchangeResp(msgResp) if msgResp.Resp.Code == 0 then CTL.Tips.AddTipsMsg(Const_IDS.IDS_NewYearActivity_LuckyBagExchangeChildHint_19) EventSystem.Dispatch(EventID.UI_NewYear_ExchangeInitSuccess) end end -- 取消福袋交换信息Req function NewYear_Model.NewYearCancelExchangeReq(activityId, uniqueId) local msg = activity_new_year_opt_pb.ActivityNewYearCancelExchangeReq() msg.activityId = activityId msg.uniqueId = uniqueId NetManager.SendMessage(MessageEnums.MessageActivityNewYearCancelExchange, msg) end function private.NewYearCancelExchangeResp(msgResp) if msgResp.Resp.Code == 0 then --result 结果 成功-success 失败-相关IDS if msgResp.result ~= "success" then CTL.Tips.AddTipsMsg(Const_IDS[msgResp.result]) else CTL.Tips.AddTipsMsg(Const_IDS.IDS_NewYearActivity_LuckyBagExchangeChildHint_12) end EventSystem.Dispatch(EventID.UI_NewYear_MyExchangeInfoRefresh, msgResp.activityId, msgResp.info) end end -- 获取其他人上报交换信息Req ---@param type 请求类型 true-好友 false-公会 function NewYear_Model.NewYearGetOtherExchangeInfoReq(activityId, type) local msg = activity_new_year_opt_pb.ActivityNewYearGetOtherExchangeInfoReq() msg.activityId = activityId msg.type = type NetManager.SendMessage(MessageEnums.MessageActivityNewYearGetOtherExchangeInfo, msg) end function private.NewYearGetOtherExchangeInfoResp(msgResp) if msgResp.Resp.Code == 0 then EventSystem.Dispatch(EventID.UI_NewYear_OthersExchangeInfoRefresh, msgResp.activityId, msgResp.type, msgResp.info) end end -- 福袋交换Req function NewYear_Model.NewYearExchangeReq(activityId, acid, uniqueId, type) local msg = activity_new_year_opt_pb.ActivityNewYearExchangeReq() msg.activityId = activityId msg.targetAcid = acid msg.uniqueId = uniqueId msg.type = type NetManager.SendMessage(MessageEnums.MessageActivityNewYearExchange, msg) end function private.NewYearExchangeResp(msgResp) if msgResp.Resp.Code == 0 then --result 结果 成功-success 失败-相关IDS if msgResp.result ~= "success" then CTL.Tips.AddTipsMsg(Const_IDS[msgResp.result]) return end private.SetExchangeNum(msgResp.activityId, msgResp.exchangeNum) EventSystem.Dispatch(EventID.UI_NewYear_OthersExchangeInfoRefresh, msgResp.activityId, msgResp.type, msgResp.info) EventSystem.Dispatch(EventID.UI_NewYear_ExchangeExchangeSuccess) end end function private.NewYearExchangeNumPush(msgResp) private.SetExchangeNum(msgResp.activityId, msgResp.exchangeNum) end return NewYear_Model