@ -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 )
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 )
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
@ -187,20 +181,19 @@ class WechatsController < ActionController::Base
end
end
def join_class ( params , user )
def join_class ( params , user , request )
course = nil
course = Course . where ( qrcode : params [ :ticket ] ) if params [ :ticket ]
course = Course . where ( invite_code : params [ :invite_code ] ) if params [ :invite_code ]
raise " 课程不存在 " if course . blank?
course = Course . where ( qrcode : params [ :ticket ] ) . first if params [ :ticket ]
course = Course . where ( invite_code : params [ :invite_code ] ) . first if params [ :invite_code ]
raise " 课程不存在 " unless course
cs = CoursesService . new
status = cs . join_course ( course . invite_code , user )
status = cs . join_course ( { invite_code : course . invite_code } , user )
logger . info status
if status [ :state ] != 0
raise CoursesService :: JoinCourseError . message ( status [ :state ] )
end
course = status [ :course ]
news = ( 1 .. 1 ) . each_with_object ( [ ] ) { | n , memo | memo << { title : '恭喜您成功加入班级,开始学习吧!' ,
content : " 课程名称: #{ course . name } \n 班级名称: #{ course . name } \n 任课老师: #{ course . teacher . show_name } \n 进入班级,和小伙伴愉快的学习吧! " } }
return request . reply . news ( news ) do | article , n , index | # article is return object