Merge branch 'dev_aliyun' of http://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun

video_transcode
dinglink 5 years ago
commit 09680bd94e

@ -8,6 +8,8 @@ module AliyunVod::Service::VideoUpload
FileName: filename
}.merge(base_params)
# TODO 获取视频的同时,可以指定转码组,在这里指定
# 参数TemplateGroupId 转码组的id.
# 分类
cate_id = AliyunVod.cate_id
params[:CateId] = cate_id if cate_id.present?

@ -2,12 +2,13 @@ desc "同步学院或者单位评测数"
namespace :sync_evaluate do
task outpus_count: :environment do
School.find_each do |school|
School.find_in_batches(batch_size: 50) do |school|
Parallel.each_with_index(school, in_processes: 5) do |s|
puts "school_id:#{s.id}"
evaluate_count = Game.find_by_sql("select sum(g.evaluate_count) as e_count from games g, user_extensions ue where
g.user_id = ue.user_id and ue.school_id = '#{s.id}'").first.try(:e_count)
puts "evaluate_count: #{evaluate_count}"
report = SchoolReport.find_or_initialize_by(school_id: s.id)
report.school_name = s.name
report.shixun_evaluate_count = evaluate_count

@ -11,7 +11,8 @@ import React, { useState, useRef, useEffect } from 'react';
import { Drawer, Tooltip, Badge } from 'antd';
import { fromStore, CNotificationHOC } from 'educoder';
import { connect } from 'react-redux';
import MonacoEditor from '@monaco-editor/react';
import { ControlledEditor } from '@monaco-editor/react';
import SettingDrawer from '../../components/monacoSetting';
import CONST from '../../../../constants';
import MyIcon from '../../../../common/components/MyIcon';
@ -47,8 +48,6 @@ function MyMonacoEditor(props, ref) {
return fromStore('oj_theme') || 'dark';
});
const [height, setHeight] = useState('calc(100% - 56px)');
const editorRef = useRef(null);
console.log(language, code, '-------========----------')
useEffect(() => {
setHeight(showOrHideControl ? 'calc(100% - 378px)' : 'calc(100% - 56px)');
@ -71,21 +70,10 @@ function MyMonacoEditor(props, ref) {
setTheme(value);
}
// 文本框内容变化时,记录文本框内容
const handleEditorChange = (_, monaco) => {
editorRef.current = monaco; // 获取当前monaco实例
}
useEffect(() => {
if (editorRef.current) {
editorRef.current.onDidChangeModelContent(e => { // 监听编辑器内容的变化
const val = editorRef.current.getValue();
onCodeChange(val);
});
}
}, [
editorRef.current
])
function onChangeHandler(ev, value) {
onCodeChange(value);
}
// 配置编辑器属性
const editorOptions = {
@ -152,14 +140,14 @@ function MyMonacoEditor(props, ref) {
<MyIcon className='code-icon' type="iconshezhi" onClick={handleShowDrawer} style={{ fontSize: '18px' }} />
</Tooltip>
</div>
<MonacoEditor
<ControlledEditor
height={height}
width="100%"
language={language && language.toLowerCase()}
value={code || ''}
options={editorOptions}
theme={theme} // dark || light
editorDidMount={handleEditorChange}
onChange={onChangeHandler}
/>
</div>

@ -26,7 +26,7 @@ const { Option } = Select;
const maps = {
language: [
{ title: 'C', key: 'C' },
{ title: 'C++', key: 'C++' },
{ title: 'C++', key: 'cpp' },
{ title: 'Python', key: 'Python' },
{ title: 'Java', key: 'Java' }
],

@ -57,7 +57,7 @@ const RightPane = (props) => {
timer = setInterval(function () {
clearInterval(timer);
timer = null;
saveUserCodeForInterval(identifier);
saveUserCodeForInterval(identifier, value);
}, 5000);
}
}
@ -99,13 +99,17 @@ const RightPane = (props) => {
});
}
const { getFieldDecorator } = props.form;
let language = hack.language
if (language === 'C++') {
language = 'cpp'
}
return (
<div className={'right_pane_code_wrap'}>
<MyMonacoEditor
notice={notice}
identifier={identifier}
language={hack.language}
language={language}
code={editor_code || hack.code}
hadCodeUpdate={hadCodeUpdate}
onCodeChange={handleCodeChange}

@ -102,13 +102,12 @@ export const getUserProgramDetail = (identifier, type) => {
export const saveUserCodeForInterval = (identifier, code) => {
return (dispatch, getState) => {
const { userCode } = getState().ojForUserReducer;
dispatch({
type: types.AUTO_UPDATE_CODE,
payload: true
});
fetchUpdateCode(identifier, {
code: Base64.encode(userCode)
code: Base64.encode(code)
}).then(res => {
if (res.data.status === 401) {
return;
@ -135,7 +134,6 @@ export const saveUserCodeForInterval = (identifier, code) => {
* @param {*} type 测评类型 debug | submit
*/
export const updateCode = (identifier, inputValue, type) => {
console.log(1111);
return (dispatch, getState) => {
const { userCode, isUpdateCode } = getState().ojForUserReducer;
if (isUpdateCode) {

@ -132,6 +132,7 @@ export const validateOjForm = (props, type, cb) => {
}
});
// 验证测试用例中的数组是否都有对应的值
let tcbool=false;
const tcValidResult = [];
// 验证测试用例: 1.必须要有输出值 2. 输入值与输出值必须唯一
testCases.forEach((obj, i) => {
@ -141,8 +142,25 @@ export const validateOjForm = (props, type, cb) => {
// 非空校验
let validateResult = emptyValidate(key, value);
const errMsg = validateResult[key].errMsg;
if (errMsg) {
// hasSuccess = false;
// console.log("-------");
// console.log(errMsg);
// console.log(key);
// console.log(value);
if (errMsg) {
if(key==="output"){
hasSuccess = false;
if(tcbool===false){
tcbool=true
notification['error']({
message: '提示',
description: '测试用例必须填写输出!'
});
}
}
} else {
// 唯一性校验
const bool = testCases.some((item, j) => {
@ -167,39 +185,7 @@ export const validateOjForm = (props, type, cb) => {
});
tcValidResult.push(tempObj);
});
try {
if(ojForm.sub_discipline_id.length===0){
hasSuccess = false;
notification['error']({
message: '提示',
description: '课程必须选择!'
});
}else if(ojForm.timeLimit===null){
hasSuccess = false;
notification['error']({
message: '提示',
description: '时间限制必须输入!'
});
} else if(ojForm.name.length===0){
hasSuccess = false;
notification['error']({
message: '提示',
description: '任务名称必须输入!'
});
}else if(ojForm.description.length===0){
hasSuccess = false;
notification['error']({
message: '提示',
description: '描述必须输入!'
});
}
}catch (e) {
}
// if (testCases.length === 0) {
// hasSuccess = false;
@ -234,6 +220,43 @@ export const validateOjForm = (props, type, cb) => {
payload: false
});
}
try {
if(ojForm.sub_discipline_id.length===0){
hasSuccess = false;
notification['error']({
message: '提示',
description: '课程必须选择!'
});
}else if(ojForm.timeLimit===null){
hasSuccess = false;
notification['error']({
message: '提示',
description: '时间限制必须输入!'
});
} else if(ojForm.name.length===0){
hasSuccess = false;
notification['error']({
message: '提示',
description: '任务名称必须输入!'
});
}else if(ojForm.description.length===0){
hasSuccess = false;
notification['error']({
message: '提示',
description: '描述必须输入!'
});
}
}catch (e) {
}
/** 表单验证结束 */
/** 表单验证通过后,调用保存 or 更新 or 发布 */
if (hasSuccess) {

Loading…
Cancel
Save