app.factory('alertService', function(){ function Alert(){ this.title = null; this.message = null; this.visible = null; this.cb = null; this.invite = ""; } Alert.prototype.showMessage = function(title, msg, cb){ this.message = msg; this.title = title; this.visible = true; this.cb = cb; this.invite = ""; } Alert.prototype.dismiss = function(){ this.message = null; this.title = null; this.visible = false; this.invite = ""; if(this.cb) {this.cb();} } return { create: function(){ return new Alert(); } } }); app.factory('wx', ['$window', function($window){ var wechat = $window.wx; return wechat; }]); app.factory('auth', ['$http','$routeParams', '$q', 'session', 'config',function($http,$routeParams, $q, session,config){ //是否已经绑定 var isBind = function(){ var defer = $q.defer(); var token = getToken(); if(token && token.length>10){ defer.resolve(token); } else { var code = window.g_code || $routeParams.code || session.get("code"); $http.post( '/wechat/get_bind', {} ///不用传code了,都由服务器来处理 ).then(function(response){ if(response.data.status!=0){ defer.reject(response.data.message); }else { session.save("token", response.data.token); defer.resolve(response.data.token); } }).catch(function(e){ defer.reject(e); }); } return defer.promise; } var getToken = function(){ return 'token';//session.get("token"); } return {get_bind: isBind, token: getToken}; }]); app.factory("session", function(){ return { save: function(key,value){ sessionStorage.setItem(key,value); }, get: function(key){ return sessionStorage.getItem(key); } } }); app.factory('rms', function(){ var _saveStorage = {}; var save = function(key, value){ _saveStorage[key] = value; }; var get = function(key){ return _saveStorage[key]; }; return {save: save, get: get}; }); app.factory('common', ['$http', 'auth', '$routeParams','rms','config','wx','$location', function($http, auth, $routeParams,rms,config,wx,$location){ var addCommonReply = function(id, type, data,args,reply_type, cb){ //先判断有没有绑定 // $http.post( // '/wechat/is_bind', // {} ///不用传code了,都由服务器来处理 // ).then(function(response){ // console.log(response.data); // if(response.data.status != 0){ // $location.path("/login_tip"); // } // }); if(!data.comment || data.comment.length<=0){ return; } var temp = data.comment.replace(/\n/g,'
'); var userInfo = { type: type, content: temp, token: auth.token(), reply_type:reply_type }; //回复按钮禁用 data.disabled = true; $http({ method: 'POST', url: apiUrl+ "new_comment/"+id, data: userInfo }).then(function successCallback(response) { //alert("提交成功"); //数据提交完成,回复按钮启用 console.log(response); if(response.data.status == -1){ console.log("回复失败!"); data.comment = ""; if(response.data.tip == 0){ args.scope.replytip = "您不是该私有班级成员,不能回复"; } else{ args.scope.replytip = "您不是该私有项目成员,不能回复"; } return; } data.disabled = false; if(typeof cb === 'function'){ cb(response.data.subscribe); } var act_id = response.data.act_id; //保证内外回复数一致 activities = rms.get("activities") || []; course_activities = rms.get("course_activities") || []; project_activities = rms.get("project_activities") || []; for(var i in activities){ if(activities[i].act_id == act_id){ activities[i].reply_count += 1; break; } } for(var i in course_activities){ if(course_activities[i].act_id == act_id){ course_activities[i].reply_count += 1; break; } } for(var i in project_activities){ if(project_activities[i].act_id == act_id){ project_activities[i].reply_count += 1; break; } } rms.save("activities",activities); rms.save("course_activities",course_activities); rms.save("project_activities",project_activities); }, function errorCallback(response) { }); }; // var loadCommonData = function(id, type,replytype,page){ // return $http({ // method: 'GET', // url: apiUrl+ type + "/" + id+"?token="+auth.token(), // }) // }; var loadCommonData = function(id, type,replytype,page){ return $http({ method: 'POST', url: apiUrl+ type + "/" + id, dataType: 'jsonp', data:{token:auth.token(),type:replytype,page:page} }) }; var addCommonPraise = function(act){ // act.praise_count += 1; // act.has_praise = true; $http({ method: 'POST', url: apiUrl + "praise/" + act.act_id, data:{token:auth.token(),type:act.act_type} }).then(function successCallback(response) { console.log(response.data); }, function errorCallback(response) { }); }; var decreaseCommonPraise = function(act){ // act.praise_count -= 1; // act.has_praise = false; $http({ method: 'POST', url: apiUrl + "praise/" + act.act_id, data:{token:auth.token(),type:act.act_type} }).then(function successCallback(response) { console.log(response.data); }, function errorCallback(response) { }); }; var init = function(args){ args.scope.replytip = "输入回复内容~"; // args.scope.formData = {comment: ''}; var loadData = function(id,replytype,page){ loadCommonData(id, args.type,replytype,page).then(function successCallback(response) { console.log(response.data); if(response.data.status == -1){ args.loadCallback(response.data); return; } //--------------分享内容定制------------- var tmptile = "分享动态"; var imgUrl = ""; if(response.data.data.title){ tmptile = response.data.data.title; } var tmpname = "匿名用户"; if(response.data.data.user){ tmpname = response.data.data.user.realname; imgUrl = window.g_localhost+response.data.data.user.img_url; } if(response.data.data.author){ tmpname = response.data.data.author.realname; imgUrl = window.g_localhost+response.data.data.author.img_url; } var desc = "" if(response.data.data.content){ desc = response.data.data.content.replace(/<[^>]+>/gi,"").replace(/[\f\n\r\t\v]/gi,"").replace(/ /gi,""); } if(response.data.data.description){ desc = response.data.data.description.replace(/<[^>]+>/gi,"").replace(/[\f\n\r\t\v]/gi,"").replace(/ /gi,""); } if(desc.length > 30){ desc = desc.substring(0,30)+"..."; } var title = tmpname+":"+tmptile; console.log("desc = "+desc); console.log("imgUrl= "+imgUrl); var link = ""; if(args.urlName == "discussion"){ var urlName = response.data.type_name + "_discussion"; link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+window.g_appid + "&redirect_uri="+window.g_localhost+"/wechat/user_activities?id="+response.data.data.act_id+ "&response_type=code&scope=snsapi_userinfo&state="+urlName+"&connect_redirect=1#wechat_redirect"; } else{ link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+window.g_appid + "&redirect_uri="+window.g_localhost+"/wechat/user_activities?id="+response.data.data.act_id+ "&response_type=code&scope=snsapi_userinfo&state="+args.urlName+"&connect_redirect=1#wechat_redirect"; } // if(args.urlName == "discussion"){ // var urlName = response.data.type_name + "_discussion"; // link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d" + // "&redirect_uri=https://test.forge.trustie.net/wechat/user_activities?id="+response.data.data.act_id+ // "&response_type=code&scope=snsapi_base&state="+urlName+"&connect_redirect=1#wechat_redirect"; // } // else{ // link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d" + // "&redirect_uri=https://test.forge.trustie.net/wechat/user_activities?id="+response.data.data.act_id+ // "&response_type=code&scope=snsapi_base&state="+args.urlName+"&connect_redirect=1#wechat_redirect"; // } console.log("link= "+link); wxConfig(title,desc,imgUrl,link); //--------------分享内容定制------------- args.loadCallback(response.data); }, function errorCallback(response) { }); }; loadData(args.id,0,0); args.scope.addReply = function(data,reply_type){ console.log(data.comment); addCommonReply(data.act_id, args.replyType, data,args,reply_type, function(subscribe){ // args.scope.formData = {comment: ''}; if(subscribe == 0){ $location.path("/login_tip"); return; } else{ loadData(args.id,0,0); } if(typeof args.replyCallback === 'function'){ args.replyCallback(); } }); }; args.scope.inputfocus = function(data){ data.notshow = true; }; args.scope.inputblur = function(data){ data.notshow = false; }; args.scope.clickReply = function(act_id,data) { allchidren = data.all_children; for(var i in allchidren){ if(allchidren[i].act_id != act_id ){ allchidren[i].showinput = false; } else{ allchidren[i].showinput = !allchidren[i].showinput; data.notshow = allchidren[i].showinput; } } }; // 动态详情界面点赞与动态界面的数据要同步 保证进入详情点赞后出来显示一致 args.scope.addPraise = function(act){ activities = rms.get("activities") || []; course_activities = rms.get("course_activities") || []; project_activities = rms.get("project_activities") || []; for(var i in activities){ if(activities[i].act_id == act.act_id){ activities[i].praise_count += 1; activities[i].has_praise = true; break; } } for(var i in course_activities){ if(course_activities[i].act_id == act.act_id){ course_activities[i].praise_count += 1; course_activities[i].has_praise = true; break; } } for(var i in project_activities){ if(project_activities[i].act_id == act.act_id){ project_activities[i].praise_count += 1; project_activities[i].has_praise = true; break; } } rms.save("activities",activities); rms.save("course_activities",course_activities); rms.save("project_activities",project_activities); act.praise_count += 1; act.has_praise = true; addCommonPraise(act); }; args.scope.decreasePraise = function(act){ activities = rms.get("activities") || []; course_activities = rms.get("course_activities") || []; project_activities = rms.get("project_activities") || []; for(var i in activities){ if(activities[i].act_id == act.act_id){ activities[i].praise_count -= 1; activities[i].has_praise = false; break; } } for(var i in course_activities){ if(course_activities[i].act_id == act.act_id){ course_activities[i].praise_count -= 1; course_activities[i].has_praise = false; break; } } for(var i in project_activities){ if(project_activities[i].act_id == act.act_id){ project_activities[i].praise_count -= 1; project_activities[i].has_praise = false; break; } } rms.save("activities",activities); rms.save("course_activities",course_activities); rms.save("project_activities",project_activities); act.praise_count -= 1; act.has_praise = false; decreaseCommonPraise(act); }; args.scope.showMoreReply = function(replytype,data){ if(!data.page){ data.page = 1; } else{ data.page = data.page + 1; } loadCommonData(data.id, args.type,replytype,data.page).then(function successCallback(response) { args.loadCallback(response.data); }, function errorCallback(response) { }); }; args.scope.commentreply_path = config.rootPath+ 'templates/comment_reply.html'; }; var wxConfig = function(title,desc,imgUrl,link){ if(title == null || title == ""){ title = 'Trustie创新实践平台'; } if(desc == null || desc == ""){ desc = 'Trustie创新实践平台'; } if(imgUrl == null || imgUrl == ""){ imgUrl = window.g_localhost+'/images/wechat/wx_logo.jpg'; } wx.ready(function(){ wx.onMenuShareTimeline({ title: title, // 分享标题 link: link, // 分享链接 imgUrl: imgUrl, // 分享图标 success: function () { console.log("share successed."); }, cancel: function () { console.log("share canceled."); } }); wx.onMenuShareAppMessage({ title: title, // 分享标题 desc: desc, // 分享描述 link: link, // 分享链接 // imgUrl: '', // 分享图标 imgUrl: imgUrl, // 分享图标 // type: '', // 分享类型,music、video或link,不填默认为link // dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 } }); }); }; var checkLogin = function(){ $http.post( '/wechat/is_bind', {} ///不用传code了,都由服务器来处理 ).then(function(response){ console.log(response.data); if(response.data.status != 0){ $location.path("/login"); return; } }); }; return {init: init, addCommonReply: addCommonReply, loadCommonData: loadCommonData, addCommonPraise: addCommonPraise, decreaseCommonPraise: decreaseCommonPraise, wxConfig: wxConfig, checkLogin: checkLogin}; }]);