diff --git a/app/controllers/weapps/courses_controller.rb b/app/controllers/weapps/courses_controller.rb index a36d56402..685a81423 100644 --- a/app/controllers/weapps/courses_controller.rb +++ b/app/controllers/weapps/courses_controller.rb @@ -46,7 +46,7 @@ class Weapps::CoursesController < Weapps::BaseController @applications_size = CourseMessage.unhandled_join_course_requests_by_course(@course).size - @teacher_list = @teacher_list.preload(user: [user_extension: :school]).order("CONVERT(CONCAT(users.lastname, users.firstname) USING gbk) COLLATE gbk_chinese_ci asc") + @teacher_list = @teacher_list.preload(user: [user_extension: :school]) end # 批量删除教师或助教 diff --git a/app/helpers/weapps/courses_helper.rb b/app/helpers/weapps/courses_helper.rb index cc1b5b112..a58127c4c 100644 --- a/app/helpers/weapps/courses_helper.rb +++ b/app/helpers/weapps/courses_helper.rb @@ -12,12 +12,33 @@ module Weapps::CoursesHelper school: teacher_user.school_name, image_url: url_to_avatar(teacher_user)} pinyin = Pinyin.t(name.strip, splitter: '') first_char = pinyin[0] - puts first_char - if first_char.ord >= 97 && first_char.ord <= 122 - letter = (first_char.ord - 32).chr.to_s + letter = first_letter first_char + if data.pluck(:letter).include?(letter) + data.select{|a|a[:letter]==letter}.first[:items] << item else - letter = '#' + data << {letter: letter, items: [item]} end + end + end + data = data.sort do |a, b| + [a[:letter]] <=> [b[:letter]] + end + return data + end + + + def student_list students, excellent + data = [] + students.each do |student| + if student.user.present? + student_user = student.user + name = student_user.real_name + phone = excellent ? "" : student_user.hidden_phone + item = {name: name, course_member_id: student.id, login: student_user.login, user_id: student.user_id, + student_id: student_user.student_id, image_url: url_to_avatar(student_user), phone: phone} + pinyin = Pinyin.t(name.strip, splitter: '') + first_char = pinyin[0] + letter = first_letter first_char if data.pluck(:letter).include?(letter) data.select{|a|a[:letter]==letter}.first[:items] << item else @@ -25,6 +46,20 @@ module Weapps::CoursesHelper end end end + data = data.sort do |a, b| + [a[:letter]] <=> [b[:letter]] + end return data end + + def first_letter char + if char.ord >= 97 && char.ord <= 122 + letter = (char.ord - 32).chr.to_s + elsif char.ord >= 65 && char.ord <= 90 + letter = char + else + letter = '#' + end + letter + end end \ No newline at end of file diff --git a/app/views/weapps/courses/students.json.jbuilder b/app/views/weapps/courses/students.json.jbuilder index fa0cbb972..5aaaee0aa 100644 --- a/app/views/weapps/courses/students.json.jbuilder +++ b/app/views/weapps/courses/students.json.jbuilder @@ -1,12 +1,2 @@ -json.students do - json.array! @students do |student| - json.user_id student.user_id - json.login student.user.try(:login) - json.name student.user.try(:real_name) - json.student_id student.user.try(:student_id) - json.course_member_id student.id - json.user_phone @course.excellent ? "" : student.user.hidden_phone - json.image_url url_to_avatar(student.user) - end -end +json.students student_list @students, @course.excellent json.students_count @students_count \ No newline at end of file