From 0e4096c33e0aa24d604115bae591e6d4fd06077d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Wed, 4 Dec 2019 16:21:21 +0800 Subject: [PATCH 01/19] =?UTF-8?q?=E9=97=AE=E5=8D=B7=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E5=90=8E=E6=98=BE=E7=A4=BA=E4=BF=9D=E5=AD=98=E5=B9=B6=E7=BB=A7?= =?UTF-8?q?=E7=BB=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../react/src/modules/courses/poll/PollNew.js | 51 +++++++++++++++++-- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/public/react/src/modules/courses/poll/PollNew.js b/public/react/src/modules/courses/poll/PollNew.js index 7251f05a8..248434295 100644 --- a/public/react/src/modules/courses/poll/PollNew.js +++ b/public/react/src/modules/courses/poll/PollNew.js @@ -3151,8 +3151,11 @@ class PollNew extends Component { onClick={() => this.Deleteadddom(indexo,true)}>取消 this.Deleteadddomthree(indexo, itemo,true)}>保存 + { + polls_status && polls_status < 2 ? this.Deleteadddomtwo(indexo, itemo,true)}>保存并继续 + :""} @@ -3248,8 +3251,11 @@ class PollNew extends Component { onClick={() => this.Deleteadddom(indexo,true)}>取消 this.Deleteadddomthree(indexo, itemo,true)}>保存 + { + polls_status && polls_status < 2 ? this.Deleteadddomtwo(indexo, itemo,true)}>保存并继续 + :""} @@ -3261,8 +3267,11 @@ class PollNew extends Component { onClick={() => this.Deleteadddom(indexo,true)}>取消 this.Deleteadddomthree(indexo, itemo,true)}>保存 + { + polls_status && polls_status < 2 ? this.Deleteadddomtwo(indexo, itemo,true)}>保存并继续 + :""} ) @@ -3274,8 +3283,11 @@ class PollNew extends Component { onClick={() => this.Deleteadddom(indexo,true)}>取消 this.Deleteadddomthree(indexo, itemo,true)}>保存 + { + polls_status && polls_status < 2 ? this.Deleteadddomtwo(indexo, itemo,true)}>保存并继续 + :""} : @@ -3393,8 +3405,11 @@ class PollNew extends Component { onClick={() => this.Deleteadddom(indexo,true)}>取消 this.Deleteadddomthree(indexo, itemo,true)}>保存 + { + polls_status && polls_status < 2 ? this.Deleteadddomtwo(indexo, itemo,true)}>保存并继续 + :""} @@ -3490,8 +3505,11 @@ class PollNew extends Component { onClick={() => this.Deleteadddom(indexo,true)}>取消 this.Deleteadddomthree(indexo, itemo,true)}>保存 + { + polls_status && polls_status < 2 ? this.Deleteadddomtwo(indexo, itemo,true)}>保存并继续 + :""} @@ -3503,8 +3521,11 @@ class PollNew extends Component { onClick={() => this.Deleteadddom(indexo,true)}>取消 this.Deleteadddomthree(indexo, itemo,true)}>保存 + { + polls_status && polls_status < 2 ? this.Deleteadddomtwo(indexo, itemo,true)}>保存并继续 + :""} ) @@ -3516,8 +3537,11 @@ class PollNew extends Component { onClick={() => this.Deleteadddom(indexo,true)}>取消 this.Deleteadddomthree(indexo, itemo,true)}>保存 + { + polls_status && polls_status < 2 ? this.Deleteadddomtwo(indexo, itemo,true)}>保存并继续 + :""} : @@ -3644,8 +3668,12 @@ class PollNew extends Component { onClick={() => this.Deleteadddom(indexo)}>取消 this.Deleteadddomthree(indexo, itemo)}>保存 - this.Deleteadddomtwo(indexo, itemo)}>保存并继续 + { + polls_status && polls_status < 2 ? + this.Deleteadddomtwo(indexo, itemo)}>保存并继续 + :"" + } @@ -3741,8 +3769,12 @@ class PollNew extends Component { onClick={() => this.Deleteadddom(indexo)}>取消 this.Deleteadddomthree(indexo, itemo)}>保存 + { + polls_status&&polls_status<2? this.Deleteadddomtwo(indexo, itemo)}>保存并继续 + :"" + } @@ -3754,8 +3786,12 @@ class PollNew extends Component { onClick={() => this.Deleteadddom(indexo)}>取消 this.Deleteadddomthree(indexo, itemo)}>保存 + { + polls_status&&polls_status<2? this.Deleteadddomtwo(indexo, itemo)}>保存并继续 + :"" + } ) @@ -3767,8 +3803,13 @@ class PollNew extends Component { onClick={() => this.Deleteadddom(indexo)}>取消 this.Deleteadddomthree(indexo, itemo)}>保存 - this.Deleteadddomtwo(indexo, itemo)}>保存并继续 + { + polls_status&&polls_status<2? + this.Deleteadddomtwo(indexo, itemo)}>保存并继续 + :"" + } + : @@ -3873,4 +3914,4 @@ class PollNew extends Component { const WrappedPollNew = Form.create({name: 'taskPollNew'})(PollNew); // RouteHOC() -export default (WrappedPollNew); \ No newline at end of file +export default (WrappedPollNew); From 197bab9db6e76953d7ee3d9ef2ade7aba3bf781d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Wed, 4 Dec 2019 16:39:40 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E9=97=AE=E5=8D=B7=E7=BB=A7=E7=BB=AD?= =?UTF-8?q?=E7=AD=94=E9=A2=98=20=E6=9F=A5=E7=9C=8B=E7=AD=94=E9=A2=98?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/modules/courses/poll/PollDetailIndex.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/public/react/src/modules/courses/poll/PollDetailIndex.js b/public/react/src/modules/courses/poll/PollDetailIndex.js index 184e95333..38cc3796e 100644 --- a/public/react/src/modules/courses/poll/PollDetailIndex.js +++ b/public/react/src/modules/courses/poll/PollDetailIndex.js @@ -213,7 +213,7 @@ class PollDetailIndex extends Component{ user_permission && user_permission.poll_publish_count>0 ?
  • - { user_permission && user_permission.current_status ==0 ? "继续答题" : user_permission.current_status == 1 ? - (polls_status===2?"":polls_status===3?"":polls_status===4?"":"查看答题") - : "开始答题" } + { user_permission && user_permission.current_status ==0 ? "继续答题" : + user_permission.current_status == 1 ? + (polls_status===1?"":"查看答题") + :user_permission.current_status == 2 ?(polls_status===3?"":polls_status===4?"":"开始答题"):"" + } :"" } @@ -266,4 +268,4 @@ class PollDetailIndex extends Component{ ) } } -export default PollDetailIndex \ No newline at end of file +export default PollDetailIndex From 99a21ac34124880d42635d63e719fdb0c4736918 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Wed, 4 Dec 2019 22:54:51 +0800 Subject: [PATCH 03/19] =?UTF-8?q?=E8=B0=83=E6=95=B4=20=E6=8F=90=E7=9A=84bu?= =?UTF-8?q?g=20=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shixunHomework/Trainingjobsetting.js | 93 ++++++++++--------- 1 file changed, 48 insertions(+), 45 deletions(-) diff --git a/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js b/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js index 0a76ae339..1b20f56bc 100644 --- a/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js +++ b/public/react/src/modules/courses/shixunHomework/Trainingjobsetting.js @@ -144,8 +144,8 @@ class Trainingjobsetting extends Component { } componentDidMount() { - console.log("Trainingjobsetting"); - console.log("componentDidMount"); + //console.log("Trainingjobsetting"); + //console.log("componentDidMount"); this.getTrainingjobsetting(true); let query = this.props.location.pathname; const type = query.split('/'); @@ -339,6 +339,7 @@ class Trainingjobsetting extends Component { var datas = challenge_settings; var challenge_scoredata = []; + let datasinde=0; for (var i = 0; i < datas.length; i++) { if (datas[i].checked === true) { // var object = { @@ -347,9 +348,16 @@ class Trainingjobsetting extends Component { // }; challenge_scoredata.push(datas[i].challenge_score); // array.push(object) + }else{ + datasinde=datasinde+1; } } + + // //console.log("datasinde Calculatethetotalscore"); + // //console.log(datasinde); + // //console.log(datas.length); + // if(array === "[]" || array.length === 0){ // this.props.showNotification(`没有关卡不能更新设置`); // return; @@ -361,32 +369,27 @@ class Trainingjobsetting extends Component { // latedeductiontwos = this.state.latedeductiontwo; // } // if(challenge_scoredata.length>0){ - let len = 0; - console.log(challenge_scoredata); - for (var k = 0; k < challenge_scoredata.length; k++) { - len = len + parseFloat(challenge_scoredata[k]); - // console.log(challenge_scoredata[k]); - // console.log(len); + if(datasinde!==datas.length){ + let len = 0; + //console.log(challenge_scoredata); + for (var k = 0; k < challenge_scoredata.length; k++) { + len = len + parseFloat(challenge_scoredata[k]); + } + let max = latedeductiontwos + len; + let maxs = max.toFixed(1); + this.setState({ + CalculateMax: maxs, + }) } - let max = latedeductiontwos + len; - let maxs = max.toFixed(1); - console.log("Calculatethetotalscore"); - console.log(maxs); - this.setState({ - CalculateMax: maxs, - }) - - // } - } //提交数据 pustdate = () => { var thiss = this; - // console.log("pustdate"); + // //console.log("pustdate"); var homeworkid = this.props.match.params.homeworkid var array = []; var datas = this.state.challenge_settings; @@ -399,9 +402,9 @@ class Trainingjobsetting extends Component { }; challenge_scoredata.push(datas[i].challenge_score); array.push(object) - // console.log("datas[i].challenge_score"); - // console.log(i); - // console.log(datas[i].challenge_score); + // //console.log("datas[i].challenge_score"); + // //console.log(i); + // //console.log(datas[i].challenge_score); } } @@ -690,7 +693,7 @@ class Trainingjobsetting extends Component { if (this.state.unifiedsetting === true) { - console.log("统一设置"); + //console.log("统一设置"); data = { unified_setting: this.state.unifiedsetting, //统一配置 publish_time: moment(this.state.publish_time).format('YYYY-MM-DD HH:mm'), //发布时间 @@ -999,21 +1002,21 @@ class Trainingjobsetting extends Component { for (var i = 0; i < challenge_settingsdata.length; i++) { if (challenge_settingsdata[i].checked === true) { if (srbool === false) { - console.log(intkks); + //console.log(intkks); mact = mact + 1; if (mact === srorelength) { challenge_settingsdata[i].challenge_score = (parseFloat(Proportion.toFixed(1)) + parseFloat(intkks.toFixed(1))).toFixed(1); - console.log(challenge_settingsdata[i].challenge_score); + //console.log(challenge_settingsdata[i].challenge_score); } else { challenge_settingsdata[i].challenge_score = Proportion.toFixed(1); } } else { - console.log(intkk); + //console.log(intkk); mact = mact + 1; if (mact === srorelength) { challenge_settingsdata[i].challenge_score = (parseFloat(Proportion.toFixed(1)) + parseFloat(intkk.toFixed(1))).toFixed(1); - console.log(challenge_settingsdata[i].challenge_score); + //console.log(challenge_settingsdata[i].challenge_score); } else { challenge_settingsdata[i].challenge_score = Proportion.toFixed(1); } @@ -1092,14 +1095,14 @@ class Trainingjobsetting extends Component { if (mact === macts) { if (bool === true) { challenge_settingsdata[i].challenge_score = (parseFloat(challenge_settingsdata[i].challenge_score) + parseFloat(expzsy.toFixed(1))).toFixed(1); - console.log(parseFloat(challenge_settingsdata[i].challenge_score) + parseFloat(expzsy.toFixed(1))); - console.log(parseFloat(expzsy.toFixed(1))); + //console.log(parseFloat(challenge_settingsdata[i].challenge_score) + parseFloat(expzsy.toFixed(1))); + //console.log(parseFloat(expzsy.toFixed(1))); } else { challenge_settingsdata[i].challenge_score = (parseFloat(challenge_settingsdata[i].challenge_score) - parseFloat(expzsy.toFixed(1))).toFixed(1); - console.log(parseFloat(challenge_settingsdata[i].challenge_score) - parseFloat(expzsy.toFixed(1))); - console.log(parseFloat(expzsy.toFixed(1))); + //console.log(parseFloat(challenge_settingsdata[i].challenge_score) - parseFloat(expzsy.toFixed(1))); + //console.log(parseFloat(expzsy.toFixed(1))); } } @@ -1407,7 +1410,7 @@ class Trainingjobsetting extends Component { }); } ontimeonok = (value) => { - console.log("ontimeonok点击了2"); + //console.log("ontimeonok点击了2"); if (value === undefined) { return; @@ -1479,7 +1482,7 @@ class Trainingjobsetting extends Component { } } onStartChange = (value, dateString) => { - console.log("onStartChange点击了1"); + //console.log("onStartChange点击了1"); if (value == null) { this.setState({ @@ -1508,8 +1511,8 @@ class Trainingjobsetting extends Component { } catch (e) { } - // console.log(value); - console.log(dateString); + // //console.log(value); + //console.log(dateString); // console.log(handleDateString(dateString)); // this.onChangedata('publish_time', value, dateString); this.setState({ @@ -1662,7 +1665,7 @@ class Trainingjobsetting extends Component { rulesdata.map((item, key) => { if (item.publish_time != "Invalid date") { if (moment(value, "YYYY-MM-DD HH:mm") <= moment(item.publish_time)) { - console.log(moment(item.publish_time, "YYYY-MM-DD HH:mm") <= moment(publish_time)) + //console.log(moment(item.publish_time, "YYYY-MM-DD HH:mm") <= moment(publish_time)) let kes = key + 1; this.setState({ hand__e_tip: "补交时间不能早于发布规则" + kes + "的发布时间", @@ -2061,9 +2064,9 @@ class Trainingjobsetting extends Component { } } catch (e) { - console.log("报错editSettings"); - console.log(1); - console.log(e); + //console.log("报错editSettings"); + //console.log(1); + //console.log(e); } @@ -2089,8 +2092,8 @@ class Trainingjobsetting extends Component { } } } catch (e) { - console.log(2); - console.log(e); + //console.log(2); + //console.log(e); this.setState({ flagPageEditsbox: true, flagPageEdit: true, @@ -2121,8 +2124,8 @@ class Trainingjobsetting extends Component { } } catch (e) { - console.log(3); - console.log(e); + //console.log(3); + //console.log(e); } }; //取消编辑 @@ -2167,8 +2170,8 @@ class Trainingjobsetting extends Component { } } - console.log(rules); - console.log(datas); + //console.log(rules); + //console.log(datas); this.setState({ rules, rulesdata: datas, From 9e51bc76417123453ec713b215984b9840370bcc Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Thu, 5 Dec 2019 09:22:02 +0800 Subject: [PATCH 04/19] =?UTF-8?q?oj=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/hack_user_lastest_codes_controller.rb | 7 ++++--- app/controllers/hacks_controller.rb | 2 +- app/models/hack_user_code.rb | 2 ++ .../hack_user_lastest_codes/submit_records.json.jbuilder | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/controllers/hack_user_lastest_codes_controller.rb b/app/controllers/hack_user_lastest_codes_controller.rb index 37102a166..4cd13d6d9 100644 --- a/app/controllers/hack_user_lastest_codes_controller.rb +++ b/app/controllers/hack_user_lastest_codes_controller.rb @@ -15,10 +15,9 @@ class HackUserLastestCodesController < ApplicationController render_ok end - # 回复初始代码 + # 恢复初始代码 def restore_initial_code @my_hack.update_attribute(:code, @hack.code) - render_ok end # 调试代码 @@ -55,7 +54,9 @@ class HackUserLastestCodesController < ApplicationController end # 提交记录 - def submit_records;end + def submit_records + @records = @my_hack.hack_user_codes.created_order + end # 提交记录详情 diff --git a/app/controllers/hacks_controller.rb b/app/controllers/hacks_controller.rb index 993cba4e6..ca0ebcb3b 100644 --- a/app/controllers/hacks_controller.rb +++ b/app/controllers/hacks_controller.rb @@ -199,7 +199,7 @@ class HacksController < ApplicationController end def start_hack_auth - return true if @hack == 1 + return true if @hack.status == 1 require_auth_identity end diff --git a/app/models/hack_user_code.rb b/app/models/hack_user_code.rb index d9d2dff77..072fd4e31 100644 --- a/app/models/hack_user_code.rb +++ b/app/models/hack_user_code.rb @@ -1,4 +1,6 @@ class HackUserCode < ApplicationRecord # 用户编程题的信息 belongs_to :hack + + scope :created_order, ->{ order("created_at desc")} end diff --git a/app/views/hack_user_lastest_codes/submit_records.json.jbuilder b/app/views/hack_user_lastest_codes/submit_records.json.jbuilder index a5905b16d..797bda742 100644 --- a/app/views/hack_user_lastest_codes/submit_records.json.jbuilder +++ b/app/views/hack_user_lastest_codes/submit_records.json.jbuilder @@ -1,4 +1,4 @@ -json.array! @my_hack.hack_user_codes do |hack_user| +json.array! @records do |hack_user| json.(hack_user, :id, :created_at, :status, :execute_time, :execute_memory) json.language hack_user.hack.language end \ No newline at end of file From 83ea97ffa46fe93260adaa1fb616be5fb445461f Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Thu, 5 Dec 2019 10:35:13 +0800 Subject: [PATCH 05/19] =?UTF-8?q?=E8=AF=A6=E6=83=85=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/hack_user_lastest_codes/record_detail.json.jbuilder | 3 ++- app/views/hack_user_lastest_codes/show.json.jbuilder | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/hack_user_lastest_codes/record_detail.json.jbuilder b/app/views/hack_user_lastest_codes/record_detail.json.jbuilder index c3a111ab7..b2f567879 100644 --- a/app/views/hack_user_lastest_codes/record_detail.json.jbuilder +++ b/app/views/hack_user_lastest_codes/record_detail.json.jbuilder @@ -1,3 +1,4 @@ json.(@hack_user, :id, :status, :error_line, :error_msg, :expected_output, :input, :output, :execute_time, :execute_memory) -json.language @hack_user.hack.language \ No newline at end of file +json.language @hack_user.hack.language +json.name @hack_user.hack.name \ No newline at end of file diff --git a/app/views/hack_user_lastest_codes/show.json.jbuilder b/app/views/hack_user_lastest_codes/show.json.jbuilder index 370797750..70e1f2093 100644 --- a/app/views/hack_user_lastest_codes/show.json.jbuilder +++ b/app/views/hack_user_lastest_codes/show.json.jbuilder @@ -1,5 +1,5 @@ json.hack do - json.(@hack, :difficult, :time_limit, :description, :score, :identifier) + json.(@hack, :name, :difficult, :time_limit, :description, :score, :identifier) json.language @hack.language json.username @hack.user.real_name json.code @my_hack.code From e81e5946ca99d57746762eb83331704cfa92322e Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Thu, 5 Dec 2019 10:50:36 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/hack_user_lastest_codes/record_detail.json.jbuilder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/hack_user_lastest_codes/record_detail.json.jbuilder b/app/views/hack_user_lastest_codes/record_detail.json.jbuilder index b2f567879..b007fafbf 100644 --- a/app/views/hack_user_lastest_codes/record_detail.json.jbuilder +++ b/app/views/hack_user_lastest_codes/record_detail.json.jbuilder @@ -1,4 +1,4 @@ json.(@hack_user, :id, :status, :error_line, :error_msg, :expected_output, - :input, :output, :execute_time, :execute_memory) + :input, :output, :execute_time, :execute_memory, :created_at) json.language @hack_user.hack.language json.name @hack_user.hack.name \ No newline at end of file From 6a3ce7cdb03f24baec30f2eb6d7a868acdf3855c Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 10:55:33 +0800 Subject: [PATCH 07/19] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../homework_commons_controller.rb | 15 ++- ...update_homework_publish_setting_service.rb | 110 ++++++++++++++++++ 2 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 app/services/update_homework_publish_setting_service.rb diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index 1c6b606e5..8e3436aa6 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -453,7 +453,9 @@ class HomeworkCommonsController < ApplicationController # 课堂结束后不能再更新 unless @course.is_end + UpdateHomeworkSettingService.call(@homework, publish_params) # 作业未发布时,unified_setting参数不能为空 +=begin if @homework.publish_time.nil? || @homework.publish_time > Time.now tip_exception("缺少统一设置的参数") if params[:unified_setting].nil? if params[:unified_setting] || @course.course_groups_count == 0 @@ -549,6 +551,7 @@ class HomeworkCommonsController < ApplicationController @homework.end_time = @homework.max_group_end_time end end +=end # 补交设置 tip_exception("缺少allow_late参数") if params[:allow_late].nil? @@ -635,7 +638,7 @@ class HomeworkCommonsController < ApplicationController @homework.save! if score_change && @homework.end_or_late_none_group - UpdateShixunWorkScoreJob.perform_now(@homework.id) + UpdateShixunWorkScoreJob.perform_later(@homework.id) elsif update_eff_score && (@homework.end_or_late_none_group || @homework.max_efficiency > 0) # 更新所有学生的效率分(作业允许补交且补交已截止 或者 作业不允许补交且提交已截止 或者作业已计算过效率分) HomeworksService.new.update_student_eff_score HomeworkCommon.find_by(id: @homework.id) @@ -826,12 +829,14 @@ class HomeworkCommonsController < ApplicationController end end - - HomeworkCommonPushNotifyJob.perform_later(@homework.id, publish_group_ids) if send_tiding normal_status(0, "更新成功") else tip_exception("课堂已结束不能再更新") end + rescue ApplicationService::Error => ex + uid_logger(ex.message) + render_error(ex.message) + raise ActiveRecord::Rollback rescue Exception => e uid_logger(e.backtrace) tip_exception(e.message) @@ -1653,4 +1658,8 @@ class HomeworkCommonsController < ApplicationController homework_bank end + def publish_params + params.permit(:unified_setting, :publish_time, :end_time, group_settings: []) + end + end diff --git a/app/services/update_homework_publish_setting_service.rb b/app/services/update_homework_publish_setting_service.rb new file mode 100644 index 000000000..10287ce64 --- /dev/null +++ b/app/services/update_homework_publish_setting_service.rb @@ -0,0 +1,110 @@ +class UpdateHomeworkSettingService < ApplicationService + attr_reader :homework, :params + + def initialize(homework, params) + @params = params + @homework = homework + end + + def call + course = homework.course + # 作业未发布时,unified_setting参数不能为空 + if homework.publish_time.nil? || homework.publish_time > Time.now + raise(Error, "缺少统一设置的参数") if params[:unified_setting].nil? + if params[:unified_setting] || course.course_groups_count == 0 + raise(Error, "发布时间不能为空") if params[:publish_time].blank? + raise(Error, "截止时间不能为空") if params[:end_time].blank? + raise(Error, "发布时间不能早于当前时间") if params[:publish_time] <= Time.now.strftime("%Y-%m-%d %H:%M:%S") + raise(Error, "截止时间不能早于当前时间") if params[:end_time] <= Time.now.strftime("%Y-%m-%d %H:%M:%S") + raise(Error, "截止时间不能早于发布时间") if params[:publish_time] > params[:end_time] + raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if + course.end_date.present? && params[:end_time] > course.end_date.end_of_day + + homework.unified_setting = 1 + homework.homework_group_settings.destroy_all + homework.publish_time = params[:publish_time] + # 截止时间为空时取发布时间后一个月 + homework.end_time = params[:end_time] + + else + raise(Error, "分班发布设置不能为空") if params[:group_settings].blank? + # 创建作业的分班设置 + create_homework_group_settings homework + + setting_group_ids = [] + + params[:group_settings].each do |setting| + raise(Error, "分班id不能为空") if setting[:group_id].length == 0 + raise(Error, "发布时间不能为空") if setting[:publish_time].blank? + raise(Error, "截止时间不能为空") if setting[:end_time].blank? + raise(Error, "发布时间不能早于当前时间") if setting[:publish_time] <= strf_time(Time.now) + raise(Error, "截止时间不能早于当前时间") if setting[:end_time] <= strf_time(Time.now) + raise(Error, "截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time] + raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if + course.end_date.present? && setting[:end_time] > course.end_date.end_of_day + + + publish_time = setting[:publish_time] == "" ? Time.now : setting[:publish_time] + # 截止时间为空时取发布时间后一个月 + end_time = setting[:end_time] + HomeworkGroupSetting.where(homework_common_id: homework.id, course_group_id: setting[:group_id]). + update_all(publish_time: publish_time, end_time: end_time) + setting_group_ids << setting[:group_id] + end + + # 未设置的分班:发布时间和截止时间都为nil + HomeworkGroupSetting.where.not(course_group_id: setting_group_ids).where(homework_common_id: homework.id). + update_all(publish_time: nil, end_time: nil) + + # 记录已发布需要发消息的分班 + publish_group_ids = HomeworkGroupSetting.where(homework_common_id: homework.id).group_published.pluck(:course_group_id) + + homework.unified_setting = 0 + homework.publish_time = homework.min_group_publish_time + homework.end_time = homework.max_group_end_time + end + + # 如果作业立即发布则更新状态、发消息 + if homework.publish_time <= Time.now and homework_detail_manual.comment_status == 0 + homework_detail_manual.comment_status = 1 + send_tiding = true + end + + # 作业在"提交中"状态时 + else + if homework.end_time > Time.now && homework.unified_setting + raise(Error, "截止时间不能为空") if params[:end_time].blank? + raise(Error, "截止时间不能早于当前时间") if params[:end_time] <= strf_time(Time.now) + raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if + course.end_date.present? && params[:end_time] > strf_time(course.end_date.end_of_day) + + homework.end_time = params[:end_time] + + elsif !homework.unified_setting + create_homework_group_settings homework + raise(Error, "分班发布设置不能为空") if params[:group_settings].blank? + params[:group_settings].each do |setting| + group_settings = HomeworkGroupSetting.where(homework_common_id: homework.id, course_group_id: setting[:group_id]) + + raise(Error, "分班id不能为空") if setting[:group_id].length == 0 + raise(Error, "发布时间不能为空") if setting[:publish_time].blank? + raise(Error, "截止时间不能为空") if setting[:end_time].blank? + # 如果该发布规则 没有已发布的分班则需判断发布时间 + raise(Error, "发布时间不能早于等于当前时间") if setting[:publish_time] <= strf_time(Time.now) && group_settings.group_published.count == 0 + + raise(Error, "截止时间不能早于等于当前时间") if setting[:end_time] <= strf_time(Time.now) && group_settings.none_end.count > 0 + raise(Error, "截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time] + raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if + course.end_date.present? && setting[:end_time] > strf_time(course.end_date.end_of_day) + + group_settings.none_published.update_all(publish_time: setting[:publish_time]) + group_settings.none_end.update_all(end_time: setting[:end_time]) + end + + homework.end_time = homework.max_group_end_time + end + end + homework.save! + HomeworkCommonPushNotifyJob.perform_later(homework.id, publish_group_ids) if send_tiding + end +end \ No newline at end of file From 89aeb6f23145fb66b27e023faf0895a876baa37f Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Thu, 5 Dec 2019 11:01:25 +0800 Subject: [PATCH 08/19] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/hack_user_lastest_codes/record_detail.json.jbuilder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/hack_user_lastest_codes/record_detail.json.jbuilder b/app/views/hack_user_lastest_codes/record_detail.json.jbuilder index b007fafbf..4b77c2e00 100644 --- a/app/views/hack_user_lastest_codes/record_detail.json.jbuilder +++ b/app/views/hack_user_lastest_codes/record_detail.json.jbuilder @@ -1,4 +1,4 @@ json.(@hack_user, :id, :status, :error_line, :error_msg, :expected_output, - :input, :output, :execute_time, :execute_memory, :created_at) + :input, :output, :execute_time, :execute_memory, :created_at, :code) json.language @hack_user.hack.language json.name @hack_user.hack.name \ No newline at end of file From 2cd891e0161f8af8a001153f464a926fe8c0981d Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 11:04:24 +0800 Subject: [PATCH 09/19] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E8=AE=BE=E7=BD=AE?= =?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/homework_commons_controller.rb | 15 +++------------ app/models/homework_common.rb | 9 +++++++++ .../update_homework_publish_setting_service.rb | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index 8e3436aa6..6918610df 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -1106,7 +1106,7 @@ class HomeworkCommonsController < ApplicationController else homework.unified_setting = false # 创建作业分班设置:homework_group_setting - create_homework_group_settings(homework) + homework.create_homework_group_settings # 选中的分班设置的发布时间改为当前时间,截止时间改为传的截止时间参数 if params[:detail] @@ -1142,7 +1142,7 @@ class HomeworkCommonsController < ApplicationController # 发消息 HomeworkCommonPushNotifyJob.perform_later(homework.id, tiding_group_ids) else - create_homework_group_settings(homework) + homework.create_homework_group_settings none_publish_settings = homework.homework_group_settings.where(course_group_id: publish_groups).none_published if params[:detail] @@ -1216,7 +1216,7 @@ class HomeworkCommonsController < ApplicationController # 分组设置 if !params[:group_ids].blank? # 确保之前是统一设置或者有新创建的分班的数据一致性 - create_homework_group_settings(homework) + homework.create_homework_group_settings homework.unified_setting = false if homework.unified_setting && end_groups.length != @course.course_groups_count @@ -1587,15 +1587,6 @@ class HomeworkCommonsController < ApplicationController end - def create_homework_group_settings homework - if homework.homework_group_settings.size != @course.course_groups.size - @course.course_groups.where.not(id: homework.homework_group_settings.pluck(:course_group_id)).each do |group| - homework.homework_group_settings << HomeworkGroupSetting.new(course_group_id: group.id, course_id: @course.id, - publish_time: homework.publish_time, end_time: homework.end_time) - end - end - end - def get_new_code_reviews_result homework if homework.code_reviews_new_results? # 获取最新的查询id diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index def3b6b0d..d37650c37 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -285,6 +285,15 @@ class HomeworkCommon < ApplicationRecord homework_challenge_settings.find_by(challenge_id: challenge_id)&.score.to_f end + def create_homework_group_settings + if homework_group_settings.size != course.course_groups.size + course.course_groups.where.not(id: homework_group_settings.pluck(:course_group_id)).each do |group| + homework_group_settings << HomeworkGroupSetting.new(course_group_id: group.id, course_id: course.id, + publish_time: publish_time, end_time: end_time) + end + end + end + def update_homework_work_score if unified_setting works = student_works diff --git a/app/services/update_homework_publish_setting_service.rb b/app/services/update_homework_publish_setting_service.rb index 10287ce64..6350e0dc7 100644 --- a/app/services/update_homework_publish_setting_service.rb +++ b/app/services/update_homework_publish_setting_service.rb @@ -29,7 +29,7 @@ class UpdateHomeworkSettingService < ApplicationService else raise(Error, "分班发布设置不能为空") if params[:group_settings].blank? # 创建作业的分班设置 - create_homework_group_settings homework + homework.create_homework_group_settings setting_group_ids = [] @@ -81,7 +81,7 @@ class UpdateHomeworkSettingService < ApplicationService homework.end_time = params[:end_time] elsif !homework.unified_setting - create_homework_group_settings homework + homework.create_homework_group_settings raise(Error, "分班发布设置不能为空") if params[:group_settings].blank? params[:group_settings].each do |setting| group_settings = HomeworkGroupSetting.where(homework_common_id: homework.id, course_group_id: setting[:group_id]) From 4c09c51ce93680d64d4cda6b26d6de8613a49f63 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 11:10:34 +0800 Subject: [PATCH 10/19] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../homework_commons_controller.rb | 10 ++-- ...update_homework_publish_setting_service.rb | 52 +++++++++---------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index 6918610df..4a31fc474 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -833,10 +833,12 @@ class HomeworkCommonsController < ApplicationController else tip_exception("课堂已结束不能再更新") end - rescue ApplicationService::Error => ex - uid_logger(ex.message) - render_error(ex.message) - raise ActiveRecord::Rollback + # rescue ActiveRecord::RecordInvalid + # render_error("保存失败") + # rescue ApplicationService::Error => ex + # uid_logger(ex.message) + # render_error(ex.message) + # raise ActiveRecord::Rollback rescue Exception => e uid_logger(e.backtrace) tip_exception(e.message) diff --git a/app/services/update_homework_publish_setting_service.rb b/app/services/update_homework_publish_setting_service.rb index 6350e0dc7..00d618522 100644 --- a/app/services/update_homework_publish_setting_service.rb +++ b/app/services/update_homework_publish_setting_service.rb @@ -10,14 +10,14 @@ class UpdateHomeworkSettingService < ApplicationService course = homework.course # 作业未发布时,unified_setting参数不能为空 if homework.publish_time.nil? || homework.publish_time > Time.now - raise(Error, "缺少统一设置的参数") if params[:unified_setting].nil? + tip_exception("缺少统一设置的参数") if params[:unified_setting].nil? if params[:unified_setting] || course.course_groups_count == 0 - raise(Error, "发布时间不能为空") if params[:publish_time].blank? - raise(Error, "截止时间不能为空") if params[:end_time].blank? - raise(Error, "发布时间不能早于当前时间") if params[:publish_time] <= Time.now.strftime("%Y-%m-%d %H:%M:%S") - raise(Error, "截止时间不能早于当前时间") if params[:end_time] <= Time.now.strftime("%Y-%m-%d %H:%M:%S") - raise(Error, "截止时间不能早于发布时间") if params[:publish_time] > params[:end_time] - raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if + tip_exception("发布时间不能为空") if params[:publish_time].blank? + tip_exception("截止时间不能为空") if params[:end_time].blank? + tip_exception("发布时间不能早于当前时间") if params[:publish_time] <= Time.now.strftime("%Y-%m-%d %H:%M:%S") + tip_exception("截止时间不能早于当前时间") if params[:end_time] <= Time.now.strftime("%Y-%m-%d %H:%M:%S") + tip_exception("截止时间不能早于发布时间") if params[:publish_time] > params[:end_time] + tip_exception("截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if course.end_date.present? && params[:end_time] > course.end_date.end_of_day homework.unified_setting = 1 @@ -27,20 +27,20 @@ class UpdateHomeworkSettingService < ApplicationService homework.end_time = params[:end_time] else - raise(Error, "分班发布设置不能为空") if params[:group_settings].blank? + tip_exception("分班发布设置不能为空") if params[:group_settings].blank? # 创建作业的分班设置 homework.create_homework_group_settings setting_group_ids = [] params[:group_settings].each do |setting| - raise(Error, "分班id不能为空") if setting[:group_id].length == 0 - raise(Error, "发布时间不能为空") if setting[:publish_time].blank? - raise(Error, "截止时间不能为空") if setting[:end_time].blank? - raise(Error, "发布时间不能早于当前时间") if setting[:publish_time] <= strf_time(Time.now) - raise(Error, "截止时间不能早于当前时间") if setting[:end_time] <= strf_time(Time.now) - raise(Error, "截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time] - raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if + tip_exception("分班id不能为空") if setting[:group_id].length == 0 + tip_exception("发布时间不能为空") if setting[:publish_time].blank? + tip_exception("截止时间不能为空") if setting[:end_time].blank? + tip_exception("发布时间不能早于当前时间") if setting[:publish_time] <= strf_time(Time.now) + tip_exception("截止时间不能早于当前时间") if setting[:end_time] <= strf_time(Time.now) + tip_exception("截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time] + tip_exception("截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if course.end_date.present? && setting[:end_time] > course.end_date.end_of_day @@ -73,28 +73,28 @@ class UpdateHomeworkSettingService < ApplicationService # 作业在"提交中"状态时 else if homework.end_time > Time.now && homework.unified_setting - raise(Error, "截止时间不能为空") if params[:end_time].blank? - raise(Error, "截止时间不能早于当前时间") if params[:end_time] <= strf_time(Time.now) - raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if + tip_exception("截止时间不能为空") if params[:end_time].blank? + tip_exception("截止时间不能早于当前时间") if params[:end_time] <= strf_time(Time.now) + tip_exception("截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if course.end_date.present? && params[:end_time] > strf_time(course.end_date.end_of_day) homework.end_time = params[:end_time] elsif !homework.unified_setting homework.create_homework_group_settings - raise(Error, "分班发布设置不能为空") if params[:group_settings].blank? + tip_exception("分班发布设置不能为空") if params[:group_settings].blank? params[:group_settings].each do |setting| group_settings = HomeworkGroupSetting.where(homework_common_id: homework.id, course_group_id: setting[:group_id]) - raise(Error, "分班id不能为空") if setting[:group_id].length == 0 - raise(Error, "发布时间不能为空") if setting[:publish_time].blank? - raise(Error, "截止时间不能为空") if setting[:end_time].blank? + tip_exception("分班id不能为空") if setting[:group_id].length == 0 + tip_exception("发布时间不能为空") if setting[:publish_time].blank? + tip_exception("截止时间不能为空") if setting[:end_time].blank? # 如果该发布规则 没有已发布的分班则需判断发布时间 - raise(Error, "发布时间不能早于等于当前时间") if setting[:publish_time] <= strf_time(Time.now) && group_settings.group_published.count == 0 + tip_exception("发布时间不能早于等于当前时间") if setting[:publish_time] <= strf_time(Time.now) && group_settings.group_published.count == 0 - raise(Error, "截止时间不能早于等于当前时间") if setting[:end_time] <= strf_time(Time.now) && group_settings.none_end.count > 0 - raise(Error, "截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time] - raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if + tip_exception("截止时间不能早于等于当前时间") if setting[:end_time] <= strf_time(Time.now) && group_settings.none_end.count > 0 + tip_exception("截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time] + tip_exception("截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if course.end_date.present? && setting[:end_time] > strf_time(course.end_date.end_of_day) group_settings.none_published.update_all(publish_time: setting[:publish_time]) From ff138cb420a4c233fab7d1370e2f4b2e27605a30 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 11:14:48 +0800 Subject: [PATCH 11/19] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20191204030230_migrate_exercise_single_question_score.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb index c71fea157..1238e25f1 100644 --- a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb +++ b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb @@ -17,7 +17,7 @@ class MigrateExerciseSingleQuestionScore < ActiveRecord::Migration[5.2] user_choice_position = answer.exercise_choice&.choice_position if user_choice_position && (user_choice_position.to_i == question.exercise_standard_answers.take&.exercise_choice_id.to_i) answer.update!(score: question.question_score) - score = exercise_user.score + question.question_score + score = exercise_user.score.to_f + question.question_score objective_score = exercise_user.objective_score + question.question_score exercise_user.update!(score: score, objective_score: objective_score) end From 196d25362ee32ce5df10c08b1dadb87a76812fa7 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 11:36:55 +0800 Subject: [PATCH 12/19] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E5=AE=9E?= =?UTF-8?q?=E8=AE=AD=E4=BD=9C=E4=B8=9A=E7=9A=84=E8=AE=BE=E7=BD=AE=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weapps/homework_commons_controller.rb | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 app/controllers/weapps/homework_commons_controller.rb diff --git a/app/controllers/weapps/homework_commons_controller.rb b/app/controllers/weapps/homework_commons_controller.rb new file mode 100644 index 000000000..00d2ce926 --- /dev/null +++ b/app/controllers/weapps/homework_commons_controller.rb @@ -0,0 +1,37 @@ +class Weapps::HomeworkCommonsController < Weapps::BaseController + before_action :require_login + before_action :find_homework, :user_course_identity + before_action :teacher_allowed + + def update_settings + begin + # 课堂结束后不能再更新 + if @course.is_end + UpdateHomeworkSettingService.call(@homework, publish_params) + else + tip_exception("课堂已结束不能再更新") + end + rescue Exception => e + uid_logger(e.backtrace) + tip_exception(e.message) + raise ActiveRecord::Rollback + end + end + + private + + def teacher_allowed + return render_forbidden unless @user_course_identity < Course::STUDENT + end + + def find_homework + @homework = HomeworkCommon.find_by!(id: params[:id]) + @course = @homework.course + @homework_detail_manual = @homework.homework_detail_manual + end + + def publish_params + params.permit(:unified_setting, :publish_time, :end_time, group_settings: []) + end + +end \ No newline at end of file From d8a64d31f79abf3d084dd12a5fc4ebccb8e0d323 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 11:40:03 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=9A=84=E8=AE=BE=E7=BD=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/routes.rb b/config/routes.rb index 3d4495edc..283ee0d24 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -926,6 +926,10 @@ Rails.application.routes.draw do delete :delete_course_students end end + + resources :homework_commons do + post :update_settings, on: :member + end end resources :users_for_partners, only: [:index] From b4c196e1284a3011c61ebb3949d09854def4f09f Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Thu, 5 Dec 2019 11:44:34 +0800 Subject: [PATCH 14/19] =?UTF-8?q?=E5=BC=80=E5=8F=91=E8=80=85=E7=A4=BE?= =?UTF-8?q?=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/laboratory_setting.rb | 4 ++++ app/services/admins/save_laboratory_setting_service.rb | 2 ++ app/views/admins/laboratory_settings/show.html.erb | 10 ++++++++++ 3 files changed, 16 insertions(+) diff --git a/app/models/laboratory_setting.rb b/app/models/laboratory_setting.rb index 416020836..4eacaf460 100644 --- a/app/models/laboratory_setting.rb +++ b/app/models/laboratory_setting.rb @@ -42,6 +42,10 @@ class LaboratorySetting < ApplicationRecord image_url('_moop_cases_banner') end + def oj_banner_url + image_url('_oj_banner') + end + def default_navbar self.class.default_config[:navbar] end diff --git a/app/services/admins/save_laboratory_setting_service.rb b/app/services/admins/save_laboratory_setting_service.rb index b35323608..51f1af20a 100644 --- a/app/services/admins/save_laboratory_setting_service.rb +++ b/app/services/admins/save_laboratory_setting_service.rb @@ -43,6 +43,8 @@ class Admins::SaveLaboratorySettingService < ApplicationService save_image_file(params[:course_banner], '_course_banner') save_image_file(params[:competition_banner], '_competition_banner') save_image_file(params[:moop_cases_banner], '_moop_cases_banner') + Rails.logger.info("#######params: #{params[:oj_banner]}") + save_image_file(params[:oj_banner], '_oj_banner') end def save_image_file(file, type) diff --git a/app/views/admins/laboratory_settings/show.html.erb b/app/views/admins/laboratory_settings/show.html.erb index b99d6f022..ee9880fbb 100644 --- a/app/views/admins/laboratory_settings/show.html.erb +++ b/app/views/admins/laboratory_settings/show.html.erb @@ -129,6 +129,16 @@ + + From 96d380f8ff5df75df9e89348a730efaf20f941fc Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 11:48:26 +0800 Subject: [PATCH 15/19] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=9A=84=E8=AE=BE=E7=BD=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._migrate_exercise_single_question_score.rb | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb index 1238e25f1..fcc608bb5 100644 --- a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb +++ b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb @@ -1,27 +1,27 @@ class MigrateExerciseSingleQuestionScore < ActiveRecord::Migration[5.2] def change - # 删除判断、单选题中生成多条记录,但exercise_choice_id不同的数据 - sql = %Q(delete from exercise_answers where (exercise_question_id, user_id) in - (select * from (select exercise_question_id, user_id from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1) a) - and id not in (select * from (select min(exercise_answers.id) from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1 order by exercise_answers.id) b)) - ActiveRecord::Base.connection.execute sql - - # 更新成绩 - exercise_answers = ExerciseAnswer.joins(:exercise_question).where(score: -1, exercise_questions: {question_type: [0, 2]}) - exercise_answers.includes(:exercise_choice, exercise_question: :exercise_standard_answers).find_each do |answer| - - question = answer.exercise_question - exercise_user = ExerciseUser.find_by(exercise_id: question.exercise_id, user_id: answer.user_id) - - if exercise_user && exercise_user.commit_status == 1 - user_choice_position = answer.exercise_choice&.choice_position - if user_choice_position && (user_choice_position.to_i == question.exercise_standard_answers.take&.exercise_choice_id.to_i) - answer.update!(score: question.question_score) - score = exercise_user.score.to_f + question.question_score - objective_score = exercise_user.objective_score + question.question_score - exercise_user.update!(score: score, objective_score: objective_score) - end - end - end + # # 删除判断、单选题中生成多条记录,但exercise_choice_id不同的数据 + # sql = %Q(delete from exercise_answers where (exercise_question_id, user_id) in + # (select * from (select exercise_question_id, user_id from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1) a) + # and id not in (select * from (select min(exercise_answers.id) from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1 order by exercise_answers.id) b)) + # ActiveRecord::Base.connection.execute sql + # + # # 更新成绩 + # exercise_answers = ExerciseAnswer.joins(:exercise_question).where(score: -1, exercise_questions: {question_type: [0, 2]}) + # exercise_answers.includes(:exercise_choice, exercise_question: :exercise_standard_answers).find_each do |answer| + # + # question = answer.exercise_question + # exercise_user = ExerciseUser.find_by(exercise_id: question.exercise_id, user_id: answer.user_id) + # + # if exercise_user && exercise_user.commit_status == 1 + # user_choice_position = answer.exercise_choice&.choice_position + # if user_choice_position && (user_choice_position.to_i == question.exercise_standard_answers.take&.exercise_choice_id.to_i) + # answer.update!(score: question.question_score) + # score = exercise_user.score.to_f + question.question_score + # objective_score = exercise_user.objective_score + question.question_score + # exercise_user.update!(score: score, objective_score: objective_score) + # end + # end + # end end end From 53ac9122b0a450b67770b1eb721de15f36f4842a Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Thu, 5 Dec 2019 11:49:15 +0800 Subject: [PATCH 16/19] =?UTF-8?q?banner=E5=9B=BE=E7=9A=84url=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/admins/laboratory_settings_controller.rb | 2 +- app/services/admins/save_laboratory_setting_service.rb | 1 - app/views/settings/show.json.jbuilder | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/admins/laboratory_settings_controller.rb b/app/controllers/admins/laboratory_settings_controller.rb index a65b13f59..283afc175 100644 --- a/app/controllers/admins/laboratory_settings_controller.rb +++ b/app/controllers/admins/laboratory_settings_controller.rb @@ -16,7 +16,7 @@ class Admins::LaboratorySettingsController < Admins::BaseController def form_params params.permit(:identifier, :name, - :nav_logo, :login_logo, :tab_logo, + :nav_logo, :login_logo, :tab_logo, :oj_banner, :subject_banner, :course_banner, :competition_banner, :moop_cases_banner, :footer, navbar: %i[name link hidden]) end diff --git a/app/services/admins/save_laboratory_setting_service.rb b/app/services/admins/save_laboratory_setting_service.rb index 51f1af20a..c29e374bd 100644 --- a/app/services/admins/save_laboratory_setting_service.rb +++ b/app/services/admins/save_laboratory_setting_service.rb @@ -43,7 +43,6 @@ class Admins::SaveLaboratorySettingService < ApplicationService save_image_file(params[:course_banner], '_course_banner') save_image_file(params[:competition_banner], '_competition_banner') save_image_file(params[:moop_cases_banner], '_moop_cases_banner') - Rails.logger.info("#######params: #{params[:oj_banner]}") save_image_file(params[:oj_banner], '_oj_banner') end diff --git a/app/views/settings/show.json.jbuilder b/app/views/settings/show.json.jbuilder index e21e9fa48..ede9a2ed8 100644 --- a/app/views/settings/show.json.jbuilder +++ b/app/views/settings/show.json.jbuilder @@ -10,6 +10,7 @@ json.setting do json.course_banner_url (setting.course_banner_url || default_setting.course_banner_url)&.[](1..-1) json.competition_banner_url (setting.competition_banner_url || default_setting.competition_banner_url)&.[](1..-1) json.moop_cases_banner_url (setting.moop_cases_banner_url || default_setting.moop_cases_banner_url)&.[](1..-1) + json.oj_banner_url (setting.oj_banner_url || default_setting.oj_banner_url)&.[](1..-1) json.navbar setting.navbar || default_setting.navbar From b4003417cec9d16ef849ccbf67408f394c0fd298 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 11:50:50 +0800 Subject: [PATCH 17/19] =?UTF-8?q?=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._migrate_exercise_single_question_score.rb | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb index fcc608bb5..1238e25f1 100644 --- a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb +++ b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb @@ -1,27 +1,27 @@ class MigrateExerciseSingleQuestionScore < ActiveRecord::Migration[5.2] def change - # # 删除判断、单选题中生成多条记录,但exercise_choice_id不同的数据 - # sql = %Q(delete from exercise_answers where (exercise_question_id, user_id) in - # (select * from (select exercise_question_id, user_id from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1) a) - # and id not in (select * from (select min(exercise_answers.id) from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1 order by exercise_answers.id) b)) - # ActiveRecord::Base.connection.execute sql - # - # # 更新成绩 - # exercise_answers = ExerciseAnswer.joins(:exercise_question).where(score: -1, exercise_questions: {question_type: [0, 2]}) - # exercise_answers.includes(:exercise_choice, exercise_question: :exercise_standard_answers).find_each do |answer| - # - # question = answer.exercise_question - # exercise_user = ExerciseUser.find_by(exercise_id: question.exercise_id, user_id: answer.user_id) - # - # if exercise_user && exercise_user.commit_status == 1 - # user_choice_position = answer.exercise_choice&.choice_position - # if user_choice_position && (user_choice_position.to_i == question.exercise_standard_answers.take&.exercise_choice_id.to_i) - # answer.update!(score: question.question_score) - # score = exercise_user.score.to_f + question.question_score - # objective_score = exercise_user.objective_score + question.question_score - # exercise_user.update!(score: score, objective_score: objective_score) - # end - # end - # end + # 删除判断、单选题中生成多条记录,但exercise_choice_id不同的数据 + sql = %Q(delete from exercise_answers where (exercise_question_id, user_id) in + (select * from (select exercise_question_id, user_id from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1) a) + and id not in (select * from (select min(exercise_answers.id) from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1 order by exercise_answers.id) b)) + ActiveRecord::Base.connection.execute sql + + # 更新成绩 + exercise_answers = ExerciseAnswer.joins(:exercise_question).where(score: -1, exercise_questions: {question_type: [0, 2]}) + exercise_answers.includes(:exercise_choice, exercise_question: :exercise_standard_answers).find_each do |answer| + + question = answer.exercise_question + exercise_user = ExerciseUser.find_by(exercise_id: question.exercise_id, user_id: answer.user_id) + + if exercise_user && exercise_user.commit_status == 1 + user_choice_position = answer.exercise_choice&.choice_position + if user_choice_position && (user_choice_position.to_i == question.exercise_standard_answers.take&.exercise_choice_id.to_i) + answer.update!(score: question.question_score) + score = exercise_user.score.to_f + question.question_score + objective_score = exercise_user.objective_score + question.question_score + exercise_user.update!(score: score, objective_score: objective_score) + end + end + end end end From c2b26dee79d2cad0b8d4e174d8edcde8c9c9b108 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 12:00:35 +0800 Subject: [PATCH 18/19] =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/update_homework_publish_setting_service.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/services/update_homework_publish_setting_service.rb b/app/services/update_homework_publish_setting_service.rb index 00d618522..8c54a15b6 100644 --- a/app/services/update_homework_publish_setting_service.rb +++ b/app/services/update_homework_publish_setting_service.rb @@ -107,4 +107,9 @@ class UpdateHomeworkSettingService < ApplicationService homework.save! HomeworkCommonPushNotifyJob.perform_later(homework.id, publish_group_ids) if send_tiding end + + private + def tip_exception(status = -1, message) + raise Educoder::TipException.new(status, message) + end end \ No newline at end of file From cfcb3138f46598c76c7159eada6043259136f3d9 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 13:51:44 +0800 Subject: [PATCH 19/19] =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._migrate_exercise_single_question_score.rb | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb index 1238e25f1..fcc608bb5 100644 --- a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb +++ b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb @@ -1,27 +1,27 @@ class MigrateExerciseSingleQuestionScore < ActiveRecord::Migration[5.2] def change - # 删除判断、单选题中生成多条记录,但exercise_choice_id不同的数据 - sql = %Q(delete from exercise_answers where (exercise_question_id, user_id) in - (select * from (select exercise_question_id, user_id from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1) a) - and id not in (select * from (select min(exercise_answers.id) from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1 order by exercise_answers.id) b)) - ActiveRecord::Base.connection.execute sql - - # 更新成绩 - exercise_answers = ExerciseAnswer.joins(:exercise_question).where(score: -1, exercise_questions: {question_type: [0, 2]}) - exercise_answers.includes(:exercise_choice, exercise_question: :exercise_standard_answers).find_each do |answer| - - question = answer.exercise_question - exercise_user = ExerciseUser.find_by(exercise_id: question.exercise_id, user_id: answer.user_id) - - if exercise_user && exercise_user.commit_status == 1 - user_choice_position = answer.exercise_choice&.choice_position - if user_choice_position && (user_choice_position.to_i == question.exercise_standard_answers.take&.exercise_choice_id.to_i) - answer.update!(score: question.question_score) - score = exercise_user.score.to_f + question.question_score - objective_score = exercise_user.objective_score + question.question_score - exercise_user.update!(score: score, objective_score: objective_score) - end - end - end + # # 删除判断、单选题中生成多条记录,但exercise_choice_id不同的数据 + # sql = %Q(delete from exercise_answers where (exercise_question_id, user_id) in + # (select * from (select exercise_question_id, user_id from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1) a) + # and id not in (select * from (select min(exercise_answers.id) from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1 order by exercise_answers.id) b)) + # ActiveRecord::Base.connection.execute sql + # + # # 更新成绩 + # exercise_answers = ExerciseAnswer.joins(:exercise_question).where(score: -1, exercise_questions: {question_type: [0, 2]}) + # exercise_answers.includes(:exercise_choice, exercise_question: :exercise_standard_answers).find_each do |answer| + # + # question = answer.exercise_question + # exercise_user = ExerciseUser.find_by(exercise_id: question.exercise_id, user_id: answer.user_id) + # + # if exercise_user && exercise_user.commit_status == 1 + # user_choice_position = answer.exercise_choice&.choice_position + # if user_choice_position && (user_choice_position.to_i == question.exercise_standard_answers.take&.exercise_choice_id.to_i) + # answer.update!(score: question.question_score) + # score = exercise_user.score.to_f + question.question_score + # objective_score = exercise_user.objective_score + question.question_score + # exercise_user.update!(score: score, objective_score: objective_score) + # end + # end + # end end end