ticket处理
This commit is contained in:
parent
e21f4e0b4d
commit
485d0e3743
|
@ -46,6 +46,7 @@ module Mobile
|
|||
course_expose :term
|
||||
course_expose :time
|
||||
course_expose :invite_code
|
||||
course_expose :qrcode
|
||||
course_expose :updated_at
|
||||
course_expose :course_student_num
|
||||
expose :teacher, using: Mobile::Entities::User do |c, opt|
|
||||
|
|
|
@ -12,19 +12,8 @@ class WechatsController < ActionController::Base
|
|||
uw = user_binded?(request[:FromUserName])
|
||||
if !uw
|
||||
return sendBind()
|
||||
elsif (course = join_class(content, uw.user)) && 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
|
||||
url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{ROOT_URL+'/wechat/user_activities?id='+course.id.to_s}&response_type=code&scope=snsapi_base&state=myclass#wechat_redirect"
|
||||
pic_url = "#{ROOT_URL}/images/wechat/class.jpg"
|
||||
article.item title: "#{n[:title]}",
|
||||
description: n[:content],
|
||||
pic_url: pic_url,
|
||||
url: url
|
||||
end
|
||||
else
|
||||
return request.reply.text "您的意见已收到,感谢您的反馈!" # Just echo
|
||||
return join_class(content, uw.user)
|
||||
end
|
||||
rescue => e
|
||||
return request.reply.text e
|
||||
|
@ -57,7 +46,16 @@ class WechatsController < ActionController::Base
|
|||
|
||||
# When subscribe user scan scene_id in public account
|
||||
on :scan, with: 'scene_id' do |request, ticket|
|
||||
request.reply.text "Subscribe user #{request[:FromUserName]} Ticket #{ticket}"
|
||||
begin
|
||||
uw = user_binded?(request[:FromUserName])
|
||||
if !uw
|
||||
return sendBind()
|
||||
else
|
||||
return join_class({ticket: ticket}, uw.user)
|
||||
end
|
||||
rescue => e
|
||||
return request.reply.text e
|
||||
end
|
||||
end
|
||||
|
||||
# When no any on :scan responder can match subscribe user scaned scene_id
|
||||
|
@ -185,14 +183,31 @@ class WechatsController < ActionController::Base
|
|||
end
|
||||
end
|
||||
|
||||
def join_class(content, user)
|
||||
def join_class(params, user)
|
||||
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?
|
||||
|
||||
cs = CoursesService.new
|
||||
status = cs.join_course({invite_code: content.upcase.strip}, user)
|
||||
status = cs.join_course(course.invite_code, user)
|
||||
logger.info status
|
||||
if status[:state] != 0
|
||||
raise CoursesService::JoinCourseError.message(status[:state])
|
||||
end
|
||||
status[:course]
|
||||
|
||||
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
|
||||
url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{ROOT_URL+'/wechat/user_activities?id='+course.id.to_s}&response_type=code&scope=snsapi_base&state=myclass#wechat_redirect"
|
||||
pic_url = "#{ROOT_URL}/images/wechat/class.jpg"
|
||||
article.item title: "#{n[:title]}",
|
||||
description: n[:content],
|
||||
pic_url: pic_url,
|
||||
url: url
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
### controller method
|
||||
|
|
|
@ -466,6 +466,19 @@ class Course < ActiveRecord::Base
|
|||
code
|
||||
end
|
||||
|
||||
|
||||
def generate_qrcode
|
||||
ticket = self.qrcode
|
||||
if !ticket || ticket.size < 10
|
||||
response = Wechat.api.qrcode_create_scene(invite_code)
|
||||
logger.debug "response = #{response}"
|
||||
self.qrcode = response['ticket']
|
||||
save! && reload
|
||||
ticket = qrcode
|
||||
end
|
||||
ticket
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -165,6 +165,9 @@ class CoursesService
|
|||
#显示课程
|
||||
def show_course(params,current_user)
|
||||
course = Course.find(params[:id])
|
||||
course.generate_invite_code
|
||||
course.generate_qrcode
|
||||
|
||||
if course.school
|
||||
work_unit = course.school.name
|
||||
else
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
<div class="qr-code-wrap">
|
||||
<div class="qr-code-box">
|
||||
<div class="share-class-name">{{course.name}}</div>
|
||||
<div class="qr-img-wrap"><img src="/images/wechat/QR-code.jpg" width="152" class="qr-code-img" /></div>
|
||||
<div class="qr-img-wrap"><img ng-src="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={{course.qrcode}}" width="152" class="qr-code-img" /></div>
|
||||
<div class="invitation-code-wrap">邀请码:{{course.invite_code}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="share-code-wrap">
|
||||
<a href="javascript:void(0);" class="share-code-btn">分享邀请码</a>
|
||||
<a ng-click="share()" href="javascript:void(0);" class="share-code-btn">分享邀请码</a>
|
||||
<div class="share-code-instruction"> 1.将此页面分享给好友,邀请好友加入班级<br />
|
||||
2.通过微信扫一扫加入班级<br />
|
||||
3.输入邀请码加入班级</div>
|
||||
|
|
|
@ -15,4 +15,20 @@ app.controller('InviteCodeController', ['$scope','$http', '$routeParams','config
|
|||
}
|
||||
);
|
||||
|
||||
vm.share = function(){
|
||||
window.WeixinJSBridge.invoke('sendAppMessage',{
|
||||
'appid': 'wxf694495398c7d470', // 公众号appID
|
||||
'type': 'link', // 非必填,music,vido或link,默认为link。
|
||||
'data_url': '', // 非必填,连接地址,如音乐的mp3数据地址,供内置播放器使用
|
||||
'img_url': 'http://pnewsapp.tc.qq.com/newsapp_bt/0/9963967/640', // 缩略图地址
|
||||
'img_height':370, // 缩略图高度
|
||||
'img_width':550, // 缩略图宽度
|
||||
'link':'http://view.inews.qq.com/a/WXN2013101101385701', // 链接地址
|
||||
'desc':'desc', // 描述
|
||||
'title':'title' // 标题
|
||||
},function(res){
|
||||
//alert(res.err_msg);
|
||||
});
|
||||
}
|
||||
|
||||
}]);
|
||||
|
|
Loading…
Reference in New Issue