|
|
- MobilizationModel = MobilizationModel or BaseClass(BaseVo, true)
- local MobilizationModel = MobilizationModel
-
- MobilizationModel.REQUEST_INFO = "MobilizationModel.REQUEST_INFO"
- MobilizationModel.OPEN_MOBILIZATION_VIEW = "MobilizationModel.OPEN_MOBILIZATION_VIEW"--打开主界面
- MobilizationModel.UPDATE_MOBILIZATION_VIEW = "MobilizationModel.UPDATE_MOBILIZATION_VIEW"--更新主界面
- MobilizationModel.REQUEST_INFO = "MobilizationModel.REQUEST_INFO"--请求协议
-
- function MobilizationModel:__init()
- MobilizationModel.Instance = self
- self:Reset()
- end
-
- function MobilizationModel:Reset()
- self.view_info = {}--界面信息
- self.tab_red_dot_info = {}--主页签红点信息
- self.sub_tab_red_dot_info = {}--子页签红点信息
- self.act_day = {}--活动天数
- self:InitCfg()--初始化配置
- end
-
- function MobilizationModel:getInstance()
- if MobilizationModel.Instance == nil then
- MobilizationModel.Instance = MobilizationModel.New()
- end
- return MobilizationModel.Instance
- end
-
-
- --初始化配置
- function MobilizationModel:InitCfg( )
- self.mobilization_task_cfg = {}--每日任务配置
- local mobilization_task_cfg = DeepCopy(Config.Mobilizetask)
- for k,v in pairs(mobilization_task_cfg) do
- local data = v
- if not self.mobilization_task_cfg[v.subtype] then
- self.mobilization_task_cfg[v.subtype] = {}
- end
- if not self.mobilization_task_cfg[v.subtype][v.day] then
- self.mobilization_task_cfg[v.subtype][v.day] = {}
- end
- self.mobilization_task_cfg[v.subtype][v.day][v.task_type] = data
- end
-
- self.mobilization_task_award_cfg = {}--任务奖励配置
- local mobilization_task_award_cfg = DeepCopy(Config.Mobilizetaskaward)
- for k,v in pairs(mobilization_task_award_cfg) do
- local data = v
- data.gain_con = stringtotable(data.gain_con)
- data.desc = Trim(data.desc)
- data.gain_desc = Trim(data.gain_desc)
- data.reward = stringtotable(data.reward)
- data.gain_link = stringtotable(data.gain_link)
-
- if not self.mobilization_task_award_cfg[v.task_type] then
- self.mobilization_task_award_cfg[v.task_type] = {}
- end
- self.mobilization_task_award_cfg[v.task_type][v.task_id] = data
- end
-
- self.mobilization_task_day_cfg = {}--全天奖励配置
- local mobilization_task_day_cfg = DeepCopy(Config.Mobilizetaskday)
- for k,v in pairs(mobilization_task_day_cfg) do
- local data = v
- data.reward = stringtotable(data.reward)
- data.show_model = stringtotable(data.show_model)
- if not self.mobilization_task_day_cfg[v.subtype] then
- self.mobilization_task_day_cfg[v.subtype] = {}
- end
- self.mobilization_task_day_cfg[v.subtype][#self.mobilization_task_day_cfg[v.subtype] + 1] = data
- end
-
- self.mobilization_task_type_cfg = {}--任务类型配置
- local mobilization_task_type_cfg = DeepCopy(Config.Mobilizetasktype)
- for k,v in pairs(mobilization_task_type_cfg) do
- local data = v
- data.task_string = Trim(data.task_string)--任务关键词
- data.desc = Trim(data.desc)--任务描述
- data.link = stringtotable(data.link)--完成跳转
- self.mobilization_task_type_cfg[v.task_type] = data
- end
- end
-
- --获得任务奖励配置
- function MobilizationModel:GetTaskAwardCfg( task_type,award_id )
- if task_type and not award_id then
- return self.mobilization_task_award_cfg[task_type]
- elseif task_type then
- return self.mobilization_task_award_cfg[task_type][award_id]
- end
- end
-
-
- --获得任务类型配置
- function MobilizationModel:GetTaskTypeCfg( task_type )
- return self.mobilization_task_type_cfg[task_type]
- end
-
- --获得每日任务配置
- function MobilizationModel:GetDayTaskCfg( sub_type,day )
- if day and self.mobilization_task_day_cfg[sub_type] then
- local day = self:GetCurActDay(sub_type) or 1
- for i,v in ipairs(self.mobilization_task_day_cfg[sub_type]) do
- if v.day <= day and v.end_day >= day then
- return v
- end
- end
- elseif not day and self.mobilization_task_day_cfg[sub_type] then
- return self.mobilization_task_day_cfg[sub_type]
- end
- end
-
- --获得每天的任务总配置
- function MobilizationModel:GetTaskCfg( sub_type,day )
- if sub_type and day then
- local task_cfg_list = {}
- for i,v in pairs(Config.Mobilizetask) do
- if v.day <= day and v.end_day >= day and sub_type == v.subtype then
- task_cfg_list[#task_cfg_list + 1] = v
- end
- end
- return task_cfg_list
- else
- return self.mobilization_task_cfg[sub_type]
- end
- end
-
- --检查主界面红点
- function MobilizationModel:CheckMainIconRedDot(sub_type)
- local bool = false
- local base_type = CustomActivityModel.CustomActBaseType.MOBILIZATION
- if sub_type then
- local icon_sub_type = base_type*1000 + sub_type
- if sub_type >= 10001 then
- icon_sub_type = base_type*100000 + sub_type
- end
-
- local red_info = self.tab_red_dot_info[sub_type]
- if red_info and TableSize(red_info) > 0 then
- for k,v in pairs(red_info) do
- if v then
- bool = true
- break
- end
- end
- end
- GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, icon_sub_type, bool)
- end
- end
-
-
- --检测全民动员活动图标是否需要开启[兼顾设置全民动员活动内部的活动列表]
- function MobilizationModel:CheckIconBoolOpen(sub_type)
- local base_type = CustomActivityModel.CustomActBaseType.MOBILIZATION
- local sub_type = CustomActivityModel:getInstance():getActMinSubType(base_type)
- local level = RoleManager.Instance.mainRoleInfo.level
- local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type)
- local is_open = false
- local end_time = 0
- local icon_sub_type = base_type*1000 + sub_type
- if sub_type >= 10001 then
- icon_sub_type = base_type*100000 + sub_type
- end
- if act_list and act_list.etime then
- local have_time = TimeUtil:getServerTime( ) - act_list.stime
- if have_time > 0 then
- self.act_day[sub_type] = math.ceil(have_time/24/3600) <= 0 and 1 or math.ceil(have_time/24/3600)
- end
- end_time = act_list.etime - TimeUtil:getServerTime()
- end_time = end_time%(24*3600)
- is_open = end_time > 0
- if GetModuleIsOpen(331,base_type) then
- if is_open then
- local cur_day = self:GetCurActDay(sub_type)
- local end_day = cur_day
- for k,v in pairs(Config.Mobilizetaskday) do
- if v.day <= cur_day and v.end_day >= cur_day then
- end_day = v.end_day
- end
- end
- local str = nil
- local server_info = self:GetServerInfo(sub_type)
- local sec = act_list.stime + end_day*24*3600 - TimeUtil:getServerTime( )
- if server_info and server_info.list then
- local cur_day = self:GetCurActDay(sub_type)
- local cur_day_data = server_info.list[cur_day]
- local task_cfg = self:GetDayTaskCfg(sub_type,cur_day)
- if task_cfg and cur_day_data then
- local cur = HtmlColorTxt(cur_day_data.complete_day_task_num, cur_day_data.complete_day_task_num < task_cfg.need_num and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK)
- str = string.format("进度 %s/%s", cur,task_cfg.need_num)
- if cur_day_data.complete_day_task_num >= task_cfg.need_num then
- str = nil
- sec = -1
- end
- end
- end
- --2021.8.2日鸿杰说双服屏蔽
- str = nil
- sec = -1
- ActivityIconManager:getInstance():addIcon(icon_sub_type, sec, str)
- else
- ActivityIconManager:getInstance():deleteIcon(icon_sub_type)
- end
- else
- -- print("huangcong:MobilizationModel [62]: ",key)
- end
- else
- ActivityIconManager:getInstance():deleteIcon(icon_sub_type)
- end
- end
-
- --设置全民动员信息
- function MobilizationModel:SetMobilizationInfo( scmd )
- self.view_info[scmd.sub_type] = {}
- local list = {}
- local task_list = nil
- local sort_func = function ( a, b )
- return a.id < b.id
- end
- local task_type_complete_list = {}--任务完成列表
- local day_task_num = 0--任务总数量
- local complete_day_task_num = 0--任务完成总数量
- for i,v in ipairs(scmd.list) do
- task_list = {}
- task_type_complete_list = {}
- complete_day_task_num = 0--任务完成总数量
- day_task_num = 0--任务总数量
- for ii,vv in pairs(v.task_list) do
- if not task_list[vv.task_type] then
- task_list[vv.task_type] = {}
- end
- task_list[vv.task_type][vv.id] = vv
- if not task_type_complete_list[vv.task_type] then
- task_type_complete_list[vv.task_type] = 0
- end
- task_type_complete_list[vv.task_type] = task_type_complete_list[vv.task_type] + (vv.state == 2 and 1 or 0)
- day_task_num = day_task_num + 1
- complete_day_task_num = (vv.state == 2 and 1 or 0) + complete_day_task_num
- end
- v.complete_day_task_num = complete_day_task_num
- v.day_task_num = day_task_num
- v.task_list = task_list
- v.task_type_complete_list = task_type_complete_list
- local day = self:GetCurActDay(scmd.sub_type) or 1
- v.day = day
- if v.start_day <= day and v.end_day >= day then
- list[day] = v
- end
- end
- scmd.list = list
- self.view_info[scmd.sub_type] = scmd
- self:CheckGroupBuyingRed(scmd.sub_type)
- end
-
- function MobilizationModel:GetCurDayTaskTypePro( sub_type,day,task_type )
- local cur_pro = 0
- local scmd = self:GetServerInfo(sub_type)
- if scmd and scmd.list and scmd.list[day] and scmd.list[day].task_type_complete_list then
- cur_pro = scmd.list[day].task_type_complete_list[task_type] or 0
- end
- return cur_pro
- end
-
- --检查团购的红点并刷新主界面图标红点
- function MobilizationModel:CheckGroupBuyingRed( sub_type )
- local scmd = self:GetServerInfo(sub_type)
- if not scmd then return end
- self.tab_red_dot_info[scmd.sub_type] = {}--主页签红点信息
- self.sub_tab_red_dot_info[scmd.sub_type] = {}--子页签红点信息
- local sort_id = 0
- -- print("huangcong:MobilizationModel [start:249] scmd.list:", scmd.list)
- -- PrintTable(scmd.list)
- -- print("huangcong:MobilizationModel [end]")
- for i,v in pairs(scmd.list) do
- self.tab_red_dot_info[scmd.sub_type][v.day] = v.total_state == 1
- for ii,vv in pairs(v.task_list) do
- if not self.sub_tab_red_dot_info[scmd.sub_type][v.day] then
- self.sub_tab_red_dot_info[scmd.sub_type][v.day] = {}
- end
- for iii,vvv in pairs(vv) do
- sort_id = nil
- local cfg_list = self:GetTaskCfg(scmd.sub_type,v.day)
- local cfg = nil
- if cfg_list then
- for l,n in pairs(cfg_list) do
- if vvv.task_type == n.task_type then
- cfg = n
- break
- end
- end
- end
- if cfg then
- sort_id = cfg.sort
- if not self.tab_red_dot_info[scmd.sub_type][v.day] then
- self.tab_red_dot_info[scmd.sub_type][v.day] = vvv.state == 1 and vvv.finish_pro == 1
- end
- if not self.sub_tab_red_dot_info[scmd.sub_type][v.day][sort_id] then
- self.sub_tab_red_dot_info[scmd.sub_type][v.day][sort_id] = vvv.state == 1 and vvv.finish_pro == 1
- end
- if self.sub_tab_red_dot_info[scmd.sub_type][v.day][sort_id] and self.tab_red_dot_info[scmd.sub_type][v.day] then
- break
- end
- end
- end
- end
- end
- -- print("huangcong:MobilizationModel [start:243] :", self.sub_tab_red_dot_info)
- -- PrintTable(self.sub_tab_red_dot_info)
- -- print("huangcong:MobilizationModel [end]")
-
- --找到当前天数对应的团购类型
- local base_type = CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING
- local act_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) or {}
- local group_buying_sub_type = nil
- if not self.tab_red_dot_info[sub_type] then
- self.tab_red_dot_info[sub_type] = {}
- end
- if act_list then
- for i,v in pairs(act_list) do
- for ii,vv in ipairs(v.condition_list) do
- if vv[1] == "custom_act" then
- if not self.tab_red_dot_info[sub_type][tonumber(vv[4])] then--这里主页签还是没有红点就要加上团购的红点
- local bool = KfActivityModel:getInstance().act_red_dot_info[base_type]
- and KfActivityModel:getInstance().act_red_dot_info[base_type][v.sub_type] or false
- self.tab_red_dot_info[sub_type][tonumber(vv[4])] = bool
- end
- break
- end
- end
- end
- end
- self:CheckMainIconRedDot(sub_type)
- end
-
- --获得全民动员信息
- function MobilizationModel:GetServerInfo( sub_type )
- return self.view_info[sub_type]
- end
-
- --获得页签信息
- function MobilizationModel:GetTabInfo( )
- return self.act_base_list
- end
-
- --获得活动当前天数
- function MobilizationModel:GetCurActDay( sub_type )
- local base_type = CustomActivityModel.CustomActBaseType.MOBILIZATION
- local sub_type = CustomActivityModel:getInstance():getActMinSubType(base_type)
- local level = RoleManager.Instance.mainRoleInfo.level
- local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type)
- local is_open = false
- local end_time = 0
- if act_list and act_list.etime then
- local have_time = TimeUtil:getServerTime( ) - act_list.stime
- if have_time > 0 then
- self.act_day[sub_type] = math.ceil(have_time/24/3600) <= 0 and 1 or math.ceil(have_time/24/3600)
- end
- end
- return self.act_day[sub_type] or 1
- end
-
- --检测全民动员活动是否开启
- function MobilizationModel:CheckActOpen(sub_type)
- local base_type = CustomActivityModel.CustomActBaseType.MOBILIZATION
- local sub_type = CustomActivityModel:getInstance():getActMinSubType(base_type)
- local level = RoleManager.Instance.mainRoleInfo.level
- local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type)
- local is_open = false
- local end_time = 0
- if act_list and act_list.etime then
- local have_time = TimeUtil:getServerTime( ) - act_list.stime
- if have_time > 0 then
- self.act_day[sub_type] = math.ceil(have_time/24/3600) <= 0 and 1 or math.ceil(have_time/24/3600)
- end
- local icon_sub_type = base_type*1000 + sub_type
- if sub_type >= 10001 then
- icon_sub_type = base_type*100000 + sub_type
- end
- end_time = act_list.etime - TimeUtil:getServerTime()
- is_open = end_time > 0
- if GetModuleIsOpen(331,base_type) then
- if is_open then
- return true
- end
- end
- end
- return true
- end
|