function ad_welfare(local_AD_data,pagecode) { //三期最终有效福利广告广告计划、材料数据集合 var ad_welfare_data = {}; var welfare_plans = local_AD_data.welfare_plans || ''; var welfare_materials = local_AD_data.welfare_materials || ''; //福利广告点击次数的缓存; var clickcount = localStorage.getItem('clickcounts') || 0; localStorage.setItem('clickcounts',clickcount); //用户奇偶性广告计划为空不渲染福利广告判断; if(typeof Array.isArray != "function") { Array.isArray = function(obj){ return Object.prototype.toString.call(obj) == "[object Array]"; } } if(!welfare_plans||!welfare_materials||Array.isArray(welfare_plans)||Array.isArray(welfare_materials)){ return ; } var nowTime = parseInt(new Date().getTime()/1000); var Welfare_PLANS = Welfare_PLANSobj(welfare_plans,nowTime); //随机广告计划 var lastWelfare_plans = roundwelfare(Welfare_PLANS); //lastWelfare_plans 最终执行的随机广告计划合并到ad_welfare_data.welfare_PLANS中 ad_welfare_data["welfare_PLANS"] = lastWelfare_plans; //todaymaterial 已渲染的素材对象 {id:{id:{}}} var todaymaterial =JSON.parse(localStorage.getItem('todaymaterial'))||{}; // var nowwelfare_materials = [{……},{……}]; 无渲染的素材数组; var nowwelfare_materials = norepeat_materials_arr(welfare_materials,todaymaterial,nowTime); //有效期内素材数组按照权重值高到低排序 nowwelfare_materials.sort(HsortL); //广告计划和素材在ad_welfare_data的welfare_plans和welfare_materials属性中 ad_welfare_data["welfare_MATERIALS"] = HL_materials(ad_welfare_data,nowwelfare_materials); var ad_welfare_dataplanskey = Object.keys(ad_welfare_data.welfare_PLANS)[0]; var plans_obj = ad_welfare_data.welfare_PLANS; //每天点击过一次福利广告发的时间戳; var onlyclicktime = localStorage.getItem('onlyclicktime')||0; //记录有效广告素材的个数 var Welfare_PLANS_length = nowwelfare_materials.length+Object.keys(todaymaterial).length; //当下发次数大于素材个数时,缓存的素材个数达到素材个数,清空缓存; if(Object.keys(todaymaterial).length==Welfare_PLANS_length){ localStorage.removeItem('todaymaterial'); var local_AD_data = JSON.parse(localStorage.getItem('local_AD_data')); ad_welfare(local_AD_data,pagecode); } var plans_id = Object.keys(plans_obj)[0]; //后台需要5次容错率 if(clickcount >=parseInt(plans_obj[plans_id].day_receive_num)+5 ){ return ; } // plans_obj[plans_id].day_receive_num+5 //渲染广告素材 welfareshow(ad_welfare_data,pagecode, plans_obj,onlyclicktime,todaymaterial,clickcount,Welfare_PLANS_length); } function Welfare_PLANSobj(welfare_plans,nowTime){ //对比有效时间和权重值,筛选当前执行的广告计划 var welfare_plansIndex = Object.keys(welfare_plans); var nowWelfare_plans = {}; var nowWeight = 0; for(var i = 0;inowWeight){ //权重值最大的数值 nowWeight = welfare_plans[welfare_plansKey].weight; } }else{ continue; } } //没有有效广告结束函数执行 var nowWelfare_planskeys = Object.keys(nowWelfare_plans); if(nowWelfare_planskeys.length==0){ return ; } //权重值都最高的广告计划有可能多个; //当nowWelfare_plans中有1个或以的上广告计划 if(nowWelfare_planskeys.length!=0){ var Welfare_PLANSobj = {}; for(var j=0;j得出按权重值建字典数组; function HL_materials(ad_welfare_data,nowwelfare_materials){ var sort_welfare_materials = {}; for(var k=0;knew Date(new Date().toLocaleDateString()).getTime()){ localStorage.setItem("lastshowtime",new Date().getTime()); lastshowtime = localStorage.getItem("lastshowtime"); }else{ localStorage.removeItem('todaymaterial'); var local_AD_data = localStorage.getItem('local_AD_data'); ad_welfare(local_AD_data,pagecode); } //此时渲染的目标素材 var TagMaterial = roundmaterial(ad_welfare_data.welfare_MATERIALS); if(Object.keys(TagMaterial)<1){ return ; } var plans_id = Object.keys(plans_obj)[0]; var materal_id = Object.keys(TagMaterial)[0]; var link_url = TagMaterial[materal_id].link_game; if(lastshowtime>new Date(new Date().toLocaleDateString()).getTime()){ if(clickcount >parseInt(plans_obj[plans_id].day_receive_num)+5 || materal_id in todaymaterial ){ return ; } } switch(pagecode){ //最近阅读 case 'recent_read':read_render(plans_obj,TagMaterial,plans_id,materal_id,link_url,onlyclicktime,clickcount,Welfare_PLANS_length);break; //签到 case 'my':my_sign(plans_obj,TagMaterial,plans_id,materal_id,link_url,onlyclicktime,clickcount,Welfare_PLANS_length);break; //章节页 case 'book_reading':reading_book(plans_obj,TagMaterial,plans_id,materal_id,link_url,onlyclicktime,clickcount,Welfare_PLANS_length);break; //充值 case 'charge':changepay(plans_obj,TagMaterial,plans_id,materal_id,link_url,onlyclicktime,clickcount,Welfare_PLANS_length);break; } } function read_render(plans_obj,TagMaterial,plans_id,materal_id,link_url,onlyclicktime,clickcount,Welfare_PLANS_length){ //根据具体广告素材渲染【最近阅读页】 var readposition = 26; $(".ad_welfare").show(); _sendLogShow(plans_id,readposition,materal_id); $('.ad_welfare').unbind().bind('click',function(e){ e.stopPropagation(); $(this).hide(); welfare_after(TagMaterial,plans_obj,plans_id,materal_id,readposition,onlyclicktime,link_url,clickcount,Welfare_PLANS_length); }) } function my_sign (plans_obj,TagMaterial,plans_id,materal_id,link_url,onlyclicktime,clickcount,Welfare_PLANS_length){ //根据具体广告素材渲染【签到页面】 var readposition = 24; $(".ad_welfare").hide().show(); _sendLogShow(plans_id,readposition,materal_id); $('.ad_welfare').unbind().bind('click',function(e){ e.stopPropagation(); $(".ad_welfare").hide(); welfare_after(TagMaterial,plans_obj,plans_id,materal_id,readposition,onlyclicktime,link_url,clickcount,Welfare_PLANS_length) }) } //点击后执行……(toast显示,) function welfare_after(TagMaterial,plans_obj,plans_id,materal_id,readposition,onlyclicktime,link_url,clickcount,Welfare_PLANS_length){ //点击次数增1; // debugger; ++clickcount; localStorage.removeItem('clickcounts',clickcount); localStorage.setItem('clickcounts',clickcount); $(".ad_welfare_toast").text("参与互动活动后,可自动领取"+plans_obj[Object.keys(plans_obj)[0]].give_kandian+"书币"); $(".ad_welfare_toast").show(); _sendLogClick(plans_id,readposition,materal_id); todaymaterialupdate(TagMaterial,plans_obj,plans_id,materal_id,clickcount,Welfare_PLANS_length); onlyclickajax(onlyclicktime); setTimeout(function(){ $(".ad_welfare_toast").hide(); location.href = link_url + "?uid=" + simpleAD.userId + "&channel_id=" + simpleAD.channelId + "&ad_plan=" + plans_id; },3000); } function reading_book(plans_obj,TagMaterial,plans_id,materal_id,link_url,onlyclicktime,clickcount,Welfare_PLANS_length){ //根据具体广告素材渲染【章节页】 if(parseInt(window.ad_chapter_index)15*60*1000){ $(".ad_welfare").hide().show(); }else{ return ; } //10秒后关闭弹窗 var timeout = setTimeout(function(){ $(".ad_welfare").hide(); //记录关闭后的banner时间戳 localStorage.removeItem("bannerouttime"); localStorage.setItem("bannerouttime",new Date().getTime()); },10000); _sendLogShow(plans_id,readposition,materal_id); $('.ad_welfareclick,.ad_welfare').unbind().bind('click',function(e){ e.stopPropagation(); localStorage.removeItem("bannerouttime"); localStorage.setItem("bannerouttime",new Date().getTime()); $('.ad_welfare').hide(); welfare_after(TagMaterial,plans_obj,plans_id,materal_id,readposition,onlyclicktime,link_url,clickcount,Welfare_PLANS_length) }) } function changepay (plans_obj,TagMaterial,plans_id,materal_id,link_url,onlyclicktime,clickcount,Welfare_PLANS_length){ //根据具体广告素材渲染【充值页面】 var readposition = 25; var imgsr = plans_obj[plans_id].recharge_pop_icon || ''; if(!imgsr){ $(".ad_welfaregload").hide(); return ; } $(".ad_welfaregload").hide().show(); $('.ad_welfareclick')[0].src =imgsr; _sendLogShow(plans_id,readposition,materal_id); $(".closealert").unbind().bind('click',function(e){ e.stopPropagation(); $(".ad_welfaregload").hide(); }) $('.ad_welfareclick').unbind().bind('click',function(e){ e.stopPropagation(); $(".ad_welfaregload").hide(); welfare_after(TagMaterial,plans_obj,plans_id,materal_id,readposition,onlyclicktime,link_url,clickcount,Welfare_PLANS_length) }) } //一天内上报第一次点击福利广告的uid、channel_id; function onlyclickajax(onlyclicktime){ if(onlyclicktime>new Date(new Date().toLocaleDateString()).getTime()){ return ; }else{ //判断来到第二天福利广告的点击次数清零,以及发送一次请求报点; localStorage.removeItem('clickcounts'); localStorage.setItem('clickcounts',1); $.ajax({ type: 'POST', url: "/api/aduserapi/welfaredot", data: { uid: simpleAD.userId, channel_id: simpleAD.channelId }, success: function (res) { if(res.code == 1 ){ localStorage.removeItem("onlyclicktime"); localStorage.setItem("onlyclicktime",new Date().getTime()); } }, error: function (error) { } }) } } //一天内展示不重复的素材次数 function todaymaterialupdate(TagMaterial,plans_obj,plans_id,materal_id,clickcount,Welfare_PLANS_length){ var todaymaterial =JSON.parse(localStorage.getItem('todaymaterial')) || {} ; if(Object.keys(todaymaterial).length<=0){ $.extend(todaymaterial,TagMaterial); localStorage.setItem("todaymaterial",JSON.stringify(todaymaterial)); localStorage.removeItem('lastshowtime'); localStorage.setItem('lastshowtime',new Date().getTime()); } // Object.keys(todaymaterial).length{return b-a}); var targetmaterial = {} for(var i=0;i