(function(){ angular.module("app.manage") .controller("appCtrl",["$rootScope","$scope","HttpService","ToolService","UtilService","$state","$timeout",appCtrl]) .controller("appDetailCtrl",["$scope","$rootScope","HttpService","ToolService","UtilService","$q","$state","$stateParams","$filter","$timeout",appDetailCtrl]); var isLog = false; //标识是不是从列表直接进入到调试界面 function appCtrl($rootScope,$scope,HttpService,ToolService,UtilService,$state,$timeout){ $scope.isDemo = ToolService.isDemoUser(); $scope.$on('flipinfo',function(e,msg){ $scope.flipPage = msg; }); $scope.specialsAppkey = [ "e31caee07ebedf8c172267e73204802f", "f4c6764d10bec9a3c4bd4f79a442a947", "022da4f8bd53ac212141bd7fdfa9532d", "5eb29a7e239537f4bedef93f8289d1c6", "e0b3000ebd3f54b791a405f68d3e520c"]; $scope.doRemove = function(id){ $scope.delstatus = true; $scope.delId = id; } $scope.removeInfo = function(){ var removePM = HttpService.deleteInfo("mng/app/delete/"+$scope.delId); ToolService.showLoading(); removePM.then(function(data){ ToolService.hideLoading(); $scope.delstatus = false; ToolService.showTips("删除成功") $scope.$emit("f5Applist",true); $rootScope.operSubmitData("删除"); }); } $timeout(function(){ var clipboard = new Clipboard('.copyBtn'); clipboard.on('success', function(e) { $scope.$apply(function(){ ToolService.showTips("复制成功"); }); }); clipboard.on('error', function(e) { $scope.$apply(function(){ ToolService.showTips("复制失败"); }); }); },200); //启用停用 $scope.onOff = function(info){ var url = "mng/app/enable/"+info.id,tipmsg = "启用成功"; if(info.regedbutton){ url = "mng/app/forbidden/"+info.id; tipmsg = "停用成功"; } var userPM = HttpService.putInfo(url,{}); ToolService.showLoading(); userPM.then(function(data){ ToolService.hideLoading(); ToolService.showTips(tipmsg) $scope.$emit("f5Applist",true); $rootScope.operSubmitData(tipmsg.slice(0,2)); }); } $scope.limitCount = 9; $scope.isShow = function() { if(!$scope.appAlllistInfo){ return false; } $scope.resultList = $scope.appAlllistInfo; if($scope.resultList && $scope.resultList.length > $scope.limitCount){ return true; }else{ return false; } } var panelH = $(".rightWrap"); $(".rightWrap").scroll(function(event){ if(panelH.get(0).scrollHeight<=panelH.height())return; var _this = this; $timeout(function() { if($scope.isShow() && $scope.filterResult.length>0){ var viewH =$(_this).height(),//可见高度 contentH =$(_this).get(0).scrollHeight,//内容高度 scrollTop =$(_this).scrollTop();//滚动高度 if(scrollTop>=contentH -viewH){ //到达底部100px时,加载新内容 $scope.getMore(); } } }, 10); }); $(".rightWrap").on('mousewheel', function(event){ if(panelH.get(0).scrollHeight>panelH.height() || event.originalEvent.deltaY<=0)return; if($scope.isShow() && $scope.filterResult.length>0){ $timeout(function() { $scope.getMore(); }, 10); } }); $scope.getMore = function(){ $scope.limitCount += 9; } $scope.gopage = function(id,flag){ if(flag){ isLog = true; } else{ isLog = false; } if(angular.isDefined(id)){ $state.go("collect.appDetail",{aid:id}); }else{ $state.go("collect.appDetail"); } } $scope.goReport = function(info,e){ if($(e.target).hasClass('copyBtn')) return; $rootScope.isweb = info.platform == 'H5'; $('.rightWrap').unbind("scroll"); $('.rightWrap').unbind("mousewheel"); $scope.$emit("mngappTo",info.id); var url = $rootScope.firstMeau.substring(1).replace('/','.'); $state.go(url); } } function appDetailCtrl($scope,$rootScope,HttpService,ToolService,UtilService,$q,$state,$stateParams,$filter,$timeout){ var infoId = $scope.infoId = $scope.id = $stateParams.aid; $scope.isLog = isLog; if(!infoId){ $scope.tagType = 'game'; } $scope.typeinit = '请选择游戏类型'; $scope.themeinit = '请选择游戏题材'; $scope.styleinit = '请选择美术风格'; $scope.firstinit = '请选择应用分类'; $scope.secondinit = '应用分类-细分分类'; var boundOldID = "",oldName = ""; var gameTypeId = 38; var tagPM = HttpService.getInfo("/dic/findbycampaign"); tagPM.then(function(data){ $scope.tagList = data; init(); }); if(!$scope.isLog){ var typePM = HttpService.getInfo("mng/app/find/getcategorys"); typePM.then(function(data){ var typeArr = [],gameArr = []; data.filter(function(item){ item.name = item.categoryname; if(item.isgame == 1){ gameArr.push(item); }else{ typeArr.push(item); } }); $scope.typeList = typeArr; $scope.gameList = gameArr; $scope.appGenreInit = $scope.typeList[0].categoryid; $scope.gameGenreInit = $scope.gameList[0].categoryid; }); } $scope.downloadsdk = function(){ $rootScope.operSubmitData("查看并下载SDK"); } $scope.$on("appGenre",function(e,msg){ $scope.showGame = msg.info.categoryid == gameTypeId; $scope.appGenre = msg.info.categoryid; $scope.appGenreName = msg.info.categoryname; }); $scope.$on("gameGenre",function(e,msg){ $scope.gameGenre = msg.info.categoryid; $scope.gameGenreName = msg.info.categoryname; }); $scope.$on("typeIds",function(e,msg){ $scope.typeIds = msg.info; }); $scope.$on("themeIds",function(e,msg){ $scope.themeIds = msg.info; }); $scope.$on("styleIds",function(e,msg){ $scope.styleIds = msg.info; }); $scope.$on("firstId",function(e,msg){ $scope.firstId = msg.info.itemCode; $scope.tagList.app.filter(function(item){ if($scope.firstId == item.itemCode){ $scope.secondList = item.child; } }); }); $scope.$on("secondId",function(e,msg){ $scope.secondId = msg.info.itemCode; }); $scope.ckSync = function(){ $scope.sync = !$scope.sync; if($scope.sync == true){ ToolService.showTips("所有推广活动的下载地址将同步更新。",2000); } } var init = function(){ if(infoId!=null){ if($scope.isLog){ $scope.stepflag = 3; } else{ $scope.stepflag = 1; } var editPM = HttpService.getInfo("mng/app/find/"+infoId); ToolService.showLoading(); editPM.then(function(data){ $scope.platform = data.platform; $scope.name = oldName = data.name; $scope.url = data.url; $scope.appkey = data.appkey; // $scope.sync = data.sync; $scope.sync = false; $scope.bundleid = boundOldID = data.bundleid; $scope.appTagList = data.appTagList; var stemp = [], ttemp = [], etemp = []; if(data.tagType=="02"){ $scope.appTagList.filter(function(item) { if(item.parentTagId == $scope.tagList.game[0].itemCode){ stemp.push(item.tagId); $scope.typeinitIds = stemp.join(','); $scope.typeIds = stemp.join(','); }else if(item.parentTagId == $scope.tagList.game[1].itemCode){ ttemp.push(item.tagId); $scope.themeinitIds = ttemp.join(','); $scope.themeIds = ttemp.join(','); }else if(item.parentTagId == $scope.tagList.game[2].itemCode){ etemp.push(item.tagId); $scope.styleinitIds = etemp.join(','); $scope.styleIds = etemp.join(','); } }); $scope.tagType = "game"; }else if(data.tagType=="04"){ $scope.secondinitId = $scope.appTagList[0].tagId; $scope.tagList.app.filter(function(p) { if($scope.appTagList[0].parentTagId == p.itemCode){ $scope.firstinitId = p.itemCode; } }); $scope.tagType = "app"; }else if(data.tagType=="00"){ $scope.tagType = "test"; } }); if($scope.stepflag == 1){ $q.all([typePM,editPM]).then(function(data){ ToolService.hideLoading(); var info = data[1]; $scope.appGenreInit = info.appGenre; $scope.gameGenreInit = info.gameGenre; }); } }else{ $scope.stepflag = 1; $scope.platform = 'iOS'; $scope.sync = false; } } $scope.nameHas = false; $scope.exixtName = function(){ if(!$scope.tip){ $scope.tip = {}; } if($scope.judgeNameChange(oldName,$scope.name)){ ToolService.showLoading(); var existPM = HttpService.getInfo("mng/app/validname",{name:$scope.name}); existPM.then(function(data){ ToolService.hideLoading(); if(data==true){ $scope.tip.name = { status:true, txt : "名称已存在" }; $scope.nameHas = true; } else{ $scope.tip.name = { status:false }; $scope.nameHas = false; } }); } else{ $scope.tip.name = { status:false }; $scope.nameHas = false; } } $scope.bundleHas = false; $scope.existBundleid = function(flag){ if(!$scope.tip){ $scope.tip = {}; } if($scope.judgeNameChange(boundOldID,$scope.bundleid)){ ToolService.showLoading(); var existPM = HttpService.getInfo("mng/app/valid",{name:$scope.bundleid}); existPM.then(function(data){ ToolService.hideLoading(); if(data==true){ $scope.tip.bundleid = { status:true, txt : "bundleid已存在" }; $scope.bundleHas = true; } else{ $scope.tip.bundleid = { status:false }; $scope.bundleHas = false; } }); } else{ $scope.tip.bundleid = { status:false }; $scope.bundleHas = false; } } $scope.save = function(){ if($scope.nameHas || $scope.bundleHas){ return false; } var appTagList = [], isnull = false, tag = "00"; if($scope.tagType == 'game'){ $scope.typenull = !$scope.typeIds; $scope.themenull = !$scope.themeIds; $scope.stylenull = !$scope.styleIds; if($scope.typenull || $scope.themenull || $scope.stylenull){ isnull = true; }else{ tag = "02"; $scope.typeIds.split(",").filter(function(item){ appTagList.push({tagId:item}); }); $scope.themeIds.split(",").filter(function(item){ appTagList.push({tagId:item}); }); $scope.styleIds.split(",").filter(function(item){ appTagList.push({tagId:item}); }); } } else if($scope.tagType == 'app'){ $scope.firstnull = !$scope.firstId; if($scope.firstId){ $scope.secondnull = !$scope.secondId; } if($scope.firstnull || $scope.secondnull){ isnull = true; }else{ tag = "04"; $scope.secondId.split(",").filter(function(item){ appTagList.push({tagId:item}); }); } } var par = { platform: $scope.platform, name: $scope.name, appGenre: $scope.appGenre, sync: $scope.sync, url: $scope.url, appTagList: appTagList, tagType: tag }; if($scope.appGenre == gameTypeId){ par.gameGenre = $scope.gameGenre; }else{ par.gameGenre = -1; } var verPar = { name: { key: 'nameFormat', val: $scope.name }, url: { key: 'url', val: $scope.url, txt:"以http://或https://开头的合法url" } }; if($scope.platform=='iOS'){ par["bundleid"] = $scope.bundleid; verPar.bundleid = { key : "num", min : 9, max : 10, val : $scope.bundleid, txt : '请输入9-10位数字' } } $scope.tip = formJudge(verPar); if ($scope.tip.succ != true) { ToolService.showTips($scope.formTipMsg); return false; } var savePM = null,txtTips = "添加成功"; if(infoId!=null){ par.id = infoId; savePM = HttpService.putInfo("mng/app/update",par); txtTips = "修改成功"; }else{ savePM = HttpService.postInfo("mng/app/create",par); } ToolService.showLoading(); savePM.then(function(data){ if(infoId!=null){ ToolService.hideLoading(); ToolService.showTips(txtTips); $scope.cancel(); }else{ $scope.$emit("f5Applist",1); $scope.id = data.id; $scope.name = data.name; $scope.appkey = data.appkey; ToolService.hideLoading(); $scope.stepflag = 2; $rootScope.operSubmitData("新建"); } }); } $scope.cancel = function(){ $scope.$emit("f5Applist",true); $state.go("collect.app"); } $scope.changeStep = function(){ if($scope.stepflag == 3){ $scope.stepflag = 2; } } $scope.deviceList = [{'id':1,name:"全部设备"}]; $scope.deviceInit = $scope.deviceList[0].id; $scope.$on("deviceId",function(e,msg){ if(msg.info.id == 1){ $scope.deviceTxt = ""; } else{ $scope.deviceTxt = msg.info.id; } }); var getV = function(v){ if(UtilService.isNullStr(v)){ return ""; } else{ return v; } } $scope.queryLogInfo = function(){ $scope.logFlag = 0; ToolService.showLoading(); var testPM = HttpService.getInfo("mng/app/debug/event/list/"+$scope.id), logPM = HttpService.getInfo("mng/app/debug/log/list/"+$scope.id), totalPM = HttpService.getInfo("mng/app/debug/device/list/"+$scope.id); $scope.hasZeroEvt = 0; $q.all([testPM,logPM,totalPM]).then(function(data){ $scope.testInfos = data[0]; $scope.testInfos.filter(function(item){ if($scope.platform=="H5"){ if(['pageview'].indexOf(item.eventName)>-1 && item.eventNumber==0){ $scope.hasZeroEvt ++; } }else{ if(['startup','install'].indexOf(item.eventName)>-1 && item.eventNumber==0){ $scope.hasZeroEvt ++; } } }); var logs = data[1]; logs.map(function(item){ item.xcontext = JSON.parse(item.xcontext); item.xcontext.osname = getV(item.xcontext._ryos || item.xcontext._os) + '' + getV(item.xcontext._ryosversion); item.xcontext.channel = item.xcontext._campaignid || item.xcontext.channelid; item.deviceId = item.xcontext._deviceid; item._network_type = item.xcontext._network_type || item.xcontext._network; item._model = item.xcontext._model || item.xcontext._devicetype; }); $scope.logInfos = logs; $scope.totalInfos = data[2]; var devList = [{'id':1,name:"全部设备"}]; $scope.totalInfos.filter(function(item){ devList.push({id:item.deviceId,name:item.deviceId}); }); $scope.deviceList = devList; $rootScope.operSubmitData("下一步"); ToolService.hideLoading(); }); } $scope.getPlatClass = function(plat){ var plat = $filter("lowercase")(plat); return {'ios':'apple','android':'android','h5':'web'}[plat]; } $scope.nextStep = function(){ $scope.cancel(); // $scope.stepflag = 3; // $scope.queryLogInfo(); } $scope.lookEvents = function(info){ $scope.eventDetails = [ {name:'时间',key:'xwhen'}, {name:'设备ID',key:'_deviceid',second:true}, {name:'APPKEY',key:'',value:$scope.appkey}, {name:'应用名称',key:'',value:$scope.name}, {name:'分包渠道',key:'channel',second:true}, {name:'系统',key:'osname',second:true}, {name:'机型',key:'_model'}, {name:'分辨率',key:'_resolution',second:true}, {name:'网络',key:'_network_type'}, {name:'SDK版本',key:'_lib_version',second:true}, {name:'事件ID',key:'xwhat',isevent:true}, {name:'事件名称',key:'eventName'} ]; $scope.curEvtLogInfo = info; $scope.logFlag = 1; ToolService.showAlp(); angular.element(document).on("click",function(){ $scope.$apply(function(){ $scope.hideDetails(); }); }); } $scope.commonParams = null; $scope.lookParams = function(info){ var getEventParams = function(){ var xcontext = $scope.curEvtLogInfo.xcontext; var myparams = []; for(var k in xcontext){ var temp = {'name':k,'value':xcontext[k],sortId:100}; if(k.indexOf("_")==0){ var ccc = $scope.commonParams[k]; if(ccc){ temp.name = ccc.alias; temp.sortId = ccc.sortId; } myparams.push(temp); } else{ myparams.push(temp); } } UtilService.sortArray(myparams); $scope.paramsList = myparams; $scope.logFlag = 2; } if($scope.commonParams != null){ getEventParams(); } else{ ToolService.showLoading(); var evtPM = HttpService.getInfo("mng/app/debug/find/common"); evtPM.then(function(data){ ToolService.hideLoading(); var json = {}; data.filter(function(item){ json[item.param] = item; }); $scope.commonParams = json; getEventParams(); }); } } $scope.hideDetails = function(){ ToolService.hideAlp(); $scope.logFlag = 0; } $scope.finisStep = function(){ ToolService.showLoading(); var finshPM = HttpService.putInfo("mng/app/debug/complete/"+$scope.id); finshPM.then(function(data){ $scope.cancel(); $rootScope.operSubmitData("调试完成"); }); } $timeout(function(){ var clipboard = new Clipboard('.sdkAppid'); clipboard.on('success', function(e) { $scope.$apply(function(){ ToolService.showTips("复制成功"); }); }); clipboard.on('error', function(e) { $scope.$apply(function(){ ToolService.showTips("复制失败"); }); }); },200); } })();