diff --git a/app/api/mobile/entities/project.rb b/app/api/mobile/entities/project.rb index 3e1899caa..55ab67be2 100644 --- a/app/api/mobile/entities/project.rb +++ b/app/api/mobile/entities/project.rb @@ -4,7 +4,7 @@ module Mobile expose :name expose :id expose :user_id - # expose :invite_code + expose :invite_code # expose :qrcode expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options| current_user = options[:user] diff --git a/app/services/projects_service.rb b/app/services/projects_service.rb index 3dbf299c2..a98c76839 100644 --- a/app/services/projects_service.rb +++ b/app/services/projects_service.rb @@ -13,7 +13,7 @@ class ProjectsService #显示项目 def show_project(params,current_user) project = Project.find(params[:id]) - # project.generate_invite_code + project.generate_invite_code # project.generate_qrcode project @@ -226,21 +226,61 @@ class ProjectsService message = "" project = Project.find(params[:project_id]) - + user = User.find(params[:user_id]) if project - messages = AppliedProject.where("project_id = ? and user_id=?",project.id,params[:user_id]).first - if messages - apply_user = User.find(params[:user_id]) + applied_messages = AppliedMessage.where(:user_id => current_user.id, :project_id => project.id, :status => 1, :applied_user_id=>user.id,:applied_type => "AppliedProject") + apply_message = applied_messages.first + if apply_message + if user.member_of?(project) + message = "已经是该项目的成员了" + applied_messages.update_all(:status=>7) + else + applied_project = apply_message.applied + ap_role = applied_project.try(:role) + if ap_role + rolename = ap_role == 3 ? :"管理人员" : "开发人员" + if params[:type] == 0 + #同意 + members = [] + user_grades = [] + project_info = [] + members << Member.new(:role_ids => ["#{ap_role}"], :user_id => user.id) + user_grades << UserGrade.new(:user_id => user.id, :project_id => project.id) + role = Role.find(ap_role) + project_info << ProjectInfo.new(:project_id => project.id, :user_id => user.id) if role.allowed_to?(:is_manager) + project.members << members + project.project_infos << project_info + project.user_grades << user_grades unless user_grades.first.user_id.nil? - # + # 添加成功后所有管理员收到的消息状态都要更新 + applied_messages.update_all(:status => 7, :viewed => true) + # 添加成功后,申请人收到消息 + AppliedMessage.create(:user_id => user.id, :applied_type => "AppliedProject", :applied_id => applied_project.id , + :status => 6, :viewed => false, :applied_user_id => current_user.id, :role => applied_project.role, :project_id => applied_project.project_id) + message = "您已同意"+rolename+user.show_name+",加入项目" - status = 0 - else - message = "该申请不存在或已被处理" - end + else + #拒绝 + AppliedMessage.create(:user_id => user.id, :applied_type => "AppliedProject", :applied_id => applied_project.id ,:status => 4, + :viewed => false, :applied_user_id => current_user.id, :role => applied_project.role, :project_id => applied_project.project_id) + + applied_messages.update_all(:status => 5, :viewed => true) + applied_project.delete + + message = "您已拒绝"+rolename+user.show_name+",加入项目" + end + + status = 0 + else + message = "该申请不存在或已被处理" + end + end + else + message = "该申请不存在或已被处理" + end else - message = "该班级不存在或已被删除" + message = "该项目不存在或已被删除" end {:status => status,:message => message} diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index d2dc683fd..afb0d0f8c 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -142,7 +142,7 @@ class WechatService def three_keys_template(openid, template_id, type, id, first, key1, key2, key3, remark="",uid) tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}" if uid && uid != 0 - tmpurl = tmpurl + "&user_id="+uid + tmpurl = tmpurl + "&user_id="+uid.to_s end data = { @@ -179,7 +179,7 @@ class WechatService def four_keys_template(openid, template_id, type, id, first, key1, key2, key3, key4, remark="",uid) tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}" if uid && uid != 0 - tmpurl = tmpurl + "&user_id="+uid + tmpurl = tmpurl + "&user_id="+uid.to_s end data = { diff --git a/app/views/wechats/user_activities.html.erb b/app/views/wechats/user_activities.html.erb index ac3b845ff..2824ee8f0 100644 --- a/app/views/wechats/user_activities.html.erb +++ b/app/views/wechats/user_activities.html.erb @@ -25,16 +25,18 @@ //参考文档 //https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN - wx.config({ - debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 - appId: '<%= @appid %>', // 必填,公众号的唯一标识 - timestamp: <%= @sign_params[:timestamp] %>, // 必填,生成签名的时间戳 - nonceStr: '<%= @sign_params[:noncestr] %>', // 必填,生成签名的随机串 - signature: '<%= @sign_params[:signature] %>',// 必填,签名,见附录1 - jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone', - 'hideOptionMenu','showOptionMenu','showMenuItems', 'hideMenuItems', - 'hideAllNonBaseMenuItem','showAllNonBaseMenuItem','closeWindow', 'scanQRCode'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 - }); + <% unless @sign_params.nil? %> + wx.config({ + debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 + appId: '<%= @appid %>', // 必填,公众号的唯一标识 + timestamp: <%= @sign_params[:timestamp] %>, // 必填,生成签名的时间戳 + nonceStr: '<%= @sign_params[:noncestr] %>', // 必填,生成签名的随机串 + signature: '<%= @sign_params[:signature] %>',// 必填,签名,见附录1 + jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone', + 'hideOptionMenu','showOptionMenu','showMenuItems', 'hideMenuItems', + 'hideAllNonBaseMenuItem','showAllNonBaseMenuItem','closeWindow', 'scanQRCode'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 + }); + <% end %> wx.ready(function(){ console.log("wx ready"); diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html index 4fadcbd9d..051adba7e 100644 --- a/public/assets/wechat/class.html +++ b/public/assets/wechat/class.html @@ -40,7 +40,7 @@