diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index 33561c242..2afb85ace 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -8,18 +8,7 @@ class WechatsController < ActionController::Base # default text responder when no other match on :text do |request, content| #邀请码 - begin - uw = user_binded?(request[:FromUserName]) - if !uw - return sendBind() - else - return join_class({invite_code: content}, uw.user, request) - end - rescue => e - logger.error e.inspect - logger.error e.backtrace.join("\n") - return request.reply.text e - end + sendBindClass(request, {invite_code: content}) end # When receive 'help', will trigger this responder @@ -48,24 +37,13 @@ class WechatsController < ActionController::Base # When subscribe user scan scene_id in public account on :scan, with: 'scene_id' do |request, ticket| - begin - uw = user_binded?(request[:FromUserName]) - if !uw - return sendBind() - else - return join_class({ticket: ticket}, uw.user, request) - end - rescue => e - logger.error e.inspect - logger.error e.backtrace.join("\n") - return request.reply.text e - end + sendBindClass(request, {ticket: ticket}) end # When no any on :scan responder can match subscribe user scaned scene_id on :event, with: 'scan' do |request| if request[:EventKey].present? - request.reply.text "event scan got EventKey #{request[:EventKey]} Ticket #{request[:Ticket]}" + sendBindClass(request, {ticket: request[:Ticket]}) end end @@ -161,6 +139,22 @@ class WechatsController < ActionController::Base end end + + def sendBindClass(request, params) + begin + uw = user_binded?(request[:FromUserName]) + if !uw + return sendBind(request) + else + return join_class(params, uw.user, request) + end + rescue => e + logger.error e.inspect + logger.error e.backtrace.join("\n") + return request.reply.text e + end + end + def default_msg(request) uw = user_binded?(request[:FromUserName]) if uw && uw.user