From db63c7574df8ff623a7328b610dd9974cbf1bce4 Mon Sep 17 00:00:00 2001
From: cxt <853663049@qq.com>
Date: Mon, 9 Mar 2020 15:17:13 +0800
Subject: [PATCH 01/36] =?UTF-8?q?=E7=AD=BE=E5=88=B0=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../course_member_attendances_controller.rb | 17 +++++++++++------
app/models/course_member_attendance.rb | 2 +-
...0309071103_migrate_member_attendance_mode.rb | 5 +++++
3 files changed, 17 insertions(+), 7 deletions(-)
create mode 100644 db/migrate/20200309071103_migrate_member_attendance_mode.rb
diff --git a/app/controllers/weapps/course_member_attendances_controller.rb b/app/controllers/weapps/course_member_attendances_controller.rb
index 7e315fc85..196d20fda 100644
--- a/app/controllers/weapps/course_member_attendances_controller.rb
+++ b/app/controllers/weapps/course_member_attendances_controller.rb
@@ -29,18 +29,23 @@ class Weapps::CourseMemberAttendancesController < ApplicationController
def create
tip_exception("签到码不能为空") if params[:code].blank?
- tip_exception("attendance_mode参数不对") unless ["NUMBER", "QRCODE"].include?(params[:attendance_mode])
+ tip_exception("attendance_mode参数不对") unless ["NUMBER", "QRCODE", "QUICK"].include?(params[:attendance_mode])
- attendance = CourseAttendance.find_by(attendance_code: params[:code])
- tip_exception("签到码输入有误") if attendance.blank? || attendance.course.blank?
+ if params[:attendance_mode] == "QUICK"
+ attendance = CourseAttendance.find_by(id: params[:attendance_id])
+ else
+ attendance = CourseAttendance.find_by(attendance_code: params[:code])
+ end
+ tip_exception("该签到不存在") if attendance.blank? || attendance.course.blank?
member = attendance.course.students.find_by(user_id: current_user.id)
- tip_exception("签到码输入有误") if member.blank?
+ tip_exception("该签到不存在") if member.blank?
tip_exception("不在签到时间内") unless attendance.current_attendance?
- tip_exception("只支持数字签到") if attendance.mode != "ALL" && attendance.mode == "NUMBER" && params[:attendance_mode] == "QRCODE"
- tip_exception("只支持二维码签到") if attendance.mode != "ALL" && attendance.mode == "QRCODE" && params[:attendance_mode] == "NUMBER"
+ tip_exception("只支持数字签到") if attendance.mode != "ALL" && attendance.mode == "NUMBER" && params[:attendance_mode] != "NUMBER"
+ tip_exception("只支持二维码签到") if attendance.mode != "ALL" && attendance.mode == "QRCODE" && params[:attendance_mode] != "QRCODE"
+ tip_exception("只支持快捷签到") if attendance.mode == "QUICK" && params[:attendance_mode] != "QUICK"
current_attendance = attendance.course_member_attendances.find_by(user_id: current_user.id)
if current_attendance.present?
diff --git a/app/models/course_member_attendance.rb b/app/models/course_member_attendance.rb
index 152bb48b6..b854acfe7 100644
--- a/app/models/course_member_attendance.rb
+++ b/app/models/course_member_attendance.rb
@@ -1,6 +1,6 @@
class CourseMemberAttendance < ApplicationRecord
# attendance_mode :0 初始数据,1 二维码签到,2 数字签到,3 老师签到
- enum attendance_mode: { DEFAULT: 0, QRCODE: 1, NUMBER: 2, TEACHER: 3}
+ enum attendance_mode: { DEFAULT: 0, QRCODE: 1, NUMBER: 2, QUICK: 3, TEACHER: 4}
# attendance_status :1 正常签到,2 请假,0 旷课
enum attendance_status: { NORMAL: 1, LEAVE: 2, ABSENCE: 0 }
belongs_to :course_member
diff --git a/db/migrate/20200309071103_migrate_member_attendance_mode.rb b/db/migrate/20200309071103_migrate_member_attendance_mode.rb
new file mode 100644
index 000000000..41f81444a
--- /dev/null
+++ b/db/migrate/20200309071103_migrate_member_attendance_mode.rb
@@ -0,0 +1,5 @@
+class MigrateMemberAttendanceMode < ActiveRecord::Migration[5.2]
+ def change
+ CourseMemberAttendance.where(attendance_mode: 3).update_all(attendance_mode: 4)
+ end
+end
From 8f37a385d709becc5efe32ca12c671a537487627 Mon Sep 17 00:00:00 2001
From: cxt <853663049@qq.com>
Date: Mon, 9 Mar 2020 15:17:46 +0800
Subject: [PATCH 02/36] =?UTF-8?q?=E8=A7=86=E9=A2=91=E4=BA=8C=E7=BA=A7?=
=?UTF-8?q?=E7=9B=AE=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/helpers/courses_helper.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb
index e9d6e4b06..ed76a4b0c 100644
--- a/app/helpers/courses_helper.rb
+++ b/app/helpers/courses_helper.rb
@@ -98,7 +98,7 @@ module CoursesHelper
when "attachment"
"/courses/#{course.id}/file/#{category.id}"
when "video"
- "/courses/#{course.id}/course_videos/#{category.id}"
+ "/courses/#{course.id}/course_video/#{category.id}"
end
end
From cc15a21f7ef3109d595e1cc5a36ca8cf00ca394c Mon Sep 17 00:00:00 2001
From: cxt <853663049@qq.com>
Date: Mon, 9 Mar 2020 15:29:44 +0800
Subject: [PATCH 03/36] =?UTF-8?q?=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/courses_controller.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index fe9d20d8d..e69f00380 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -104,7 +104,7 @@ class CoursesController < ApplicationController
def course_videos
videos = @course.videos
if params[:category_id].present? && params[:category_id].to_i != 0
- videos = videos.where(course_second_category_id: params[:category_id].to_i)
+ videos = videos.where(course_videos: {course_second_category_id: params[:category_id].to_i})
end
videos = custom_sort(videos, params[:sort_by], params[:sort_direction])
From 58fb55ed0266b2b5ef7d685d9998db38436f9615 Mon Sep 17 00:00:00 2001
From: cxt <853663049@qq.com>
Date: Mon, 9 Mar 2020 15:45:27 +0800
Subject: [PATCH 04/36] =?UTF-8?q?=E7=AD=BE=E5=88=B0=E7=9A=84=E8=B0=83?=
=?UTF-8?q?=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../course_member_attendances_controller.rb | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/app/controllers/weapps/course_member_attendances_controller.rb b/app/controllers/weapps/course_member_attendances_controller.rb
index 196d20fda..7e315fc85 100644
--- a/app/controllers/weapps/course_member_attendances_controller.rb
+++ b/app/controllers/weapps/course_member_attendances_controller.rb
@@ -29,23 +29,18 @@ class Weapps::CourseMemberAttendancesController < ApplicationController
def create
tip_exception("签到码不能为空") if params[:code].blank?
- tip_exception("attendance_mode参数不对") unless ["NUMBER", "QRCODE", "QUICK"].include?(params[:attendance_mode])
+ tip_exception("attendance_mode参数不对") unless ["NUMBER", "QRCODE"].include?(params[:attendance_mode])
- if params[:attendance_mode] == "QUICK"
- attendance = CourseAttendance.find_by(id: params[:attendance_id])
- else
- attendance = CourseAttendance.find_by(attendance_code: params[:code])
- end
- tip_exception("该签到不存在") if attendance.blank? || attendance.course.blank?
+ attendance = CourseAttendance.find_by(attendance_code: params[:code])
+ tip_exception("签到码输入有误") if attendance.blank? || attendance.course.blank?
member = attendance.course.students.find_by(user_id: current_user.id)
- tip_exception("该签到不存在") if member.blank?
+ tip_exception("签到码输入有误") if member.blank?
tip_exception("不在签到时间内") unless attendance.current_attendance?
- tip_exception("只支持数字签到") if attendance.mode != "ALL" && attendance.mode == "NUMBER" && params[:attendance_mode] != "NUMBER"
- tip_exception("只支持二维码签到") if attendance.mode != "ALL" && attendance.mode == "QRCODE" && params[:attendance_mode] != "QRCODE"
- tip_exception("只支持快捷签到") if attendance.mode == "QUICK" && params[:attendance_mode] != "QUICK"
+ tip_exception("只支持数字签到") if attendance.mode != "ALL" && attendance.mode == "NUMBER" && params[:attendance_mode] == "QRCODE"
+ tip_exception("只支持二维码签到") if attendance.mode != "ALL" && attendance.mode == "QRCODE" && params[:attendance_mode] == "NUMBER"
current_attendance = attendance.course_member_attendances.find_by(user_id: current_user.id)
if current_attendance.present?
From 6b780d50fc3c8188ff19b73dec665d5c52360800 Mon Sep 17 00:00:00 2001
From: daiao <358551898@qq.com>
Date: Mon, 9 Mar 2020 15:46:27 +0800
Subject: [PATCH 05/36] =?UTF-8?q?TPM=E5=85=B3=E5=8D=A1=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=EF=BC=8C=E6=AF=8F=E4=B8=80=E5=85=B3=E5=8D=A1=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E5=BC=80=E5=90=AF=E6=8C=91=E6=88=98=E5=85=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/views/challenges/index.json.jbuilder | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/views/challenges/index.json.jbuilder b/app/views/challenges/index.json.jbuilder
index c53ab9c58..eb7ee900d 100644
--- a/app/views/challenges/index.json.jbuilder
+++ b/app/views/challenges/index.json.jbuilder
@@ -19,7 +19,7 @@ if @challenges.present?
json.passed_count challenge.user_passed_count
json.playing_count challenge.playing_count
json.name_url shixun_challenge_path(challenge, shixun_identifier: @shixun.identifier)
- #json.open_game challenge.open_game(@user.id, @shixun)
+ json.open_game challenge.open_game(@user.id, @shixun)
if @editable
json.edit_url edit_shixun_challenge_path(challenge, shixun_identifier: @shixun.identifier)
json.delete_url shixun_challenge_path(challenge, shixun_identifier: @shixun.identifier)
From 25956ec86ea60665aa1445d2f2cdc7e7faf2801d Mon Sep 17 00:00:00 2001
From: daiao <358551898@qq.com>
Date: Mon, 9 Mar 2020 15:50:24 +0800
Subject: [PATCH 06/36] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E5=85=B3=E5=8D=A1?=
=?UTF-8?q?=E5=88=97=E8=A1=A8=E5=A2=9E=E5=8A=A0=E5=BC=80=E5=90=AF=E6=8C=91?=
=?UTF-8?q?=E6=88=98=E7=9A=84=E6=8C=89=E9=92=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/models/challenge.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/models/challenge.rb b/app/models/challenge.rb
index 70fac990b..bc504a5bc 100644
--- a/app/models/challenge.rb
+++ b/app/models/challenge.rb
@@ -74,7 +74,7 @@ class Challenge < ApplicationRecord
if game.present?
shixun.task_pass || game.status != 3 ? "/tasks/#{game.identifier}" : ""
else
- "/api/shixuns/#{shixun.identifier}/shixun_exec"
+ self.position == 1 ? "/api/shixuns/#{shixun.identifier}/shixun_exec" : ""
end
end
From 9b44fff61f0fe24d657fc8dcb10bdf2be6f49acd Mon Sep 17 00:00:00 2001
From: cxt <853663049@qq.com>
Date: Mon, 9 Mar 2020 15:55:58 +0800
Subject: [PATCH 07/36] =?UTF-8?q?=E4=BA=8C=E7=BA=A7=E7=9B=AE=E5=BD=95?=
=?UTF-8?q?=E7=9A=84=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/courses_controller.rb | 3 +++
app/views/courses/course_videos.json.jbuilder | 7 ++++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index e69f00380..825e18a41 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -103,7 +103,10 @@ class CoursesController < ApplicationController
def course_videos
videos = @course.videos
+ @video_module = @course.course_modules.find_by(module_type: "video")
if params[:category_id].present? && params[:category_id].to_i != 0
+ @category = @video_module&.course_second_categories.find_by(id: params[:category_id])
+ tip_exception("子目录id有误") if !@category.present?
videos = videos.where(course_videos: {course_second_category_id: params[:category_id].to_i})
end
diff --git a/app/views/courses/course_videos.json.jbuilder b/app/views/courses/course_videos.json.jbuilder
index 807ff92bb..db4f4006c 100644
--- a/app/views/courses/course_videos.json.jbuilder
+++ b/app/views/courses/course_videos.json.jbuilder
@@ -1,3 +1,8 @@
json.count @count
json.videos @videos, partial: 'users/videos/video', as: :video
-json.course_id @course.id
\ No newline at end of file
+json.course_id @course.id
+if @category.present?
+ json.category_id @category.id
+ json.category_name @category.name
+end
+json.course_module_id @video_module&.id
\ No newline at end of file
From 961bfeb0bd7c429226a48a1bf233540b9121841a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com>
Date: Mon, 9 Mar 2020 16:17:14 +0800
Subject: [PATCH 08/36] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E9=A6=96=E9=A1=B5?=
=?UTF-8?q?=E6=8C=89=E9=92=AE=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../react/src/modules/tpm/shixuns/shixun-search-bar/index.jsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/react/src/modules/tpm/shixuns/shixun-search-bar/index.jsx b/public/react/src/modules/tpm/shixuns/shixun-search-bar/index.jsx
index 29a3b8485..c936de66d 100644
--- a/public/react/src/modules/tpm/shixuns/shixun-search-bar/index.jsx
+++ b/public/react/src/modules/tpm/shixuns/shixun-search-bar/index.jsx
@@ -91,7 +91,7 @@ export default ({ StatusEnquiry, allUpdatashixunlist, Updatasearchlist }) => {
方向:
-
全部
+
全部
{
navs.map((item, key) => {
return (
From 5e65dc5b927c2c8ba5ece78abc4b7ace5faca3ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com>
Date: Mon, 9 Mar 2020 16:27:29 +0800
Subject: [PATCH 09/36] =?UTF-8?q?=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/images/educoder/xcx/xuesqiandao.png | Bin 0 -> 150484 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100755 public/images/educoder/xcx/xuesqiandao.png
diff --git a/public/images/educoder/xcx/xuesqiandao.png b/public/images/educoder/xcx/xuesqiandao.png
new file mode 100755
index 0000000000000000000000000000000000000000..7124615fd9cf540b1f1bc289c5eab85fff09e365
GIT binary patch
literal 150484
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