You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.7 KiB
110 lines
3.7 KiB
class CnmoocsService
|
|
include ApplicationHelper
|
|
include GamesHelper
|
|
|
|
def get_resources_data params
|
|
page = params[:pageNo].to_i
|
|
limit = params[:pageSize] || 16
|
|
offset = page * limit.to_i
|
|
shixuns = Shixun.select([:id, :identifier, :name, :myshixuns_count, :averge_star, :challenges_count, :trainee]).
|
|
where(status: 2, hidden: 0)
|
|
shixun_count = shixuns.count
|
|
pageCount = ((shixun_count / limit.to_f) == (shixun_count / limit)) ? (shixun_count / limit) : ((shixun_count / limit) + 1)
|
|
shixuns = shixuns.order("myshixuns_count desc").offset(offset).limit(limit)
|
|
shixun_list = shixun_data shixuns
|
|
{error: 0, messages: "请求成功",
|
|
page: {count: shixuns.count, totalCount: shixun_count, pageNo: page, pageSize: limit, pageCount: pageCount},
|
|
data: shixun_list }
|
|
end
|
|
|
|
def search_resources params
|
|
page = params[:pageNo].to_i
|
|
limit = params[:pageSize] || 16
|
|
offset = page * limit.to_i
|
|
shixuns = Shixun.select([:id, :identifier, :name, :myshixuns_count, :averge_star, :challenges_count, :trainee]).
|
|
where(status: 2, hidden: 0).where("name like ?", "%#{params[:name]}%")
|
|
shixun_count = shixuns.count
|
|
pageCount = ((shixun_count / limit.to_f) == (shixun_count / limit)) ? (shixun_count / limit) : ((shixun_count / limit) + 1)
|
|
shixuns = shixuns.order("myshixuns_count desc").offset(offset).limit(limit)
|
|
shixun_list = shixun_data shixuns
|
|
{error: 0, messages: "请求成功",
|
|
page: {count: shixuns.count, totalCount: shixun_count, pageNo: page, pageSize: limit, pageCount: pageCount},
|
|
data: shixun_list }
|
|
end
|
|
|
|
def find_user params
|
|
user = User.find_by_mail params[:mail]
|
|
if user
|
|
{error: 0, messages: "找到用户"}
|
|
else
|
|
{error: -1, messages: "找不到用户"}
|
|
end
|
|
end
|
|
|
|
def create_user(params)
|
|
c_user = CnmoocUser.find_by_uuid(params[:userName])
|
|
|
|
if c_user.present?
|
|
return { error: -1, messages: '用户已存在' }
|
|
end
|
|
|
|
mail = c_user.generate_email
|
|
create_params = {
|
|
lastname: params[:name],
|
|
mail: mail,
|
|
mail_notification: mail,
|
|
login: generate_login('m'),
|
|
password: OauthController::DEFAULT_PASSWORD,
|
|
certification: 1
|
|
}
|
|
ActiveRecord::Base.transaction do
|
|
user = User.create!(create_params)
|
|
|
|
UserExtensions.create!(user_id: user.id, school_id: School.first.id, identity: 4, gender: 0)
|
|
|
|
c_user.user_id = user.id
|
|
c_user.save!
|
|
end
|
|
|
|
{ error: 0, messages: "创建成功", data: { userId: user.id } }
|
|
end
|
|
|
|
def login_educoder params
|
|
user, last_login_on = User.try_to_login(params[:mail], params[:password])
|
|
if user
|
|
self.logged_user = user
|
|
{error: 0, messages: "登录成功"}
|
|
else
|
|
{error: -1, messages: "登录失败,请检查邮箱和密码是否正确"}
|
|
end
|
|
|
|
end
|
|
|
|
def source_url(params)
|
|
if session[:third_party_user_id].blank?
|
|
user = User.find(params[:userId])
|
|
session[:third_party_user_id] = user.user_source.id
|
|
end
|
|
|
|
shixun = Shixun.find_by_identifier(params[:resouceId])
|
|
if shixun.blank?
|
|
return { error: -1, messages: '资源不存在' }
|
|
end
|
|
|
|
{ error: 0, messages: '成功', accessUrl: "#{Redmine::Configuration['educoder_domain']}/shixuns/#{shixun.id}" }
|
|
end
|
|
|
|
|
|
private
|
|
def shixun_data shixuns
|
|
shixun_list = []
|
|
shixuns.includes(:tag_repertoires).each do |shixun|
|
|
tag_name = shixun.tag_repertoires.first.try(:name)
|
|
level = %W(初级 中级 高级 顶级)[shixun.trainee - 1]
|
|
shixun_list << {identifier: shixun.identifier, name: shixun.name, students_count: shixun.myshixuns_count,
|
|
challenges_count: shixun.challenges_count, score_info: shixun.averge_star, level: level}
|
|
|
|
end
|
|
{resouces: shixun_list}
|
|
end
|
|
end |