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 @@
+
+
+ <%- oj_banner = setting.oj_banner_url -%>
+
开发者社区
+
+

+ <%= file_field_tag(:oj_banner, accept: 'image/*', style: 'display: none', value: params[:oj_banner]) %>
+
+
+
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