|
|
|
@@ -0,0 +1,552 @@ |
|
|
|
#coding=utf-8 |
|
|
|
class UsersService |
|
|
|
include ApplicationHelper |
|
|
|
# include AccountHelper |
|
|
|
# include AvatarHelper |
|
|
|
include ApiHelper |
|
|
|
# include WordsHelper |
|
|
|
include ApiIndexHelper |
|
|
|
#将用户注册的功能函数写这里 |
|
|
|
#参数约定 |
|
|
|
#成功返回注册后的User实例,失败直接抛异常 |
|
|
|
|
|
|
|
# 生成邀请码 |
|
|
|
CODES = %W(0 1 2 3 4 5 6 7 8 9) |
|
|
|
def generate_user_login type |
|
|
|
code = CODES.sample(8).join |
|
|
|
code = type + code.to_s |
|
|
|
return generate_user_login(type) if User.where(login: code).present? |
|
|
|
code |
|
|
|
end |
|
|
|
|
|
|
|
def edit_brief params, current_user |
|
|
|
target_user = User.find(params[:login]) |
|
|
|
return {status: -1, message: "请输入内容"} if params[:content].blank? |
|
|
|
return {status: -1, message: "请登录"} unless current_user.present? |
|
|
|
return {status: -1, message: "您没有权限操作"} unless current_user.login == params[:login] |
|
|
|
user_extent = target_user.user_extension |
|
|
|
user_extent.brief_introduction = params[:content].first(20) |
|
|
|
if user_extent.save |
|
|
|
{status: 0, message: "更新成功"} |
|
|
|
else |
|
|
|
{status: -1, message: user_extent.errors.messages.values[0]} |
|
|
|
end |
|
|
|
|
|
|
|
end |
|
|
|
|
|
|
|
def user_info params, current_user |
|
|
|
target_user = User.find_by(login: params[:login]) |
|
|
|
return {status: 404, message: "用户不存在"} unless target_user.present? |
|
|
|
format_common_user = format_common_user(target_user) |
|
|
|
target_user_info = { |
|
|
|
current_login: current_user&.login, |
|
|
|
fans_count: target_user&.watcher_users.size, |
|
|
|
stars_count: User.watched_by(target_user.id).size, |
|
|
|
identify: target_user.identity, |
|
|
|
authentication: target_user.authentication, |
|
|
|
professional: target_user.professional_certification, |
|
|
|
bind_phone: target_user.phone.present?, |
|
|
|
bind_email: target_user.mail.present?, |
|
|
|
brief: target_user&.user_extension&.brief_introduction, |
|
|
|
is_current_user: current_user&.login == params[:login], |
|
|
|
is_watched: target_user.watched_by?(current_user), |
|
|
|
is_blocked: current_user&.blocked_for(target_user.id), |
|
|
|
is_blocked_by: target_user&.blocked_for(current_user.id), |
|
|
|
# identify_status: target_user&.get_auth_status("1"), |
|
|
|
# profession_status: target_user&.get_auth_status("2"), |
|
|
|
}.merge(format_common_user) |
|
|
|
|
|
|
|
{status: 0, user: target_user_info} |
|
|
|
end |
|
|
|
|
|
|
|
def block_user_lists params, current_user |
|
|
|
return {status: -1, message: "请登录"} unless current_user.present? |
|
|
|
return {status: -1, message: "您没有权限操作"} unless current_user.login == params[:login] |
|
|
|
user_block_ids = current_user.block_users.pluck(:block_user_id).uniq |
|
|
|
block_users_size = user_block_ids.size |
|
|
|
page = params[:page].to_i > 0 ? (params[:page].to_i - 1) : 0 |
|
|
|
limit = params[:limit] || 30 |
|
|
|
offset = page * limit.to_i |
|
|
|
|
|
|
|
block_users =User.where(id: user_block_ids).limit(limit).offset(offset) |
|
|
|
block_lists = [] |
|
|
|
block_users.each do |user| |
|
|
|
if user.present? |
|
|
|
|
|
|
|
block_lists.push({ |
|
|
|
username: user.show_name, |
|
|
|
login: user.login, |
|
|
|
image_url: "/images/#{url_to_avatar(user)}?#{Time.now.to_i}", |
|
|
|
brief: user&.user_extension.try(:brief_introduction) |
|
|
|
}) |
|
|
|
end |
|
|
|
end |
|
|
|
{status: 0, users_size: block_users_size, users: block_lists} |
|
|
|
end |
|
|
|
|
|
|
|
def block_user params, current_user |
|
|
|
target_user = User.find(params[:login]) |
|
|
|
return {status: -1, message: "请选择屏蔽类型"} unless params[:block].present? |
|
|
|
return {status: -1, message: "请登录"} unless current_user.present? |
|
|
|
return {status: -1, message: "用户不存在"} unless target_user.present? |
|
|
|
if params[:block].to_s == "block" |
|
|
|
Watcher.is_watcher_user.between_user(target_user.id, current_user.id).destroy_all |
|
|
|
if current_user&.block_users.block_user_present(target_user.id).exists? |
|
|
|
return {status: 0, message: "已加入黑名单"} |
|
|
|
else |
|
|
|
BlockUser.create(user_id: current_user&.id, block_user_id: target_user.id) |
|
|
|
return {status: 0, message: "已加入黑名单"} |
|
|
|
end |
|
|
|
else |
|
|
|
current_user&.block_users.block_user_present(target_user.id).destroy_all |
|
|
|
return {status: 0, message: "已移出黑名单"} |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
def watch_user params, current_user |
|
|
|
target_user = User.find(params[:login]) |
|
|
|
return {status: -1, message: "请选择关注类型"} unless params[:watch].present? |
|
|
|
return {status: -1, message: "请登录"} unless current_user.try(:login).present? |
|
|
|
return {status: -1, message: "用户不存在"} unless target_user.present? |
|
|
|
return {status: -1, message: "根据对方设置,不可关注"} if target_user&.blocked_for(current_user.id) |
|
|
|
if params[:watch].to_s == "watch" |
|
|
|
if target_user.watched_by?(current_user) |
|
|
|
return {status: 0, message: "已关注"} |
|
|
|
else |
|
|
|
target_user.add_watcher(current_user) |
|
|
|
# current_user.watch!(target_user) |
|
|
|
return {status: 0, message: "已关注"} |
|
|
|
end |
|
|
|
else |
|
|
|
target_user.remove_watcher(current_user) |
|
|
|
# current_user.unwatch!(target_user) |
|
|
|
return {status: 0, message: "已取消关注"} |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
def user_projects params, current_user |
|
|
|
return {status: -1, message: "请登录"} unless current_user.present? |
|
|
|
target_user = User.find(params[:login]) |
|
|
|
show_all = params[:login] == current_user&.login || current_user&.admin? |
|
|
|
select_type = params[:type] || "p_project" |
|
|
|
order = params[:order] || "desc" |
|
|
|
p_type = params[:p] || "a" |
|
|
|
status = p_type == "a" ? "(0,1)" : "("+p_type+")" |
|
|
|
page = params[:page].to_i > 0 ? (params[:page].to_i - 1) : 0 |
|
|
|
limit = params[:limit] || 16 |
|
|
|
offset = page * limit.to_i |
|
|
|
is_current_user = params[:login] == current_user&.login |
|
|
|
|
|
|
|
case select_type |
|
|
|
when "l_projects" |
|
|
|
project_ids = Project.find_by_sql("SELECT p.id FROM projects p, members m, member_roles mr WHERE m.project_id = p.id AND m.id=mr.member_id AND mr.role_id in (4, 5) AND m.user_id=#{target_user.id} AND p.status != 9 AND p.is_public in #{status}").map(&:id) |
|
|
|
|
|
|
|
projects = Project.where(:id => project_ids).includes(:project_score, owner: :user_extension).order("updated_on #{order}") |
|
|
|
when "p_projects" |
|
|
|
project_ids = Project.find_by_sql("SELECT p.id FROM projects p, members m, member_roles mr WHERE m.project_id = p.id AND m.id=mr.member_id AND mr.role_id = 3 AND m.user_id=#{target_user.id} AND p.status != 9 AND p.is_public in #{status}").map(&:id) |
|
|
|
projects = Project.where(:id => project_ids).includes(:project_score, owner: :user_extension).order("updated_on #{order}") |
|
|
|
end |
|
|
|
projects_size = project_ids.size |
|
|
|
projects = projects.limit(limit).offset(offset) |
|
|
|
|
|
|
|
project_list_arrays = [] |
|
|
|
projects.each do |p| |
|
|
|
project_user = format_common_user(p.owner) |
|
|
|
owner_school = p.owner&.school_name |
|
|
|
|
|
|
|
project_list_arrays.push({ |
|
|
|
id: p.id, |
|
|
|
name: p.name, |
|
|
|
is_public: p.is_public, |
|
|
|
issues_count: p.issue_count, |
|
|
|
members_count: p.member_count, |
|
|
|
commits_count: p&.project_score.try(:changeset_num).to_i, |
|
|
|
identifier: p.identifier, |
|
|
|
school_name: owner_school |
|
|
|
}.merge(project_user)) |
|
|
|
end |
|
|
|
|
|
|
|
{status: 0,is_current_user: is_current_user, projects_size: projects_size, projects: project_list_arrays} |
|
|
|
end |
|
|
|
|
|
|
|
def get_user_info params, current_user |
|
|
|
if current_user.present? && (current_user.id != 2) |
|
|
|
status = 0 |
|
|
|
else |
|
|
|
status = -1 |
|
|
|
end |
|
|
|
current_user_info = format_for_current_user current_user |
|
|
|
{status: status, current_user: current_user_info} |
|
|
|
end |
|
|
|
|
|
|
|
# 关注 |
|
|
|
def watch params, current_user |
|
|
|
s = WatchesService.new |
|
|
|
s.watch params.merge(:current_user_id => current_user.id) |
|
|
|
return {:status => 1, :message => "success"} |
|
|
|
end |
|
|
|
|
|
|
|
# 取消关注 |
|
|
|
def unwatch params, current_user |
|
|
|
s = WatchesService.new |
|
|
|
s.unwatch params.merge(:current_user_id => current_user.id) |
|
|
|
return {:status => 1, :message => "success"} |
|
|
|
end |
|
|
|
|
|
|
|
def register(params) |
|
|
|
@user = User.new |
|
|
|
@user.admin = false |
|
|
|
@user.register |
|
|
|
@user.login = generate_user_login params[:mail] ? 'm' : (params[:phone] ? 'p' : 'w') |
|
|
|
@user.mail = params[:mail] |
|
|
|
@user.phone = params[:phone] |
|
|
|
password = params[:password] || params[:mail_password] |
|
|
|
password_confirmation = params[:password] || params[:mail_password] |
|
|
|
should_confirmation_password = params[:should_confirmation_password] |
|
|
|
if !password.blank? && !password_confirmation.blank? && should_confirmation_password |
|
|
|
@user.password, @user.password_confirmation = password, password_confirmation |
|
|
|
elsif !password.blank? && !should_confirmation_password |
|
|
|
@user.password = password |
|
|
|
else |
|
|
|
@user.password = "" |
|
|
|
end |
|
|
|
if params[:mail] |
|
|
|
case Setting.self_registration |
|
|
|
when '1' |
|
|
|
@user = email_activation_register(@user) |
|
|
|
when '3' |
|
|
|
@user = automatically_register(@user) |
|
|
|
else |
|
|
|
@user = administrator_manually__register(@user) |
|
|
|
end |
|
|
|
else |
|
|
|
@user = automatically_register(@user) |
|
|
|
end |
|
|
|
if @user.id != nil |
|
|
|
ue = @user.user_extension ||= UserExtensions.new |
|
|
|
ue.user_id = @user.id |
|
|
|
ue.save |
|
|
|
if params[:entity_type] |
|
|
|
entity = Entity.new |
|
|
|
entity.user_id = @user.id |
|
|
|
entity.entity_type = params[:entity_type].to_i |
|
|
|
entity.save! |
|
|
|
end |
|
|
|
end |
|
|
|
@user |
|
|
|
#img_url = url_to_avatar(@user) |
|
|
|
#gender = @user.user_extension.gender.nil? ? 0 : @user.user_extension.gender |
|
|
|
#work_unit = get_user_work_unit @user |
|
|
|
#location = get_user_location @user |
|
|
|
#{:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extension.brief_introduction} |
|
|
|
end |
|
|
|
|
|
|
|
# 自动注册功能 FOR:邮件邀请 |
|
|
|
def register_auto(login, mail, password, first_name, last_name, gender) |
|
|
|
mail_notification = "day" |
|
|
|
@user = User.new |
|
|
|
@user.admin = false |
|
|
|
@user.register |
|
|
|
@user.login = login |
|
|
|
@user.mail = mail |
|
|
|
@user.firstname = first_name |
|
|
|
@user.lastname = last_name |
|
|
|
@user.mail_notification = mail_notification |
|
|
|
password_confirmation = password |
|
|
|
should_confirmation_password = true |
|
|
|
if !password.blank? && !password_confirmation.blank? && should_confirmation_password |
|
|
|
@user.password, @user.password_confirmation = password, password_confirmation |
|
|
|
elsif !password.blank? && !should_confirmation_password |
|
|
|
@user.password = password |
|
|
|
else |
|
|
|
@user.password = "" |
|
|
|
end |
|
|
|
@user = automatically_register_lock(@user) |
|
|
|
if @user.id != nil |
|
|
|
ue = @user.user_extension ||= UserExtensions.new |
|
|
|
ue.gender = gender |
|
|
|
ue.user_id = @user.id |
|
|
|
ue.save |
|
|
|
end |
|
|
|
@user |
|
|
|
end |
|
|
|
|
|
|
|
#显示用户 |
|
|
|
#id用户id |
|
|
|
def show_user(params) |
|
|
|
@user = User.find(params[:id]) |
|
|
|
img_url = "/images/"+url_to_avatar(@user) |
|
|
|
gender = @user.user_extension.gender.nil? ? 0 : @user.user_extension.gender |
|
|
|
work_unit = get_user_work_unit @user |
|
|
|
location = get_user_location @user |
|
|
|
{:id => @user.id, :img_url => img_url,:realname => @user.realname, :nickname => @user.nickname, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extension.brief_introduction} |
|
|
|
end |
|
|
|
|
|
|
|
#忘记密码 |
|
|
|
def lost_password params |
|
|
|
user = ::User.find_by_mail(params[:mail].to_s) |
|
|
|
# user not found or not active |
|
|
|
unless user && user.active? |
|
|
|
raise l(:notice_account_unknown_email,:locale => 'zh') |
|
|
|
end |
|
|
|
# user cannot change its password |
|
|
|
unless user.change_password_allowed? |
|
|
|
raise l(:notice_can_t_change_password,:locale => user.language) |
|
|
|
return |
|
|
|
end |
|
|
|
# create a new token for password recovery |
|
|
|
token = Token.new(:user => user, :action => "recovery") |
|
|
|
if token.save |
|
|
|
Mailer.run.lost_password(token) |
|
|
|
return l(:notice_account_lost_email_sent,:locale => user.language) |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
#编辑用户 |
|
|
|
#gender 1:female 0:male 其他:male |
|
|
|
def edit_user params |
|
|
|
@user = User.find(params[:id]) |
|
|
|
fileio = params[:file] |
|
|
|
|
|
|
|
# @se = @user.extensions |
|
|
|
# if @user.user_extension.identity == 0 || @user.user_extension.identity == 1 |
|
|
|
# @se.school_id = params[:occupation] |
|
|
|
# elsif @user.user_extension.identity == 3 |
|
|
|
# @se.occupation = params[:occupation] |
|
|
|
# elsif @user.user_extension.identity == 2 |
|
|
|
# @user.firstname = params[:occupation] |
|
|
|
# end |
|
|
|
# @se.brief_introduction = params[:brief_introduction] |
|
|
|
# @se.gender = params[:gender] |
|
|
|
# @se.location = params[:province] if params[:province] |
|
|
|
# @se.location_city = params[:city] if params[:city] |
|
|
|
# raise @se.errors.full_message unless @se.save |
|
|
|
unless fileio.nil? |
|
|
|
file = fileio[:tempfile] |
|
|
|
diskfile=disk_filename(@user.class.to_s, @user.id) |
|
|
|
@image_file = fileio[:name] |
|
|
|
@urlfile='/' << File.join("images", "avatars", avatar_directory(@user.class.to_s), avatar_filename(@user.id, @image_file)) |
|
|
|
|
|
|
|
path = File.dirname(diskfile) |
|
|
|
unless File.directory?(path) |
|
|
|
FileUtils.mkdir_p(path) |
|
|
|
end |
|
|
|
File.rename(file.path, @urlfile) |
|
|
|
begin |
|
|
|
f = Magick::ImageList.new(diskfile) |
|
|
|
# gif格式不再做大小处理 |
|
|
|
if f.format != 'GIF' |
|
|
|
width = 300.0 |
|
|
|
proportion = (width/f[0].columns) |
|
|
|
height = (f[0].rows*proportion) |
|
|
|
f.resize_to_fill!(width, height) |
|
|
|
f.write(diskfile) |
|
|
|
end |
|
|
|
|
|
|
|
rescue Exception => e |
|
|
|
logger.error "[Error] avatar : users_service#edit_user ===> #{e}" |
|
|
|
end |
|
|
|
end |
|
|
|
#img_url = url_to_avatar(@user) |
|
|
|
#gender = @user.user_extension.gender.nil? ? 0 : @user.user_extension.gender |
|
|
|
#work_unit = get_user_work_unit @user |
|
|
|
#location = get_user_location @user |
|
|
|
#{:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extension.brief_introduction} |
|
|
|
@user |
|
|
|
end |
|
|
|
|
|
|
|
# 获取某个用户的所有留言信息 |
|
|
|
def get_all_messages params |
|
|
|
user = User.find(params[:user_id]) |
|
|
|
jours = user.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC').page(params[:page] || 1).per(10) |
|
|
|
jours.update_all(:is_readed => true, :status => false) |
|
|
|
jours.each do |journal| |
|
|
|
fetch_user_leaveWord_reply(journal).update_all(:is_readed => true, :status => false) |
|
|
|
end |
|
|
|
jours |
|
|
|
end |
|
|
|
|
|
|
|
# 回复用户 |
|
|
|
def reply_user_messages params,current_user |
|
|
|
user = User.find(params[:user_id]) |
|
|
|
|
|
|
|
m_parent_id = params[:parent_id] |
|
|
|
author_id = current_user.id |
|
|
|
reply_id = params[:ref_user_id] |
|
|
|
ref_message_id = params[:ref_message_id] |
|
|
|
content = params[:content] |
|
|
|
options = {:user_id => author_id, # 作者id |
|
|
|
:status => true, |
|
|
|
:m_parent_id => m_parent_id,# 父留言id |
|
|
|
:m_reply_id => ref_message_id, # 子留言 id |
|
|
|
:reply_id => reply_id, # 被留言用户id |
|
|
|
:notes => content, |
|
|
|
:is_readed => false} |
|
|
|
if(params[:type] == 1) |
|
|
|
user.add_jour(nil, nil,nil,options) |
|
|
|
elsif(params[:type] == 2) |
|
|
|
Course.find(params[:course_id]).journals_for_messages.build(options).save! unless params[:course_id].nil? |
|
|
|
else |
|
|
|
end |
|
|
|
|
|
|
|
end |
|
|
|
|
|
|
|
# 给用户留言 |
|
|
|
def leave_message params,current_user |
|
|
|
obj = User.find(params[:user_id]).add_jour(current_user, params[:content], 0) |
|
|
|
obj |
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
#关注列表 |
|
|
|
def user_watcher params |
|
|
|
@user = User.find(params[:id]) |
|
|
|
User.watched_by(@user.id) |
|
|
|
end |
|
|
|
|
|
|
|
#用户课程列表 |
|
|
|
def user_courses_list params,current_user |
|
|
|
@user = User.find(params[:id]) |
|
|
|
if !current_user.admin? && !@user.active? |
|
|
|
raise '404' |
|
|
|
return |
|
|
|
end |
|
|
|
if current_user == @user || current_user.admin? |
|
|
|
membership = @user.coursememberships.all |
|
|
|
else |
|
|
|
membership = @user.coursememberships.all(:conditions => Course.visible_condition(current_user)) |
|
|
|
end |
|
|
|
membership.sort! {|older, newer| newer.created_on <=> older.created_on } |
|
|
|
course_list = [] |
|
|
|
membership.each do |mp| |
|
|
|
course_list << {:course => mp.course,:img_url => "/images/"+url_to_avatar(mp.course),:current_user_is_member => current_user.member_of_course?(mp.course),:current_user_is_teacher => is_course_teacher(current_user,mp.course)} |
|
|
|
end |
|
|
|
course_list |
|
|
|
end |
|
|
|
|
|
|
|
#修改密码 |
|
|
|
def change_password params |
|
|
|
ActiveRecord::Base.transaction do |
|
|
|
@current_user = User.find(params[:current_user_id]) |
|
|
|
if @current_user.check_password?(params[:password]) |
|
|
|
@current_user.password, @current_user.password_confirmation = params[:new_password], params[:new_password_confirmation] |
|
|
|
@current_user.save |
|
|
|
# 修改密码同步gitlab密码修改 |
|
|
|
unless @current_user.gid.nil? |
|
|
|
begin |
|
|
|
g = Gitlab.client |
|
|
|
g.edit_user(@current_user.gid, :password => params[:new_password]) |
|
|
|
rescue Exception => e |
|
|
|
logger.error "change users password failed! ===> #{e}" |
|
|
|
end |
|
|
|
end |
|
|
|
#raise @current_user.errors.full_message |
|
|
|
#return @current_user |
|
|
|
else |
|
|
|
if params[:password].present? |
|
|
|
raise l(:notice_account_wrong_password,:locale => 'zh') |
|
|
|
else |
|
|
|
if params[:new_password].strip != "" && params[:new_password_confirmation].strip != "" |
|
|
|
@current_user.password, @current_user.password_confirmation = params[:new_password], params[:new_password_confirmation] |
|
|
|
@current_user.save |
|
|
|
unless @current_user.gid.nil? |
|
|
|
begin |
|
|
|
g = Gitlab.client |
|
|
|
g.edit_user(@current_user.gid, :password => params[:new_password]) |
|
|
|
rescue Exception => e |
|
|
|
logger.error "change users password failed! ===> #{e}" |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
@current_user |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
#搜索用户 |
|
|
|
def search_user params |
|
|
|
status = params[:status] || 1 |
|
|
|
has = { |
|
|
|
"show_changesets" => true |
|
|
|
} |
|
|
|
scope = User.logged.status(status) |
|
|
|
search_by = params[:search_by] ? params[:search_by] : "0" |
|
|
|
if params[:is_search_assitant].nil? |
|
|
|
#modify by yutao 2015/5/18 没有params[:user_id]参数时去掉"id not in (?)"条件(bug:#2270) start |
|
|
|
#say by yutao: params[:user_id]这个是指谁发起的搜索么? 如果是 这个值貌似应该从session获取 怪怪的赶脚-_-! |
|
|
|
if params[:name].present? |
|
|
|
if !params[:user_id].nil? |
|
|
|
watcher = User.watched_by(params[:user_id]) |
|
|
|
watcher.push(params[:user_id]) |
|
|
|
scope = scope.where("id not in (?)",watcher) |
|
|
|
end |
|
|
|
#scope = scope.like(params[:name],search_by) |
|
|
|
scope = scope.where("( LOWER(login) LIKE ? or LOWER(concat(lastname, firstname)) LIKE ? or LOWER(mail) LIKE ? )", |
|
|
|
"%#{params[:name]}%","%#{params[:name]}%","%#{params[:name]}%") |
|
|
|
end |
|
|
|
#modify by yutao 2015/5/18 没有params[:user_id]参数时去掉"id not in (?)"条件 end |
|
|
|
else |
|
|
|
teachers = searchTeacherAndAssistant(Course.find(params[:course_id])) |
|
|
|
scope = scope.where("id not in (?)",teachers.map{|t| t.user_id}).like(params[:name],search_by) if params[:name].present? |
|
|
|
end |
|
|
|
scope |
|
|
|
end |
|
|
|
|
|
|
|
# 课程留言中与我相关的回复 |
|
|
|
def my_course_messages params,current_user |
|
|
|
#找到我所有的课程 |
|
|
|
@user = current_user |
|
|
|
if !current_user.admin? && !@user.active? |
|
|
|
raise '404' |
|
|
|
return |
|
|
|
end |
|
|
|
if current_user == @user || current_user.admin? |
|
|
|
membership = @user.coursememberships.all |
|
|
|
end |
|
|
|
# membership.sort! {|older, newer| newer.created_on <=> older.created_on } |
|
|
|
message_list = [] |
|
|
|
membership.each do |mp| |
|
|
|
#课程轮询找到与我相关的回复 |
|
|
|
message_list << mp.course.journals_for_messages.where("reply_id = ?",current_user.id) |
|
|
|
end |
|
|
|
message_list |
|
|
|
end |
|
|
|
|
|
|
|
# 获取与我相关的留言:我的留言,回复我的留言 |
|
|
|
def my_personal_messages params,current_user |
|
|
|
jours = current_user.journals_for_messages.where('m_parent_id is null or reply_id = ?',current_user.id) |
|
|
|
jours.update_all(:is_readed => true, :status => false) |
|
|
|
jours |
|
|
|
end |
|
|
|
|
|
|
|
# 所有的与我相关 |
|
|
|
def reply_my_messages params,current_user |
|
|
|
jours = my_personal_messages params,current_user |
|
|
|
jours1 = my_course_messages params,current_user |
|
|
|
my_jours = [] |
|
|
|
my_jours << jours << jours1 |
|
|
|
my_jours.flatten!.sort! {|older, newer| newer.created_on <=> older.created_on } |
|
|
|
my_jours_arr = Kaminari.paginate_array(my_jours, total_count: my_jours.count).page(params[:page] || 1).per(10) |
|
|
|
my_jours_arr |
|
|
|
end |
|
|
|
|
|
|
|
def wechat_unbind uw |
|
|
|
user = uw.user |
|
|
|
|
|
|
|
#发重新绑定的微信模版消息 |
|
|
|
|
|
|
|
type = "login" |
|
|
|
title = "尊敬的用户,您已解除绑定。" |
|
|
|
key1 = "个人原因" |
|
|
|
remark = "点击进入重新绑定。" |
|
|
|
|
|
|
|
ws = WechatService.new |
|
|
|
ws.rebind_notice user.id, type, user.id, title, key1,format_time(Time.now), remark |
|
|
|
|
|
|
|
uw.user_id = nil |
|
|
|
uw.delete |
|
|
|
|
|
|
|
end |
|
|
|
|
|
|
|
end |