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