247 lines
9.1 KiB
Ruby
247 lines
9.1 KiB
Ruby
#coding=utf-8
|
|
|
|
module Mobile
|
|
module Apis
|
|
class NewComment< Grape::API
|
|
include ApplicationHelper
|
|
include ApiHelper
|
|
resources :new_comment do
|
|
|
|
desc "add a new comment"
|
|
params do
|
|
requires :type, type: String
|
|
requires :content, type: String
|
|
end
|
|
post ':id' do
|
|
unless current_user
|
|
#如果当前用户不存在 则需要根据微信昵称注册一个帐号
|
|
openid = session[:wechat_openid]
|
|
raise "无法获取到openid,请在微信中打开本页面" unless openid
|
|
us = UsersService.new
|
|
|
|
access_token = session[:access_token]
|
|
refresh_token = session[:refresh_token]
|
|
|
|
if access_token.present? && refresh_token.present?
|
|
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
|
|
session[:refresh_token] = refresh_token
|
|
|
|
#获取用户信息
|
|
userinfo = Wechat.api.web_userinfo(access_token,openid)
|
|
Rails.logger.info "userinfo!!!!!!!!!"
|
|
Rails.logger.info userinfo
|
|
name = userinfo["nickname"]
|
|
else
|
|
name = openid[0..3]+"***"+openid.last
|
|
end
|
|
|
|
user = us.register ({:login=>openid, :mail=>"#{openid}@163.com",
|
|
:password=>"12345678", :password_confirmation=>"12345678",
|
|
:should_confirmation_password => true})
|
|
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,
|
|
bindtype: 1
|
|
)
|
|
end
|
|
|
|
authenticate!
|
|
|
|
subscribe = 0 #默认未关注
|
|
|
|
#-------------------获取用户是否关注此公众号-----------------------------
|
|
openid = session[:wechat_openid]
|
|
raise "无法获取到openid,请在微信中打开本页面" unless openid
|
|
user_info = Wechat.api.user(openid)
|
|
Rails.logger.info "user_info!!!!!!!!!"
|
|
Rails.logger.info user_info
|
|
subscribe = user_info["subscribe"]
|
|
|
|
status = 0
|
|
tip = 0 #0班级1项目
|
|
type = params[:type]
|
|
result = 1
|
|
if params[:content]!="" && current_user
|
|
case type
|
|
when "HomeworkCommon"
|
|
homework_common = HomeworkCommon.find(params[:id])
|
|
|
|
#如果是私有的 并且不是成员则不能回复
|
|
# is_public = homework_common.course.is_public
|
|
# if is_public == 0 && !current_user.member_of_course?(homework_common.course)
|
|
# status = -1
|
|
# tip = 0
|
|
# else
|
|
# feedback = HomeworkCommon.add_homework_jour(current_user, params[:content], params[:id])
|
|
# if (feedback.errors.empty?)
|
|
# homework_common.update_column(:updated_at, Time.now)
|
|
# result = 2
|
|
# end
|
|
# end
|
|
feedback = HomeworkCommon.add_homework_jour(current_user, params[:content], params[:id])
|
|
if (feedback.errors.empty?)
|
|
homework_common.update_column(:updated_at, Time.now)
|
|
result = 2
|
|
end
|
|
|
|
when "News"
|
|
news = News.find(params[:id])
|
|
|
|
# if news.project
|
|
# if news.project.is_public == false && !current_user.member_of?(news.project)
|
|
# status = -1
|
|
# tip = 1
|
|
# end
|
|
# elsif news.course
|
|
# if news.course.is_public == 0 && !current_user.member_of_course?(news.course)
|
|
# status = -1
|
|
# tip = 0
|
|
# end
|
|
# end
|
|
|
|
if status == 0
|
|
comment = Comment.new
|
|
comment.comments = params[:content]
|
|
comment.author = current_user
|
|
if news.comments << comment
|
|
result = 2
|
|
end
|
|
end
|
|
when "Message"
|
|
message = Message.find(params[:id])
|
|
board = Board.find(message.board_id)
|
|
|
|
# if message.project
|
|
# if message.project.is_public == false && !current_user.member_of?(message.project)
|
|
# status = -1
|
|
# tip = 1
|
|
# end
|
|
# elsif message.course
|
|
# if message.course.is_public == 0 && !current_user.member_of_course?(message.course)
|
|
# status = -1
|
|
# tip = 0
|
|
# end
|
|
# end
|
|
|
|
if status == 0
|
|
topic = message.root
|
|
reply = Message.new
|
|
reply.author = current_user
|
|
reply.board = board
|
|
reply.content = params[:content]
|
|
reply.parent_id = params[:id]
|
|
reply.subject = "RE: #{topic.subject}"
|
|
if topic.children << reply
|
|
result = 2
|
|
end
|
|
end
|
|
when "JournalsForMessage"
|
|
jour = JournalsForMessage.find params[:id]
|
|
|
|
# if jour.jour_type == "Project"
|
|
# if jour.project.is_public == false && !current_user.member_of?(jour.project)
|
|
# status = -1
|
|
# tip = 1
|
|
# end
|
|
# elsif jour.jour_type == "Course"
|
|
# if jour.course.is_public == 0 && !current_user.member_of_course?(jour.course)
|
|
# status = -1
|
|
# tip = 0
|
|
# end
|
|
# end
|
|
|
|
if status == 0
|
|
parent_id = params[:id]
|
|
author_id = current_user.id
|
|
reply_user_id = jour.user_id
|
|
reply_id = params[:id]
|
|
content = params[:content]
|
|
options = {:user_id => author_id,
|
|
:status => true,
|
|
:m_parent_id => parent_id,
|
|
:m_reply_id => reply_id,
|
|
:reply_id => reply_user_id,
|
|
:notes => content,
|
|
:is_readed => false}
|
|
jfm = jour.user.add_jour(nil, nil, nil, options)
|
|
if jfm.errors.empty?
|
|
(JournalsForMessage.find parent_id).update_attribute(:updated_on,Time.now)
|
|
result = 2
|
|
end
|
|
end
|
|
when 'Issue'
|
|
issue = Issue.find params[:id]
|
|
|
|
# if issue.project.is_public == false && !current_user.member_of?(issue.project)
|
|
# status = -1
|
|
# tip = 1
|
|
# end
|
|
|
|
if status == 0
|
|
is_jour = Journal.new
|
|
is_jour.user_id = current_user.id
|
|
is_jour.notes = params[:content]
|
|
is_jour.journalized = issue
|
|
if is_jour.save
|
|
result = 2
|
|
end
|
|
end
|
|
when 'BlogComment'
|
|
blog = BlogComment.find(params[:id]).root
|
|
blogComment = BlogComment.new
|
|
blogComment.author = current_user
|
|
blogComment.blog = blog.blog
|
|
blogComment.content = params[:content]
|
|
blogComment.title = "RE: #{blog.title}"
|
|
if blog.children << blogComment
|
|
result = 2
|
|
end
|
|
end
|
|
if result == 2
|
|
update_course_activity_api(type,params[:id])
|
|
update_user_activity_api(type,params[:id])
|
|
update_org_activity_api(type,params[:id])
|
|
update_forge_activity_api(type,params[:id])
|
|
update_principal_activity_api(type,params[:id])
|
|
end
|
|
else
|
|
result = 3
|
|
end
|
|
present :result, result
|
|
present :status, status
|
|
present :tip, tip
|
|
present :subscribe,subscribe
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|