diff --git a/Gemfile b/Gemfile index 39a181d05..80c0e1c2a 100644 --- a/Gemfile +++ b/Gemfile @@ -50,16 +50,16 @@ gem 'elasticsearch-model' gem 'elasticsearch-rails' #rails 3.2.22.2 bug - # gem "test-unit", "~>3.0" + gem "test-unit", "~>3.0" ### profile - # gem 'oneapm_rpm' + gem 'oneapm_rpm' group :development do gem 'grape-swagger' gem 'better_errors', '~> 1.1.0' # gem "query_reviewer" - # gem 'rack-mini-profiler', '~> 0.9.3' + gem 'rack-mini-profiler', '~> 0.9.3' if RUBY_PLATFORM =~ /w32/ gem 'win32console' end diff --git a/app/api/mobile/apis/new_comment.rb b/app/api/mobile/apis/new_comment.rb index e5e42e624..6d46b2f59 100644 --- a/app/api/mobile/apis/new_comment.rb +++ b/app/api/mobile/apis/new_comment.rb @@ -23,8 +23,22 @@ module Mobile refresh_token = session[:refresh_token] if access_token.present? && refresh_token.present? - refreshinfo = Wechat.api.web_refresh_access_token(refresh_token) - + begin + refreshinfo = Wechat.api.web_refresh_access_token(refresh_token) + rescue + info = Wechat.api.web_access_token(session[:wechat_code]) + openid =info["openid"] + access_token =info["access_token"] + if access_token + session[:access_token] = access_token + end + refresh_token = info["refresh_token"] + if refresh_token + session[:refresh_token] = refresh_token + end + refreshinfo = Wechat.api.web_refresh_access_token(refresh_token) + end + access_token = refreshinfo["access_token"] refresh_token = refreshinfo["refresh_token"] session[:access_token] = access_token @@ -42,9 +56,16 @@ module Mobile user = us.register ({:login=>openid, :mail=>"#{openid}@163.com", :password=>"12345678", :password_confirmation=>"12345678", :should_confirmation_password => true}) - user.update_attributes(:lastname=>name) - raise user.errors.full_messages.first if user.new_record? + user.update_attributes(:lastname=>name) + #自动激活 + if Setting.self_registration != '3' + user.activate + user.last_login_on = Time.now + if user.save + UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0) + end + end UserWechat.create!( openid: openid, user: user, diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 62376dc6e..764dc957f 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -47,7 +47,7 @@ module Mobile end ws = WechatService.new - ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台。", user.login+"("+user.show_name+")", Time.now.strftime("%Y-%m-%d")) + ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台。", user.show_name+"("+user.login+")", Time.now.strftime("%Y-%m-%d")) present status: 0, message: '您已成功绑定Trustie平台' end @@ -68,6 +68,15 @@ module Mobile user = us.register params.merge(:password_confirmation => params[:password], :should_confirmation_password => true) raise user.errors.full_messages.first if user.new_record? + #自动激活 + if Setting.self_registration != '3' + # user = automatically_register(user) + user.activate + user.last_login_on = Time.now + if user.save + UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0) + end + end if uw && !uw.real? user.update_attributes(:lastname=>uw.user[:lastname]) @@ -80,7 +89,7 @@ module Mobile end ws = WechatService.new - ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台。", user.login+"("+user.show_name+")", Time.now.strftime("%Y-%m-%d")) + ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台。", user.show_name+"("+user.login+")", Time.now.strftime("%Y-%m-%d")) present :data, user, with: Mobile::Entities::User present :status, 0 end diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index ced8854d9..6ccfbcce1 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -386,7 +386,7 @@ class WechatsController < ActionController::Base user: user ) ws = WechatService.new - ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台!", user.login+"("+user.show_name+")", format_time(Time.now)) + ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台!", user.show_name+"("+user.login+")", format_time(Time.now)) render :json => {status:0, msg: "绑定成功"} rescue Exception=>e render :json => {status: -1, msg: e.message} @@ -415,8 +415,11 @@ class WechatsController < ActionController::Base unless open_id render 'wechats/open_wechat', layout: nil and return end + + logger.info "user_activities!!!!!!!!!!!!!!" + logger.info params - # unless user_binded?(open_id) + # unless (user_binded?(open_id) || params[:state] == "invite_code" || params[:state] == "project_invite_code" || params[:state] == "blog_comment" || params[:state] == "course_notice" || params[:state] == "project_discussion" || params[:state] == "course_discussion" || params[:state] == "homework" || params[:state] == "issues" || params[:state] == "journal_for_message") # @path = '/login' # else if params[:state] == 'myclass' @@ -470,7 +473,11 @@ class WechatsController < ActionController::Base def user_binded?(openid) uw = UserWechat.where(openid: openid).first - uw && uw.bindtype == 0 + if uw && uw.bindtype == 0 + uw + else + nil + end end def current_url diff --git a/app/models/user_wechat.rb b/app/models/user_wechat.rb index 8328a47df..c63411ab3 100644 --- a/app/models/user_wechat.rb +++ b/app/models/user_wechat.rb @@ -22,5 +22,6 @@ class UserWechat < ActiveRecord::Base Comment.where(author_id: old_user).update_all(author_id: u.id) Message.where(author_id: old_user).update_all(author_id: u.id) BlogComment.where(author_id: old_user).update_all(author_id: u.id) + UserActivity.where(user_id: old_user).update_all(user_id: u.id) end end diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html index f93168206..e720c90c9 100644 --- a/public/assets/wechat/class.html +++ b/public/assets/wechat/class.html @@ -31,7 +31,7 @@
授课老师
- {{teacher.name}} + {{teacher.name}} 管理员 助教 @@ -39,7 +39,7 @@
- {{reviewer.name}} + {{reviewer.name}} 待审批 ▶
@@ -47,7 +47,7 @@
我的同学
- {{student.name}} + {{student.name}}
diff --git a/public/assets/wechat/project.html b/public/assets/wechat/project.html index 3af3ce9c6..733f0899d 100644 --- a/public/assets/wechat/project.html +++ b/public/assets/wechat/project.html @@ -108,30 +108,30 @@
管理人员({{project_master_members.length}})
- {{master.user.real_name == "" ? master.user.name : master.user.real_name }} + {{master.user.real_name == "" ? master.user.name : master.user.real_name }}
- {{user.real_name == "" ? user.name : user.real_name }} + {{user.real_name == "" ? user.name : user.real_name }} 待审批 ▶
开发人员({{project_develop_members.length}})
- {{develop.user.real_name == "" ? develop.user.name : develop.user.real_name}} + {{develop.user.real_name == "" ? develop.user.name : develop.user.real_name}}
- {{user.real_name == "" ? user.name : user.real_name}} + {{user.real_name == "" ? user.name : user.real_name}} 待审批 ▶
报告人员({{project_report_members.length}})
- {{report.user.real_name == "" ? report.user.name : report.user.real_name}} + {{report.user.real_name == "" ? report.user.name : report.user.real_name}}
diff --git a/public/javascripts/wechat/controllers/invite_code.js b/public/javascripts/wechat/controllers/invite_code.js index 512e506e8..50c14c0c3 100644 --- a/public/javascripts/wechat/controllers/invite_code.js +++ b/public/javascripts/wechat/controllers/invite_code.js @@ -13,7 +13,7 @@ app.controller('InviteCodeController', ['$scope','$http', '$routeParams','config console.log(response.data); vm.course = response.data.data; - var desc = "您的好友邀请您加入班级:\n"+vm.course.name+"\n和小伙伴一起踏上便捷的学习之旅吧!"; + var desc = "您的好友邀请您加入班级:【"+vm.course.name+"】,和小伙伴一起踏上便捷的学习之旅吧!"; var link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+window.g_appid+ "&redirect_uri="+window.g_localhost+"/wechat/user_activities?id="+vm.course.id+ "&response_type=code&scope=snsapi_base&state=invite_code&connect_redirect=1#wechat_redirect"; diff --git a/public/javascripts/wechat/controllers/project_invite_code.js b/public/javascripts/wechat/controllers/project_invite_code.js index 8058797f1..a68bf430b 100644 --- a/public/javascripts/wechat/controllers/project_invite_code.js +++ b/public/javascripts/wechat/controllers/project_invite_code.js @@ -13,7 +13,7 @@ app.controller('ProjectInviteCodeController', ['$scope','$http', '$routeParams', console.log(response.data); vm.project = response.data.data; - var desc = "您的好友邀请您加入项目:\n"+vm.project.name+"\n和小伙伴一起踏上便捷的研发之旅吧!"; + var desc = "您的好友邀请您加入项目:【"+vm.project.name+"】,和小伙伴一起踏上便捷的研发之旅吧!"; var link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+window.g_appid+ "&redirect_uri="+window.g_localhost+"/wechat/user_activities?id="+vm.project.id+ "&response_type=code&scope=snsapi_base&state=project_invite_code&connect_redirect=1#wechat_redirect"; diff --git a/public/javascripts/wechat/others/factory.js b/public/javascripts/wechat/others/factory.js index e6ffcf76c..1c40c9c10 100644 --- a/public/javascripts/wechat/others/factory.js +++ b/public/javascripts/wechat/others/factory.js @@ -1,466 +1,466 @@ -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, 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() - }; - //回复按钮禁用 - 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); - } - - //保证内外回复数一致 - 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 == id){ - activities[i].reply_count += 1; - break; - } - } - for(var i in course_activities){ - if(course_activities[i].act_id == id){ - course_activities[i].reply_count += 1; - break; - } - } - for(var i in project_activities){ - if(project_activities[i].act_id == 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); - //--------------分享内容定制------------- - 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(/<[^>]+>/g,"").replace(/\s*/g,"").replace(/ /g,""); - } - - if(response.data.data.description){ - desc = response.data.data.description.replace(/<[^>]+>/g,"").replace(/\s*/g,"").replace(/ /g,""); - } - - 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){ - console.log(data.comment); - addCommonReply(args.id, args.replyType, data,args, 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.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}; -}]); +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, 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() + }; + //回复按钮禁用 + 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); + } + + //保证内外回复数一致 + 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 == id){ + activities[i].reply_count += 1; + break; + } + } + for(var i in course_activities){ + if(course_activities[i].act_id == id){ + course_activities[i].reply_count += 1; + break; + } + } + for(var i in project_activities){ + if(project_activities[i].act_id == 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); + //--------------分享内容定制------------- + 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(/<[^>]+>/g,"").replace(/\s*/g,"").replace(/ /g,""); + } + + if(response.data.data.description){ + desc = response.data.data.description.replace(/<[^>]+>/g,"").replace(/\s*/g,"").replace(/ /g,""); + } + + 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){ + console.log(data.comment); + addCommonReply(args.id, args.replyType, data,args, 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.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}; +}]);