diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 411481f0e..d81b3abb3 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -308,7 +308,7 @@ class ApplicationController < ActionController::Base end if !User.current.logged? && Rails.env.development? - User.current = User.find 1 + User.current = User.find 8686 end diff --git a/app/controllers/weapps/courses_controller.rb b/app/controllers/weapps/courses_controller.rb index 357b2a503..bef1ca9ac 100644 --- a/app/controllers/weapps/courses_controller.rb +++ b/app/controllers/weapps/courses_controller.rb @@ -1,8 +1,8 @@ class Weapps::CoursesController < Weapps::BaseController before_action :require_login - before_action :set_course, except: [:create] - before_action :user_course_identity, except: [:basic_info, :create] - before_action :check_account, only: [:create] + before_action :set_course, except: [:create, :check_invite_code] + before_action :user_course_identity, except: [:basic_info, :create, :check_invite_code] + before_action :check_account, only: [:create, :check_invite_code] before_action :teacher_allowed, only: [:edit, :update] before_action :teacher_or_admin_allowed, only: [:change_member_roles, :delete_course_teachers] @@ -38,6 +38,23 @@ class Weapps::CoursesController < Weapps::BaseController @categories = current_course.shixun_course_modules.first&.course_second_categories end + def check_invite_code + tip_exception(-1, "邀请码不能为空") if params[:invite_code].blank? + invite_code = params[:invite_code] + course = Course.find_by(invite_code: invite_code, is_delete: 0, invite_code_halt: 0) + course_group = CourseGroup.find_by(invite_code: invite_code) + if course.blank? + tip_exception(-1, "邀请码无效") if course_group.blank? + + course = Course.find_by(id: course_group.course_id, is_delete: 0, invite_code_halt: 0) + tip_exception(-1, "邀请码无效") if course.blank? + end + + tip_exception(-1, "课堂已结束,无法加入") if course.is_end + + render_ok + end + # 教师列表 def teachers @course = current_course @@ -184,11 +201,11 @@ class Weapps::CoursesController < Weapps::BaseController private def course_params - params.permit(:name, :course_list_name, :credit, course_module_types: []) + params.permit(:name, :course_list_name, :credit, :end_date, course_module_types: []) end def update_course_params - params.permit(:name, :course_list_name, :credit) + params.permit(:name, :course_list_name, :credit, :end_date) end def current_course diff --git a/app/forms/item_banks/save_item_form.rb b/app/forms/item_banks/save_item_form.rb index b10835266..25e5a289a 100644 --- a/app/forms/item_banks/save_item_form.rb +++ b/app/forms/item_banks/save_item_form.rb @@ -7,8 +7,6 @@ class ItemBanks::SaveItemForm validates :sub_discipline_id, presence: true validates :item_type, presence: true, inclusion: {in: %W(SINGLE MULTIPLE JUDGMENT COMPLETION SUBJECTIVE PRACTICAL PROGRAM)} validates :difficulty, presence: true, inclusion: {in: 1..3}, numericality: { only_integer: true } - validates :name, presence: true, length: { maximum: 1000, too_long: "不能超过1000个字符" } - validates :analysis, length: { maximum: 1000, too_long: "不能超过1000个字符" } def validate! super @@ -27,7 +25,6 @@ class ItemBanks::SaveItemForm attr_accessor :choice_text, :is_answer - validates :choice_text, presence: true, length: { maximum: 500, too_long: "不能超过500个字符" } validates :is_answer, presence: true, inclusion: {in: 0..1}, numericality: { only_integer: true } end end \ No newline at end of file diff --git a/app/forms/weapps/create_course_form.rb b/app/forms/weapps/create_course_form.rb index 9244096ab..64d0a506f 100644 --- a/app/forms/weapps/create_course_form.rb +++ b/app/forms/weapps/create_course_form.rb @@ -2,7 +2,7 @@ class Weapps::CreateCourseForm include ActiveModel::Model attr_accessor :course - attr_accessor :name, :course_list_name, :credit, :course_module_types + attr_accessor :name, :course_list_name, :credit, :course_module_types, :end_date validates :name, presence: true validates :course_list_name, presence: true diff --git a/app/forms/weapps/update_course_form.rb b/app/forms/weapps/update_course_form.rb index 6fb1d81d9..60509dd1d 100644 --- a/app/forms/weapps/update_course_form.rb +++ b/app/forms/weapps/update_course_form.rb @@ -2,7 +2,7 @@ class Weapps::UpdateCourseForm include ActiveModel::Model attr_accessor :course - attr_accessor :name, :course_list_name, :credit + attr_accessor :name, :course_list_name, :credit, :end_date validates :name, presence: true validates :course_list_name, presence: true diff --git a/app/models/item_analysis.rb b/app/models/item_analysis.rb index dc1453982..e7177c2f8 100644 --- a/app/models/item_analysis.rb +++ b/app/models/item_analysis.rb @@ -1,3 +1,4 @@ class ItemAnalysis < ApplicationRecord belongs_to :item_bank, touch: true + validates :analysis, length: { maximum: 5000, too_long: "不能超过5000个字符" } end diff --git a/app/models/item_bank.rb b/app/models/item_bank.rb index 242b7de92..71cfd07a4 100644 --- a/app/models/item_bank.rb +++ b/app/models/item_bank.rb @@ -13,6 +13,7 @@ class ItemBank < ApplicationRecord has_many :tag_disciplines, through: :tag_discipline_containers belongs_to :container, polymorphic: true, optional: true + validates :name, presence: true, length: { maximum: 1000, too_long: "不能超过1000个字符" } def analysis item_analysis&.analysis diff --git a/app/models/item_choice.rb b/app/models/item_choice.rb index 2b2b08c9d..adee69f66 100644 --- a/app/models/item_choice.rb +++ b/app/models/item_choice.rb @@ -1,3 +1,5 @@ class ItemChoice < ApplicationRecord belongs_to :item_bank, touch: true + validates :choice_text, presence: true, length: { maximum: 500, too_long: "不能超过500个字符" } + end diff --git a/app/services/weapps/create_course_service.rb b/app/services/weapps/create_course_service.rb index 196533bb6..2e5cc5d2f 100644 --- a/app/services/weapps/create_course_service.rb +++ b/app/services/weapps/create_course_service.rb @@ -14,6 +14,7 @@ class Weapps::CreateCourseService < ApplicationService course.school_id = course.teacher&.school_id course.is_public = 0 course.credit = params[:credit].blank? ? nil : params[:credit] + course.end_date = params[:end_date].blank? ? nil : params[:end_date] course_list = CourseList.find_by(name: params[:course_list_name].to_s.strip) if course_list course.course_list_id = course_list.id @@ -21,6 +22,8 @@ class Weapps::CreateCourseService < ApplicationService new_course_list = CourseList.create!(name: params[:course_list_name].to_s.strip, user_id: course.tea_id, is_admin: 0) course.course_list_id = new_course_list.id end + course.is_end = course.end_date.present? && course.end_date < Date.today + course.save! course.generate_invite_code diff --git a/app/services/weapps/update_course_service.rb b/app/services/weapps/update_course_service.rb index 0395a53ad..b6663bc73 100644 --- a/app/services/weapps/update_course_service.rb +++ b/app/services/weapps/update_course_service.rb @@ -12,6 +12,7 @@ class Weapps::UpdateCourseService < ApplicationService ActiveRecord::Base.transaction do course.name = params[:name].to_s.strip course.credit = params[:credit].blank? ? nil : params[:credit] + course.end_date = params[:end_date].blank? ? nil : params[:end_date] course_list = CourseList.find_by(name: params[:course_list_name].to_s.strip) if course_list course.course_list_id = course_list.id @@ -19,6 +20,7 @@ class Weapps::UpdateCourseService < ApplicationService new_course_list = CourseList.create!(name: params[:course_list_name].to_s.strip, user_id: course.tea_id, is_admin: 0) course.course_list_id = new_course_list.id end + course.is_end = course.end_date.present? && course.end_date < Date.today course.save! end course diff --git a/app/views/weapps/courses/edit.json.jbuilder b/app/views/weapps/courses/edit.json.jbuilder index ef7a28a42..1b7d5aaa2 100644 --- a/app/views/weapps/courses/edit.json.jbuilder +++ b/app/views/weapps/courses/edit.json.jbuilder @@ -1,2 +1,2 @@ -json.(@course, :id, :name, :credit) +json.(@course, :id, :name, :credit, :end_date) json.course_list_name @course.course_list&.name \ No newline at end of file diff --git a/app/views/weapps/homes/show.json.jbuilder b/app/views/weapps/homes/show.json.jbuilder index 089c70dbb..f307d64fe 100644 --- a/app/views/weapps/homes/show.json.jbuilder +++ b/app/views/weapps/homes/show.json.jbuilder @@ -18,11 +18,13 @@ end json.course_count @course_count json.courses @courses.each do |course| - json.(course, :id, :name, :visits, :course_members_count) + json.(course, :id, :name, :visits, :course_members_count, :is_end, :invite_code_halt) json.creator course.teacher.real_name json.avatar_url url_to_avatar(course.teacher) + json.invite_code course.invite_code_halt == 0 ? course.generate_invite_code : "" json.school course.school&.name course_member = @category == "study" ? course.students.where(user_id: @user.id).first : course.teachers.where(user_id: @user.id).first json.sticky course_member.sticky + json.course_identity current_user.course_identity(course) end diff --git a/config/routes.rb b/config/routes.rb index 4e6d26de3..3df8a96da 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1043,6 +1043,10 @@ Rails.application.routes.draw do get :course_groups get :basic_info end + + collection do + get :check_invite_code + end end resources :homework_commons do diff --git a/public/images/educoder/xcx/pathsbanner.png b/public/images/educoder/xcx/pathsbanner.png new file mode 100644 index 000000000..1023b49d5 Binary files /dev/null and b/public/images/educoder/xcx/pathsbanner.png differ diff --git a/public/react/src/AppConfig.js b/public/react/src/AppConfig.js index 4667ebbde..a3c081285 100644 --- a/public/react/src/AppConfig.js +++ b/public/react/src/AppConfig.js @@ -46,7 +46,7 @@ if (isDev) { // 老师 //debugType="teacher"; // 学生 -debugType="student"; +//debugType="student"; diff --git a/public/react/src/common/components/form/City.js b/public/react/src/common/components/form/City.js index a94fef765..5ee0c080b 100644 --- a/public/react/src/common/components/form/City.js +++ b/public/react/src/common/components/form/City.js @@ -542,6 +542,9 @@ const options = [{ children: [{ value: "南宁", label: '南宁' + },{ + value: "来宾", + label: '来宾' },{ value: '百色', label: '百色' @@ -810,6 +813,9 @@ const options = [{ children: [{ value: "武汉", label: '武汉' + },{ + value: "天门", + label: '天门' },{ value: '恩施', label: '恩施' @@ -1626,6 +1632,9 @@ const options = [{ children: [{ value: "杭州", label: '杭州' + },{ + value: "温州", + label: '温州' },{ value: '安吉', label: '安吉'