|
|
- --[[@------------------------------------------------------------------
- @description:VIP模块
- @author:huangcong
- ----------------------------------------------------------------------]]
- VipModel = VipModel or BaseClass(BaseModel)
- local stringtotable = stringtotable
- VipModel.REQUEST_CCMD_EVENT = "VipModel.REQUEST_CCMD_EVENT"
- VipModel.UPDATE_VIP_INFO = "VipModel.UPDATE_VIP_INFO" --更新VIP信息
- VipModel.UPDATE_VIP_VIEW_RED = "VipModel.UPDATE_VIP_VIEW_RED" --更新vip界面红点
- VipModel.UPDATE_MAIN_VIEW_BG_RES = "VipModel.UPDATE_MAIN_VIEW_BG_RES" --更新主界面背景资源
- VipModel.UPDATE_RECHARGE_CARD_DATA = "VipModel.UPDATE_RECHARGE_CARD_DATA" --更新充值卡数据
- VipModel.UPDATE_RECHARGE_ITEM_DATA = "VipModel.UPDATE_RECHARGE_ITEM_DATA" --
- VipModel.OPEN_VIP_RENEW_VIEW = "VipModel.OPEN_VIP_RENEW_VIEW" --打开续费界面
- VipModel.OPEN_EXPERIENCE_VIEW = "VipModel.OPEN_EXPERIENCE_VIEW" --打开VIP体验界面
- VipModel.SHOW_EXPERIENCE_TASK_TIP = "VipModel.SHOW_EXPERIENCE_TASK_TIP" --展示VIP体验任务栏飞鞋特权信息
- VipModel.OPEN_EXPERIENCE_V_THREE_VIEW = "VipModel.OPEN_EXPERIENCE_V_THREE_VIEW"--打开VIP体验贵族V3界面
- VipModel.OPEN_EXPERIENCE_V_THREE_EX_VIEW = "VipModel.OPEN_EXPERIENCE_V_THREE_EX_VIEW"--打开VIP体验贵族V3详情界面
- VipModel.UPDATE_EXPERIENCE_V_THREE_EX_RED = "VipModel.UPDATE_EXPERIENCE_V_THREE_EX_RED"--更新VIP体验贵族V3图标红点
-
- VipModel.OPEN_CUSTOM_RECHARGE_VIEW = "VipModel.OPEN_CUSTOM_RECHARGE_VIEW" --打开随心充界面
- VipModel.UPDATE_TAB_INFO = "VipModel.UPDATE_TAB_INFO" --更新页签信息
- VipModel.OPEN_NOBLE_BUY_VIEW = "VipModel.OPEN_NOBLE_BUY_VIEW" --打开vip贵族礼包购买提示界面
- VipModel.OPEN_VIP_NOBLE_VIEW = "VipModel.OPEN_VIP_NOBLE_VIEW"--打开VIP特权界面
- VipModel.OPEN_VIP_SKILL_EFFECT_VIEW = "VipModel.OPEN_VIP_SKILL_EFFECT_VIEW"--特权技能界面
-
- -- 投资相关 start
- VipModel.UPDATE_INVESTMENT_DATA = "VipModel.UPDATE_INVESTMENT_DATA" -- 更新投资计划协议信息
-
- -- 投资相关 end
-
- -- 幻魔UP卡 start
- VipModel.UPDATE_VIP_CARD_INFO = "VipModel.UPDATE_VIP_CARD_INFO" -- 幻魔UP卡信息更新
- -- 幻魔UP卡 end
-
-
- VipModel.REGISTER_MASK_ID = "VipModel.REGISTER_MASK_ID" --注册mask_id
- VipModel.BIND_GIFTS_PRODUCT_ID = 20 --红钻礼包商品id
- VipModel.IOSAlpha_PRODUCT_ID = 999 --iOS审核状态下商品id
-
- VipModel.TabType = {
- Recharge = 1,--充值
- Noble = 2,--特权
- PurchaseGift = 3,--直购礼包
- Investment = 4, -- 投资计划
- HopeGift = 5, -- 投资计划
- Card = 6, --幻魔UP卡
- -- Investment = 4,
- -- Seven = 5,
- -- Renew = 6,
- -- Open_Recharge = 7,
- -- Every_Recharge = 8,
- -- SuperInvest = 9,
- -- GodInvest = 10,
- -- MergeInvest = 11,
- }
-
- VipModel.Type = {--直购礼包类型Config.Rechargegoods
- PurchaseGift = 4,--直购礼包
- FirstRecharge = 5,--首充
- }
-
-
- VipModel.VIP_CARD = {
- WEEK = 301, --周卡
- MONTH = 302, --月卡
- SEASON = 303, --季卡
- }
-
- --尊享卡概率
- VipModel.VIP_CARD_RATIO = {
- Evolotion = 500, --升星概率
- Strength = 500, --强化概率
- MonthEquipDrop = 500, --月卡橙装掉率
- SeasonEquipDrop = 1000, --季卡橙装掉率
- }
-
- VipModel.PurchaseGiftType = {--直购礼包类型
- Day = 1,--天
- Week = 2,--周
- Month = 3,--月(但是在直购这里代表终身礼包)
- }
-
- VipModel.PurchaseGiftTypeName = {--直购礼包类型名字
- [1] = "每日精选礼包",--天
- [2] = "每周精选礼包",--周
- [3] = "每月精选礼包",--月(但是在直购这里代表终身礼包)
- }
-
-
- function VipModel:__init()
- VipModel.Instance = self
- self.vip_info = nil
- self.vip_red_dot_info = {}
- self.product_list = {}
- self.vip_gift_list = {}--VIP专属礼包信息
- self.vip_gift_find_list = {}--vip礼包查询列表
- self.is_first_red = true--第一次VIP要有红点
- self.vip_max_level = TableSize(Config.Vipgift)
- self.product_info = {}--15903商品信息
- -- 投资相关
- self.investment_login_red = true -- 投资计划登录红点
- self.investment_type_cfg = {} -- 投资计划类型配置
- self.investment_data = {} -- 投资计划已投资信息
- self.investment_cfg = {} -- 投资计划配置
- self.investment_view_item_data = {} -- 投资计划主界面,节点数据缓存
- self.investment_red = {} -- 投资计划红点 格式为 [type] = true / false
- self._block_update_invsetment_data = false -- 是否拦截投资协议信息的更新
- self._cache_invsetment_data = nil -- 当打开界面后,不主动更新42001协议的数据,关闭界面或者手动购买即检测缓存并覆盖协议数据
- self.is_active_vip_three = false
- self.is_open_vip_ex_1 = false--是否第一次打开过
- self.can_todo_task = true
- --
-
- self.service_data = nil
-
- self.vipcard_info = {} --幻魔UP卡信息
- self:InitVipCfg()
- self:InitInvestmentPlayCfg()
- end
-
- function VipModel:getInstance()
- if VipModel.Instance == nil then
- VipModel.New()
- end
- return VipModel.Instance
- end
-
- function VipModel:InitVipCfg( )
- self.vip_cfg = {}--vip配置
- local cfg_data = DeepCopy(Config.Vipcfg)
- for k,v in pairs(cfg_data) do
- v.reward = stringtotable(v.reward)
- self.vip_cfg[v.lv] = v
- end
-
- self.vip_gift_cfg = {}--vip特权礼包配置
- local gift_cfg_data = DeepCopy(Config.Vipgift)
- for k,v in pairs(gift_cfg_data) do
- local data = v
- data.gift_reward = stringtotable(v.gift_reward)--奖励展示
- self.vip_gift_cfg[v.vip_lv] = v
- end
-
-
- self.vip_rechargeGoods_cfg = {}--直购礼包商品配置
- self.vip_rechargeGoods_id_cfg = {}--直购礼包商品配置Id索引
- local vip_rechargeGoods_cfg = DeepCopy(Config.Rechargegoods)
- for k,v in pairs(vip_rechargeGoods_cfg) do
- local data = v
- data.name = Trim(data.name)
- data.about = Trim(data.about)
- data.limit = stringtotable(v.limit)--类型和购买限制次数
- data.open_day = stringtotable(v.open_day)--开服天数限制
- data.condition = stringtotable(v.condition)--等级vip限制还有折扣
- data.award = stringtotable(v.award)--展示奖励
- if not self.vip_rechargeGoods_cfg[v.type] then
- self.vip_rechargeGoods_cfg[v.type] = {}
- end
- self.vip_rechargeGoods_cfg[v.type][#self.vip_rechargeGoods_cfg[v.type] + 1] = v
- self.vip_rechargeGoods_id_cfg[v.id] = v
- end
- -- print("huangcong:VipModel [start:96] :", self.vip_rechargeGoods_cfg)
- -- PrintTable(self.vip_rechargeGoods_cfg[4])
- -- print("huangcong:VipModel [end]")
- end
-
- --得到vip通用配置
- function VipModel:GetVipCfg( vip_lv )
- return self.vip_cfg[vip_lv]
- end
-
- --得到vip礼包配置
- function VipModel:GetVipGiftCfg( vip_lv )
- return self.vip_gift_cfg[vip_lv]
- end
-
- function VipModel:IsNeedRedAll( )--这样写红点 每次调全局的只要调两次
- self.vip_red_dot_info[VipModel.TabType.Noble] = self:CheckVipNobleRedDot()
- self:CheckVipMainIconRedDot()
- end
-
- function VipModel:IsNeedRed( view_type,is_all,sub_type )
- local bool = false
- if view_type == VipModel.TabType.Noble then--贵族
- bool = self:CheckVipNobleRedDot()
- elseif view_type == VipModel.TabType.PurchaseGift then--直购
- bool = self:CheckPurchaseGiftFreeRed()
- elseif view_type == VipModel.TabType.Investment then--投资计划
- bool = self:CheckInvestmentPlanRed()
- elseif view_type == VipModel.TabType.HopeGift and sub_type then--臻享礼包这里是多开活动ID要不同变化
- view_type = sub_type + 3316500
- bool = self:CheckHopeGiftRedDot(sub_type)
- elseif view_type == VipModel.TabType.Card then--幻魔UP卡
- bool = self:CheckVipCardRedDot()
- elseif view_type == VipModel.TabType.Recharge then--充值
- bool = KfActivityModel:getInstance():IsMoneyCopyRedByTag( "charge" )
- end
- self.vip_red_dot_info[view_type] = bool
- self:Fire(VipModel.UPDATE_VIP_VIEW_RED,view_type,bool)
- if not is_all then
- -- self:CheckVipMainIconRedDot()
- end
- -- print("huangcong:VipModel [62]: ",bool,id)
- -- PrintTable(self.vip_red_dot_info)
- end
-
- --检查主界面VIP红点
- function VipModel:CheckVipMainIconRedDot( )
- local show = false
- for k,v in pairs(self.vip_red_dot_info) do
- if v == true then
- show = v
- break
- end
- end
- -- if not self:GetVipRedCookie() then
- -- show = true
- -- end
- return show
- end
-
- function VipModel:SetFisrtRed( bool )
- self.is_first_red = bool
- end
-
- --检查臻享礼包红点
- function VipModel:CheckHopeGiftRedDot( sub_type )
- if not sub_type then return false end
- return HopeGiftModel:getInstance():GetHopeGiftRedDot(sub_type)
- end
-
- --检查vip特权红点
- function VipModel:CheckVipNobleRedDot( )
- local bool = false
- local vip_flag = RoleManager.Instance.mainRoleInfo.vip_flag
- if self.vip_info and self.vip_info.vip_endtime and self.vip_info.vip_endtime - TimeUtil:getServerTime( ) <= 0 then
- if vip_flag >= 1 then
- for i=1,vip_flag do
- bool = not self:GetVipGiftFindByVipLv(i)
- if bool then
- break
- end
- end
- if not bool and self.vip_info.vip_award_list and #self.vip_info.vip_award_list > 0 then
- bool = true
- end
- end
- end
- return bool
- end
-
- --45001 刷新VIP界面信息
- function VipModel:UpdateVipInfomation(vo)
- self.vip_info = vo
- if vo.vip_lv ~= 0 then
- self.is_vip = false
- end
-
- if RoleManager.Instance.mainRoleInfo.vip_flag < 3 and self.vip_info.vip_lv == 3 and not self.is_active_vip_three then--说明升级到V3了
- self.is_active_vip_three = true
- self:PlayVipThreeStep()--开始V3激活步骤
- end
-
- --如果当前时间小于VIP结束时间,需要修改角色的VIP值
- local now = TimeUtil:getServerTime()
- if vo.vip_lv < vo.experience_vip_lv and now < vo.vip_endtime then--体验VIP
- RoleManager:getInstance():GetMainRoleVo():ChangeVar("vip_flag", vo.experience_vip_lv)
- else
- if vo.vip_lv == 4 then--V4的时候要在界面内判断礼包开启~
- self:Fire(VipModel.UPDATE_TAB_INFO)
- end
- RoleManager:getInstance():GetMainRoleVo():ChangeVar("vip_flag", vo.vip_lv)
- end
- -- local vip_type = 1
- -- if RoleManager:getInstance():GetMainRoleVo().vip_type ~= vip_type then
- -- RoleManager:getInstance():GetMainRoleVo():ChangeVar("vip_type", vo.vip_type)
- -- end
- self:Fire(VipModel.UPDATE_VIP_INFO, vo)
- self:Fire(VipModel.REQUEST_CCMD_EVENT,45007)
- if vo.vip_lv <= 3 then
- VipModel:getInstance():Fire(VipModel.REQUEST_CCMD_EVENT, 45010)
- end
- end
-
- --永久VIP
- function VipModel:IsForeverVip( )
- if self.vip_info and self.vip_info.vip_lv > 0 then
- return true
- end
- end
-
- --VIP是到期
- function VipModel:IsVipExperience( )
- if self.vip_info and self.vip_info.vip_endtime then
- return self.vip_info.vip_endtime - TimeUtil:getServerTime() > 0
- end
- end
-
- --获得Vip信息
- function VipModel:GetVipInfomation()
- return self.vip_info
- end
-
- --得到VIP类型 1王权 2皇权 3神权
- function VipModel:GetVipType(vip_lv)
- local vip_type = 1
- local vip_type_name = "王权"
- local vip_type_lv = 0
- local cfg = self:GetVipCfg(vip_lv)
- if cfg then
- if cfg.type >= 101 and cfg.type <= 200 then
- vip_type = 1
- vip_type_name = "王权"
- vip_type_lv = cfg.type - 100
- elseif cfg.type >= 201 and cfg.type <= 300 then
- vip_type = 2
- vip_type_name = "皇权"
- vip_type_lv = cfg.type - 200
- elseif cfg.type >= 301 then
- vip_type = 3
- vip_type_name = "神权"
- vip_type_lv = cfg.type - 300
- end
- end
- return vip_type,vip_type_name,vip_type_lv
- end
-
- --设置充值卡数据
- function VipModel:SetRechargeCardData(data)
- if PlatformMgr:getInstance():IsEyouPlatform() then --eyou平台充值卡处理
- data = self:EyouPlatformRecharge(data)
- end
-
- self.recharge_card_data = data
- self:Fire(VipModel.UPDATE_RECHARGE_CARD_DATA)
- end
-
- --筛选出eyou平台的用的充值配置
- function VipModel:EyouPlatformRecharge(data)
- if RuntimePlatform and data and data.product_list then
- local remove_index_list = {}
- if SystemRuntimePlatform.IsIphone() then --苹果手机
- if PlatformMgr:getInstance():IsTWAreaCurrency() then --臺灣地區
- for i,v in ipairs(data.product_list) do
- local cfg = self:GetEyouIOSRechargeTwProductCfg(v.product_id)
- if cfg == nil or cfg.is_show == 0 then
- table.insert(remove_index_list, i)
- end
- end
- else --非臺灣地區
- for i,v in ipairs(data.product_list) do
- local cfg = self:GetEyouIOSRechargeNotTwProductCfg(v.product_id)
- if cfg == nil or cfg.is_show == 0 then
- table.insert(remove_index_list, i)
- end
- end
- end
- elseif SystemRuntimePlatform.IsAndroid() then --安卓
- if PlatformMgr:getInstance():IsTWAreaCurrency() then --台湾地区
- for i,v in ipairs(data.product_list) do
- local cfg = self:GetEyouAndroidRechargeTwProductCfg(v.product_id)
- if cfg == nil or cfg.is_show == 0 then
- table.insert(remove_index_list, i)
- end
- end
- else --非台湾地区
- for i,v in ipairs(data.product_list) do
- local cfg = self:GetEyouAndroidRechargeNotTwProductCfg(v.product_id)
- if cfg == nil or cfg.is_show == 0 then
- table.insert(remove_index_list, i)
- end
- end
- end
- end
- local del_num = 0
- for i,v in ipairs(remove_index_list) do
- local index = v - del_num
- table.remove(data.product_list, index)
- del_num = del_num + 1
- end
- end
-
- return data
- end
-
- --ios儲值配置,臺灣地區,顯示臺幣
- function VipModel:GetEyouIOSRechargeTwProductCfg(product_id)
- local cfg, money_sign
- for k,v in pairs(Config.Chargeconfig) do
- if v.plat_type == 2 and v.usd_money == 0 and v.product_id == product_id then
- cfg = v
- cfg.money = cfg.local_money
- money_sign = Trim(cfg.money_sign)
- end
- end
- return cfg, money_sign
- end
-
- --ios儲值配置,非臺灣地區,顯示美元
- function VipModel:GetEyouIOSRechargeNotTwProductCfg(product_id)
- local cfg, money_sign
- for k,v in pairs(Config.Chargeconfig) do
- if v.plat_type == 2 and v.local_money == 0 and v.product_id == product_id then
- cfg = v
- cfg.money = cfg.usd_money
- money_sign = "$"
- end
- end
- return cfg, money_sign
- end
-
- --ios充值配置
- function VipModel:GetEyouIOSRechargeProductCfg(product_id)
- local cfg, money_sign
- for k,v in pairs(Config.Chargeconfig) do
- if v.plat_type == 2 and v.product_id == product_id then
- cfg = v
- cfg.money = cfg.usd_money
- money_sign = "$"
- end
- end
- return cfg, money_sign
- end
-
- --台湾地区的安卓充值配置,显示本地货币
- function VipModel:GetEyouAndroidRechargeTwProductCfg(product_id)
- local cfg, money_sign
- for k,v in pairs(Config.Chargeconfig) do
- if v.plat_type == 1 and v.usd_money == 0 and v.product_id == product_id then
- cfg = v
- cfg.money = cfg.local_money
- money_sign = Trim(cfg.money_sign)
- end
- end
- return cfg, money_sign
- end
-
- --非台湾地区的安卓充值配置,显示美元
- function VipModel:GetEyouAndroidRechargeNotTwProductCfg(product_id)
- local cfg, money_sign
- for k,v in pairs(Config.Chargeconfig) do
- if v.plat_type == 1 and v.local_money == 0 and v.product_id == product_id then
- cfg = v
- cfg.money = cfg.usd_money
- money_sign = "$"
- end
- end
- return cfg, money_sign
- end
-
- --从配置中获得对应权限
- function VipModel:GetPrivilegeFromConfig(vip_lv)
- local list = {}
- for _, v in pairs(Config.Vipprivilege) do
- if v.lv <= vip_lv then--插入并且重新排列
- if not list[v.class_id] then
- list[v.class_id] = {}
- end
- v.sort_id = v.class_id*100000 + v.subclass_id
- if not list[v.class_id][v.subclass_id] then
- list[v.class_id][v.subclass_id] = v
- else
- if v.lv > list[v.class_id][v.subclass_id].lv then--取高等级的特权
- list[v.class_id][v.subclass_id] = v
- end
- end
- end
- end
- local new_list = {}
- for k,v in pairs(list) do
- for kk,vv in pairs(v) do
- new_list[#new_list + 1] = vv
- end
- end
-
- if #list > 1 then
- local onSort = function (a, b)
- return a.sort_id < b.sort_id
- end
- table.sort(new_list, onSort)
- end
- print("huangcong:VipModel [start:446] :", new_list)
- PrintTable(new_list)
- print("huangcong:VipModel [end]")
- return new_list
- end
-
- --VIP升级经验上限
- function VipModel:GetExpFromConfig(vip_lv)
- local total_exp = 0
- for _, v in pairs(Config.Viplevelup) do
- if v.lv <= vip_lv then
- total_exp = total_exp + v.exp
- end
- end
- return total_exp
- end
-
- --检查VIP体验卡1(获得的时候检查)
- function VipModel:CheckVipXpCard(goods_list)
- if not self.is_open_vip_ex_1 then
- for _, v in pairs(goods_list) do
- if v.type_id == GuideModel.VIP_EXPERIENCE_ID and RoleManager.Instance.mainRoleInfo.vip_flag == 0 then
- setTimeout(function()
- self.is_open_vip_ex_1 = true
- self:Fire(VipModel.OPEN_EXPERIENCE_VIEW, 1)
- self:Fire(VipModel.SHOW_EXPERIENCE_TASK_TIP)
- end, 0.5)
- break
- end
- end
- end
- end
-
- --检查VIP体验卡2(使用道具的时候检查)
- function VipModel:CheckVipXpCardByUse(goods_type_id)
- if goods_type_id == GuideModel.VIP_EXPERIENCE_ID2 then
- setTimeout(function()
- GlobalEventSystem:Fire(EventName.CLOSE_BAG_VIEW)
- self:Fire(VipModel.OPEN_EXPERIENCE_VIEW, 1)
- self:Fire(VipModel.SHOW_EXPERIENCE_TASK_TIP)
- end, 0.5)
- end
- end
-
- --获得VIP特权数值
- function VipModel:GetVipPrivilegeValue(vipLv, module_id, subclass_id)
- if not self.vip_info.vip_type then return 0 end
- local str = vipLv .. "@" .. module_id .. "@" .. subclass_id
- local value = 0
- local cfg = Config.Vipprivilege[str]
- if cfg then
- if self.vip_info.vip_type == 1 then --白银
- if cfg.can_try == 1 then
- value = tonumber(cfg.value) or 0
- end
- elseif self.vip_info.vip_type == 3 then --至尊
- value = ( tonumber(cfg.value) + tonumber(cfg.honor_extra) ) or 0
- else
- value = tonumber(cfg.value) or 0
- end
- end
- return value
- end
-
- --获得充值配置
- function VipModel:GetRechargeProductConfig(product_id)
- return Config.Rechargeproduct[product_id]
- end
-
- --获得充值返利配置
- function VipModel:GetRechargeReturnConfig(product_id, return_type)
- return Config.Rechargereturn[product_id .. "@" .. return_type]
- end
-
- --根据vip等级 获取特权配置 如果没找到 就会遍历上一个等级的
- function VipModel:GetVipPrivilegeValue(class_id, subclass_id, vip_lv )
- if class_id and subclass_id and vip_lv then
- local cfg = Config.Vipprivilege[vip_lv.."@"..class_id.."@"..subclass_id.."@1"]
- if cfg then
- return cfg.value
- else
- if vip_lv == 0 then
- return 0
- else
- return self:GetVipPrivilegeValue(class_id, subclass_id, vip_lv-1)
- end
- end
- else
- return 0
- end
- end
-
- --得到VIP等级
- function VipModel:GetVipLevel()
- self.vipLevel = self.vip_info and self.vip_info.vip_lv or nil
- return self.vipLevel or -1
- end
-
- --设置超级VIP开启条件数据
- function VipModel:SetSuperVipOpenData( info )
- if not ClientConfig.super_vip_open then return end -- 是否开启超级客服
- --本地储存是否 推送过 推送过就退出不推送
- local bool = CookieWrapper.Instance:GetCookie(CookieLevelType.Account, CookieKey.SUPER_VIP_SHOW_STATE)
- if bool then return end
- local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
- local cfg = ClientConfig.super_vip_open_config
-
- if cfg ~= "" then
- local data = StrToTable(cfg)
- for i,vo in ipairs(data) do
- if open_day >= tonumber(vo.min_open_day) and open_day <= tonumber(vo.max_open_day) then --开发天数条件满足 判断充值条件
- for i,v in ipairs(info.month_recharge_record) do --先遍历月充值条件 如果满足 就触发超级VIP 不再继续判断
- if v.gold_num >= tonumber(vo.month_recharge_record) then
-
- if SceneManager.Instance:IsMainCityAndFieldScene() then
- self:Fire(VipModel.OPEN_SUPER_VIP_VIEW)
-
- else
- self.is_super_vip = true
- end
- return
- end
- end
-
- for i,v in ipairs(info.daily_recharge_record) do
- if v.gold_num >= tonumber(vo.daily_recharge_num) then
-
- if SceneManager.Instance:IsMainCityAndFieldScene() then
- self:Fire(VipModel.OPEN_SUPER_VIP_VIEW)
- return
- else
- self.is_super_vip = true
- end
- return
- end
- end
- end
- end
- end
- end
-
- --是否满足超级会员条件 但是在因为场景没有推送
- function VipModel:IsSuperVipPush( )
- return self.is_super_vip
- end
-
- --得到VIP卡类型
- function VipModel:GetVipCardType( )
- local list = {}
- local cfg = Config.Vipcardnew
- if cfg then
- for i,v in pairs(cfg) do
- if v.type == 2 then
- table.insert(list,v)
- end
- end
- end
- return list
- end
-
- --设置vip礼包信息
- function VipModel:SetVipGiftInfo( list )
- self.vip_gift_list = {}
- for i,v in ipairs(list) do
- self.vip_gift_list[v.vip_lv] = v
- end
- self:IsNeedRed(VipModel.TabType.Noble)
- end
-
- --得到vip礼包信息
- function VipModel:GetVipGiftInfo( vip_lv )
- if not vip_lv then
- return self.vip_gift_list
- else
- return self.vip_gift_list[vip_lv]
- end
- end
-
- --获得VIP最大等级
- function VipModel:GetVipMaxLevel( )
- return self.vip_max_level
- end
-
- --设置Vip红点cookie
- function VipModel:SetVipRedCookie(bool)
- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.VIP_RED_SHOW,bool)
- CookieWrapper.Instance:WriteAll()
- end
-
- --获取Vip红点cookie
- function VipModel:GetVipRedCookie()
- return CookieWrapper.Instance:GetCookie(CookieLevelType.Account, CookieKey.VIP_RED_SHOW)
- end
-
- --免费小飞鞋使用vip等级
- function VipModel:GetFreeShoeVip( )
- if not self.free_shoe_vip_lv then
- for k,v in pairs(Config.Vipprivilege) do
- if v.class_id == 1 and v.subclass_id == 1 then
- self.free_shoe_vip_lv = v.lv
- end
- end
- end
- return self.free_shoe_vip_lv or 3
- end
-
- function VipModel:CanFreeUseShoe( )
- local vip = RoleManager.Instance.mainRoleInfo.vip_flag
- return vip >= VipModel:getInstance():GetFreeShoeVip( ) or VipModel:getInstance():IsVipExperience()
- end
-
- --获得直购礼包配置
- function VipModel:GetPurchaseGiftCfg( )
- return self.vip_rechargeGoods_cfg[VipModel.Type.PurchaseGift]
- end
-
- --获得直购礼包商品配置通过商品Id
- function VipModel:GetPurchaseGiftCfgById( product_id )
- return self.vip_rechargeGoods_id_cfg[product_id]
- end
-
- --设置15903商品信息
- function VipModel:SetProductInfo( scmd )
- local new_vo = {}
- new_vo.product_type = scmd
- new_vo.product_list = {}
- for k,v in pairs(scmd.product_list) do
- new_vo.product_list[v.product_id] = v
- end
- new_vo.time_list = {}
- for k,v in pairs(scmd.time_list) do
- new_vo.time_list[v.sub_type] = v
- end
- self.product_info[scmd.product_type] = new_vo
- if scmd.product_type == VipModel.Type.PurchaseGift then
- self:IsNeedRed(VipModel.TabType.PurchaseGift)
- end
- -- print("huangcong:VipModel [start:581] :", new_vo)
- -- PrintTable(new_vo)
- -- print("huangcong:VipModel [end]")
- end
-
- function VipModel:GetProductInfo( product_type )
- return self.product_info[product_type]
- end
-
- --设置VIP专属礼包查看信息
- function VipModel:SetVipGiftFindInfo( vo )
- for k,v in pairs(vo.list) do
- self.vip_gift_find_list[v.vip_lv] = true
- end
- end
-
- --获得vip专属礼包查询状态通过vip等级
- function VipModel:GetVipGiftFindByVipLv( vip_lv )
- return self.vip_gift_find_list[vip_lv] or false
- end
-
- -- 投资相关 start --
- -- 投资相关 start --
- -- 投资相关 start --
- -- 初始化投资计划配置
- function VipModel:InitInvestmentPlayCfg( )
- -- 初始化缓存计划类型配置
- self.investment_type_cfg = {}
- for k, v in pairs(Config.Investmenttypes) do
- self.investment_type_cfg[v.type] = self.investment_type_cfg[v.type] or {}
- self.investment_type_cfg[v.type][v.level] = v
- end
- -- 初始化缓存投资计划内容配置
- self.investment_cfg = {}
- for k, v in pairs(Config.Investmentrewards) do
- self.investment_cfg[v.type] = self.investment_cfg[v.type] or {}
- self.investment_cfg[v.type][v.level] = self.investment_cfg[v.type][v.level] or {}
- self.investment_cfg[v.type][v.level][v.id] = v
- end
- -- 创建一次缓存配置,用于提供首轮红点
- -- for k, v in pairs(self.investment_cfg) do
- -- self:GetInvestmentViewData(v.type)
- -- end
- end
- function VipModel:GetInvestmentTypeData( )
- return self.investment_type_cfg
- end
- -- 根据需求获取投资配置
- function VipModel:GetInvestmentCfg(type, level, id)
- if type then
- if level then
- if id then
- return self.investment_cfg[type] and self.investment_cfg[type][level] and self.investment_cfg[type][level][id] or nil
- else
- return self.investment_cfg[type] and self.investment_cfg[type][level] or nil
- end
- else
- return self.investment_cfg[type]
- end
- else
- return self.investment_cfg
- end
- end
-
- -- 获取投资计划特定类型节点所需数据
- function VipModel:GetInvestmentViewData(type)
- if not type then return nil end
- self.investment_view_item_data[type] = self.investment_view_item_data[type] or {}
- local round, is_finished = self:GetInvestmentCurRound(type)
- -- 不存在缓存数据的话就生成
- if not self.investment_view_item_data[type][round] then
- self.investment_view_item_data[type][round] = DeepCopy(self:GetInvestmentCfg(type, round))
- end
- if self.investment_view_item_data[type][round] then
- for k, v in ipairs(self.investment_view_item_data[type][round]) do
- if is_finished then
- v.sort_weight = 3
- else
- self:UpdateInvestmentItemDataSortWeight(v)
- end
- end
- self:InvestmentSortFunc(self.investment_view_item_data[type][round])
- return self.investment_view_item_data[type][round]
- end
- return nil
- end
-
- -- 由于跨天或者升级后要更新投资计划的红点信息
- function VipModel:RefreshInvestmentViewDataRed( )
- local function refresh_func()
- local updated = false
- for k, v in pairs(self.investment_data) do
- local round, is_finished = self:GetInvestmentCurRound(v.type)
- if v.is_buy == 1 and not is_finished then -- 已购买才刷新
- -- 更新当前类型的投资已经买了几天
- v.bought_day = v.buy_time ~= 0 and math.ceil((TimeUtil:getServerTime() - v.buy_time) / 86400) or 0
- updated = true
- end
- end
- if updated then
- self:IsNeedRed(VipModel.TabType.Investment)
- end
- end
- TimeManager.GetInstance():StartTime("VIP_INVESETMENT_RED_1", 0.5, refresh_func)
- end
-
- -- 更新投资计划节点数据的排序权重
- function VipModel:UpdateInvestmentItemDataSortWeight(data)
- local flag = self:GetInvestMentRewardFlag(data.type, data.id)
- local lv = RoleManager.Instance.mainRoleInfo.level
- local bought_day = self:GetInvestmentBoughtDay(data.type)
- -- 设置排序队列,已领取的在后面
- if flag then
- data.sort_weight = 3
- else
- -- 判断是否可领取
- local can_reveive = true
- local condition = stringtotable(data.condition)
- for _, cond in ipairs(condition) do
- if cond[1] == "lv" then -- 需要达到等级
- can_reveive = can_reveive and lv >= cond[2]
- elseif cond[1] == "day" then -- 需要达到购买天数
- can_reveive = can_reveive and bought_day >= cond[2]
- end
- end
- data.sort_weight = can_reveive and 1 or 2
- end
- end
-
- function VipModel:InvestmentSortFunc(list)
- local sort_func = function ( a, b )
- if a.sort_weight == b.sort_weight then
- return a.id < b.id
- else
- return a.sort_weight < b.sort_weight
- end
- end
- table.sort(list, sort_func)
- end
-
- -- 设置投资相关协议信息 42001
- function VipModel:SetInvestmentData(vo)
- if not vo then return end
- if self._block_update_invsetment_data then
- self._cache_invsetment_data = vo
- else
- self._cache_invsetment_data = nil -- 如果能顺利更新投资数据,则需要清除限制刷新时的缓存
- -- 初始化数据
- self.investment_data = {}
- for k, v in ipairs(vo.list) do
- local rewards_tb = {}
- for _, v2 in ipairs(v.rewards) do
- rewards_tb[v2.id] = v2.id
- end
- self.investment_data[v.type] = self.investment_data[v.type] or {}
- self.investment_data[v.type].type = v.type
- self.investment_data[v.type].round = v.round
- self.investment_data[v.type].is_buy = v.is_buy
- self.investment_data[v.type].buy_time = v.buy_time
- self.investment_data[v.type].rewards = rewards_tb
- -- 当前类型的投资已经买了几天
- self.investment_data[v.type].bought_day = v.buy_time ~= 0 and math.ceil((TimeUtil:getServerTime() - v.buy_time) / 86400) or 0
- end
- -- 更新投资信息的领取情况及排序
- for k, v in pairs(self.investment_data) do
- self:GetInvestmentViewData(v.type)
- end
- -- 特殊处理后,在这边更新
- self:IsNeedRed(VipModel.TabType.Investment)
- self:Fire(VipModel.UPDATE_INVESTMENT_DATA)
- end
- end
- -- 关闭界面时,重新更新投资协议数据
- function VipModel:ReupdateInvestmentData( )
- if self._cache_invsetment_data then
- self:SetInvestmentData(self._cache_invsetment_data)
- end
- self._cache_invsetment_data = nil
- end
- function VipModel:GetInvestmentData(type)
- if type then
- return self.investment_data[type]
- else
- return self.investment_data
- end
- end
- function VipModel:GetInvestmentBoughtDay(type)
- local bought_day = 0
- local data = self:GetInvestmentData(type)
- if data then
- bought_day = data.bought_day
- end
- return bought_day
- end
- -- 根据服务端返回的数据,判断当前是处于当前投资类型的第几轮
- function VipModel:GetInvestmentCurRound(type)
- if not type then return nil end
- local round = 1
- local data = self:GetInvestmentData(type)
- if data then
- round = data.round
- end
- local total_round = self.investment_type_cfg[type] and #self.investment_type_cfg[type] or 0
- -- 是否已经投资完全部阶段
- local is_finished = round > total_round
- round = round <= total_round and round or total_round
- return round, is_finished
- end
-
- -- 根据投资类型更新领奖rewardid
- function VipModel:UpdateInvestmentRewardId(vo)
- if not vo then return end
- self.investment_data[vo.type] = self.investment_data[vo.type] or {}
- self.investment_data[vo.type].rewards = self.investment_data[vo.type].rewards or {}
- self.investment_data[vo.type].rewards[vo.id] = vo.id
-
- -- 更新缓存
- local round, is_finished = self:GetInvestmentCurRound(vo.type)
- if self.investment_view_item_data[vo.type] and self.investment_view_item_data[vo.type][round] then
- for k, v in ipairs(self.investment_view_item_data[vo.type][round]) do
- if v.id == vo.id then
- -- 领取了的缓存直接改为3
- v.sort_weight = 3
- break
- end
- end
- -- 重新排序节点
- self:InvestmentSortFunc(self.investment_view_item_data[vo.type][round])
- end
- end
- -- 获取投资计划的奖励领取情况
- function VipModel:GetInvestMentRewardFlag(type, id)
- if not type then return false end
- if id then
- return self.investment_data[type] and self.investment_data[type].rewards and self.investment_data[type].rewards[id] or false
- else
- return self.investment_data[type] and self.investment_data[type].rewards or false
- end
- end
-
- -- 是否已经投资了所有的投资类型
- function VipModel:HasBoughtAllInvestmentTypes( )
- local bool = true
- local type_list = self:GetInvestmentTypeData()
- for k, v in pairs(type_list) do
- local type_data = self:GetInvestmentData(v.type) or {}
- for k2, v2 in ipairs(type_data) do
- bool = bool and (v2.is_buy == 1)
- end
- end
- return bool
- end
-
- -- 投资计划红点
- function VipModel:CheckInvestmentPlanRed(type)
- local bool = false
- local bought_all = true -- 是否已经买完了投资所有档位
- local function check_investment_red_by_type(type)
- self.investment_red[type] = false
- local data = self:GetInvestmentData(type)
- bought_all = bought_all and (data and data.is_buy == 1 or false)
- if data and data.is_buy == 1 then
- local view_data = self:GetInvestmentViewData(type)
- for k, v in ipairs(view_data) do
- if v.sort_weight == 1 then -- 可领取
- self.investment_red[type] = true
- bool = true
- end
- end
- end
- end
- if type then
- check_investment_red_by_type(type)
- else
- for k, v in pairs(self.investment_type_cfg) do
- check_investment_red_by_type(k)
- end
- end
- -- 如果已经全买了,那就不需要登录红点了
- if self.investment_login_red then
- self.investment_login_red = not bought_all
- end
- bool = bool or self.investment_login_red
- return bool
- end
- -- 根据类型获取投资计划红点
- function VipModel:GetInvestmentPlanRed(type)
- if type then
- return self.investment_red[type] or false
- else
- local bool = false
- for k, v in pairs(self.investment_red) do
- bool = bool or v
- end
- return bool
- end
- end
- -- 投资相关 end --
- -- 投资相关 end --
- -- 投资相关 end --
-
- ---------------------------- vip 幻魔UP卡 开始 ---------------------
- -- 获取幻魔UP卡基本信息
- function VipModel:GetVipCarBaseInfo(product_id)
- local info =
- {
- product_id = product_id,
- product_name = "",
- money = 0,
- about = "",
- days = 0,
- buy_reward = {},
- day_reward = {},
- }
- local config_product = Config.Rechargeproduct[product_id]
- if config_product then
- info.product_name = config_product.product_name
- info.money = config_product.money
- info.about = config_product.about
- end
- local config_rechargewelfare = Config.Rechargewelfare[product_id]
- if config_rechargewelfare then
- info.days = config_rechargewelfare.days
- info.buy_reward = stringtotable(Trim(config_rechargewelfare.buy_reward))
- info.day_reward = stringtotable(Trim(config_rechargewelfare.reward))
- end
- return info
- end
-
- -- 获取幻魔UP卡信息
- function VipModel:RequstVipCarInfo()
- self:DelayFire(VipModel.REQUEST_CCMD_EVENT, 15901)
- end
-
- -- 购买幻魔UP卡
- function VipModel:RequstBuyVipCar(product_id)
- if not self:IsCurProductCanBuy(product_id) then
- Message.show("今日续费次数已达到上限哦~")
- return
- end
- self:Fire(VipModel.REQUEST_CCMD_EVENT, 15904, product_id)
- end
-
- -- 领取幻魔UP卡每日奖励
- function VipModel:RequstGetVipCarDayReward(product_id)
- self:Fire(VipModel.REQUEST_CCMD_EVENT, 15902, product_id)
- end
-
-
- -- 设置幻魔UP卡信息
- function VipModel:SetVipCarDayReward(vo)
- self.vipcard_info = {}
- self.vipcard_info.product_list = vo.product_list
-
- if self.vipcard_info.product_list and #self.vipcard_info.product_list > 1 then
- table.sort( self.vipcard_info.product_list, function (a, b)
- return a.product_subtype < b.product_subtype
- end )
- end
-
- self:IsNeedRed(VipModel.TabType.Card)
- self:Fire(VipModel.UPDATE_VIP_CARD_INFO)
- end
-
- -- 是否可以续费尊享卡
- function VipModel:IsCurProductCanBuy(product_id)
- local left_buy_time = 0
- local can_buy = true
- if self.vipcard_info and self.vipcard_info.product_list then
- for i,v in ipairs(self.vipcard_info.product_list) do
- if v.product_id == product_id then
- return v.left_times > 0
- end
- end
- end
- return can_buy
- end
-
- -- 尊享卡强化概率
- function VipModel:VipCardEquipStrengthRatio(is_perent)
- local ratio = 0
- if self:HaveVipCard(VipModel.VIP_CARD.MONTH) then
- ratio = VipModel.VIP_CARD_RATIO.Strength
- if is_perent then
- ratio = ratio / 100
- end
- end
- return ratio
- end
-
- -- 尊享卡升星概率
- function VipModel:VipCardEquipEvolutionRatio(is_perent)
- local ratio = 0
- if self:HaveVipCard(VipModel.VIP_CARD.WEEK) then
- ratio = VipModel.VIP_CARD_RATIO.Evolotion
- if is_perent then
- ratio = ratio / 100
- end
- end
- return ratio
- end
-
- -- 尊享卡月卡橙装掉率概率
- function VipModel:VipCardMonthEquipDropRatio(is_have, is_perent)
- local ratio = 0
- if is_have or self:HaveVipCard(VipModel.VIP_CARD.MONTH) then
- ratio = VipModel.VIP_CARD_RATIO.MonthEquipDrop
- if is_perent then
- ratio = ratio / 100
- end
- end
- return ratio
- end
-
- -- 尊享卡季卡橙装掉率概率
- function VipModel:VipCardSeasonEquipDropRatio(is_have, is_perent)
- local ratio = 0
- if is_have or self:HaveVipCard(VipModel.VIP_CARD.SEASON) then
- ratio = VipModel.VIP_CARD_RATIO.SeasonEquipDrop
- if is_perent then
- ratio = ratio / 100
- end
- end
- return ratio
- end
-
- -- 是否还有vip尊享卡
- function VipModel:HaveVipCard(product_id)
- local b = false
- if self.vipcard_info and self.vipcard_info.product_list then
- for i,v in ipairs(self.vipcard_info.product_list) do
- if v.product_id == product_id then
- return v.state ~= 0 and v.left_count > 0
- end
- end
- end
- return b
- end
-
- -- 尊享卡主界面展示
- function VipModel:CheckVipCardIcon()
- local b, str = false,""
- if not GetModuleIsOpen(450, 6) or self:GetVipLevel() < 1 then
- return b, str
- end
- local is_active_month_card = self:HaveVipCard(VipModel.VIP_CARD.MONTH)
- local is_active_season_card = self:HaveVipCard(VipModel.VIP_CARD.SEASON)
- local month_card_drop_ratio = self:VipCardMonthEquipDropRatio(true, true)
- local season_card_drop_ratio = self:VipCardSeasonEquipDropRatio(true, true)
- if not is_active_month_card and not is_active_season_card then
- str = HtmlColorTxt("未激活", ColorUtil.RED_DARK)
- elseif is_active_month_card and is_active_season_card then
- str = string.format("橙装掉率%s", HtmlColorTxt("+".. (month_card_drop_ratio + season_card_drop_ratio) .."%", "#fdffc2"))
- elseif is_active_season_card then
- str = string.format("橙装掉率%s", HtmlColorTxt("+".. (season_card_drop_ratio) .."%", "#fdffc2"))
- elseif is_active_month_card then
- str = string.format("橙装掉率%s", HtmlColorTxt("+".. (month_card_drop_ratio) .."%", "#fdffc2"))
- end
- return true, str
- end
-
- -- 获取续费提示
- function VipModel:GetVipCardRechargeTip()
- local product_id, left_times = 0, 0
- local cur_time = TimeUtil:getServerTime()
- if self.vipcard_info and self.vipcard_info.product_list then
- for i,v in ipairs(self.vipcard_info.product_list) do
- if v.end_time and v.end_time > 0 and v.end_time > cur_time then
- --3天
- local offset_time = v.end_time - cur_time
- if offset_time < 3600 * 24 * 3 and (left_times == 0 or offset_time < left_times) then
- product_id = v.product_id
- left_times = offset_time
- end
- end
- end
- end
- return product_id,left_times
- end
-
- -- 领取幻魔UP卡每日奖励
- function VipModel:CheckVipCardRedDot()
- if self.vipcard_info and self.vipcard_info.product_list then
- for i,v in ipairs(self.vipcard_info.product_list) do
- if v.state == 1 then
- return true
- end
- end
- end
- return false
- end
-
-
- -- 尊享卡主界面展示
- function VipModel:IsCanShowVipCardTips()
- local b = false
- if not GetModuleIsOpen(450, 6) or self:GetVipLevel() < 1 then
- return b
- end
- local is_active_week_card = self:HaveVipCard(VipModel.VIP_CARD.WEEK)
- local is_active_month_card = self:HaveVipCard(VipModel.VIP_CARD.MONTH)
- local is_active_season_card = self:HaveVipCard(VipModel.VIP_CARD.SEASON)
- return not is_active_week_card and not is_active_month_card and not is_active_season_card
- end
-
-
- ---------------------------- vip 幻魔UP卡 结束 ---------------------
-
-
- --保存客服信息
- function VipModel:SetServiceData(scmd)
- self.service_data = scmd
- end
-
- function VipModel:GetServiceData( )
- return self.service_data
- end
-
- -- 获取VIP副本可以扫荡的VIP等级
- function VipModel:GetVipDungeonSweepLV( )
- for k,v in pairs(Config.Vipprivilege) do
- if v.class_id == 5 and v.subclass_id == 1 and v.type == 1 then
- return v.lv
- end
- end
- end
-
- --设置贵族技能播放cookie
- function VipModel:SetVipNobleSkillPlayCookie( bool )
- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.VIP_NOBLE_SKILL_PLAY,bool)
- CookieWrapper.Instance:WriteAll()
- end
-
- --设置贵族技能播放cookie
- function VipModel:GetVipNobleSkillPlayCookie( )
- local bool = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.VIP_NOBLE_SKILL_PLAY) or false
- return bool
- end
-
- ----------直购礼包免费红点-start---------
- function VipModel:CheckPurchaseGiftFreeRed( )
- self.purchase_gift_red_list = {}
- if self:GetVipLevel() < 3 then
- return false
- end
- local purchaseGift_cfg = self:GetPurchaseGiftCfg()
- local server_info = self:GetProductInfo(VipModel.Type.PurchaseGift)
- local is_show, openDay_limit, mergeDay_limt
- local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
- local level = RoleManager.Instance.mainRoleInfo.level
- local vip_flag = RoleManager.Instance.mainRoleInfo.vip_flag
- for k,v in pairs(purchaseGift_cfg) do
- local recharge_cfg = Config.Rechargeproduct[v.id]
- if recharge_cfg.money == 0 and v.limit and v.limit[2] then
- local have_time = v.limit[2]
- if server_info and server_info.product_list[v.id] then
- have_time = have_time - server_info.product_list[v.id].buy_counts
- end
-
- is_show = true
- openDay_limit = v.open_day[1]
- if openDay_limit then
- if open_day < openDay_limit[1] or open_day > openDay_limit[2] then
- is_show = false
- end
- end
- mergeDay_limt = v.merge_day[1]
- if mergeDay_limt then
- if open_day < mergeDay_limt[1] or open_day > mergeDay_limt[2] then
- is_show = false
- end
- end
- for kk,vv in pairs(v.condition) do
- if vv[1] == "lv" then
- if level < tonumber(vv[2]) then
- is_show = false
- end
- limit_lv = tonumber(vv[2])
- elseif vv[1] == "vip" then
- if vip_flag < tonumber(vv[2]) then
- is_show = false
- end
- limit_vip = tonumber(vv[2])
- end
- end
- if have_time > 0 and is_show then
- print('=======Msh:VipModel.lua[1261] ===TABLE====')
- PrintTable(v)
- self.purchase_gift_red_list[v.sub_type] = true
- end
- end
- end
- return self:GetPurchaseGiftFreeRed()
- end
-
- function VipModel:GetPurchaseGiftFreeRed( sub_type )
- if sub_type then
- return self.purchase_gift_red_list and self.purchase_gift_red_list[sub_type]
- else
- return self.purchase_gift_red_list and TableSize(self.purchase_gift_red_list) > 0
- end
- end
- ----------直购礼包免费红点-end-----------
-
- --开始V3激活步骤
- function VipModel:PlayVipThreeStep( )
- --先关界面
- self:Fire(VipModel.OPEN_EXPERIENCE_V_THREE_VIEW,true)
- self:Fire(VipModel.OPEN_EXPERIENCE_V_THREE_EX_VIEW,nil,true)
- --打开引导界面
- local show_vos = {{
- type = 1,
- is_out_res=false,
- saying = "恭喜晋升VIP3,相应特权现已全部激活!",
- ignore_fly=false,
- show_time=10,--持续时间
- name = "VIP3",
- winId = 450,
- subId = 22,
- }}
- local view = NewFuncOpenView.New()
- view:Open(show_vos)
- end
|