Commit f4809454 by zhangleyuan

feat:联调创建直播课的接口

parent 471a280f
/*
* @Author: wufan
* @Date: 2020-12-12 11:57:10
* @LastEditors: wufan
* @LastEditTime: 2020-12-14 18:05:23
* @LastEditors: zhangleyuan
* @LastEditTime: 2020-12-14 20:32:46
* @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -14,5 +14,9 @@ export function fetchLecturerData(params: object) {
}
export function fetchUserData(params: object) {
return Service.Hades("public/courseCloud/queryStudentVisitData", params);
}
\ No newline at end of file
return Service.Hades("public/courseCloud/queryStudentVisitData", params);
}
export function createLiveCloudCourse(params: object) {
return Service.Hades("public/courseCloud/createLiveCloudCourse", params);
}
/*
* @Author: wufan
* @Date: 2020-11-25 18:25:02
* @LastEditors: wufan
* @LastEditTime: 2020-12-14 18:08:07
* @LastEditors: zhangleyuan
* @LastEditTime: 2020-12-14 21:01:52
* @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import { fetchLecturerData, fetchUserData } from '@/data-source/course/request-api';
import { fetchLecturerData, fetchUserData,createLiveCloudCourse} from '@/data-source/course/request-api';
export default class StoreService {
export default class courseService {
// 获取讲师上课数据
static fetchLecturerData(params: any) {
return fetchLecturerData(params);
......@@ -18,5 +18,7 @@ export default class StoreService {
static fetchUserData(params: any) {
return fetchUserData(params);
}
static createLiveCloudCourse(params: any) {
return createLiveCloudCourse(params);
}
}
\ No newline at end of file
......@@ -18,8 +18,9 @@ import AddLiveClass from './components/AddLiveClass';
import AddLiveIntro from './components/AddLiveIntro';
import PreviewCourseModal from './modal/PreviewCourseModal';
import LackConsumeStudentModal from './modal/LackConsumeStudentModal';
import StoreService from "@/domains/store-domain/storeService";
import CourseService from "@/domains/course-domain/CourseService";
import moment from 'moment';
import User from '@/common/js/user';
import './AddLive.less';
......@@ -268,44 +269,14 @@ class AddLive extends React.Component {
}
// 修改上课信息
handleChangeClassInfo = (field, value, teacherList) => {
console.log("change-----",value);
handleChangeClassInfo = (field, value) => {
const _value = value ? value.valueOf() : null;
if (teacherList) {
let selectedTeacher;
if (field === 'teacherId') {
selectedTeacher = _.find(teacherList, item => item.teacherId === value)
// 判断上课老师是否已经被选为了助教老师
const { addLiveClassInfo: { assistant } } = this.state;
if (selectedTeacher && assistant.includes(selectedTeacher.teacherId)) {
message.warning('上课老师和助教老师不能是同一个人');
return;
}
}
this.setState({
addLiveClassInfo: {
...this.state.addLiveClassInfo,
nickname: selectedTeacher ? selectedTeacher.teacherName: null,
[field]: _value,
}
});
} else {
if (field === 'assistant') {
// 判断助教老师是否已经被选为了上课老师
const { addLiveClassInfo: { teacherId } } = this.state;
if (_value && _value.includes(teacherId)) {
message.warning('上课老师和助教老师不能是同一个人');
return;
}
this.setState({
addLiveClassInfo: {
...this.state.addLiveClassInfo,
[field]: _value,
}
this.setState({
addLiveClassInfo: {
...this.state.addLiveClassInfo,
[field]: _value,
}
});
}
});
// 批量开始时间改变,结束时间自动同步一致
if (field === 'startTime') {
this.setState({
......@@ -355,7 +326,7 @@ class AddLive extends React.Component {
if (!res) return;
const { type } = this.state;
const { courseName, coverId, coverUrl } = addLiveBasicInfo;
const { courseName, coverId, coverUrl,parentCatalogId} = addLiveBasicInfo;
const {
podium,
liveType,
......@@ -374,7 +345,7 @@ class AddLive extends React.Component {
let { startTime, endTime } = addLiveClassInfo;
const { liveCourseMediaRequests, needRecord, liveCourseWarmMedia, isAutoSendReport} = addLiveIntroInfo;
if(window.NewVersion && type === 'add') {
if(type === 'add') {
startTime = startTime;
endTime = endTime;
} else {
......@@ -387,42 +358,37 @@ class AddLive extends React.Component {
}
const commonParams = {
coverId,
startTime,
adminIds:['1338412893361590273'],
calendarTime,
categoryId:parentCatalogId,
endTime,
teacherId,
liveType,
consumeHourNum,
consumeClassTime,
adminIds: assistant,
courseName: courseName.trim(),
studentIds: _.pluck(studentList, "studentId"),
consumeStudentIds: consumeStudentList,
liveCourseMediaRequests: liveCourseMediaRequests.filter(item => { return !!item.mediaContent; }),
needRecord,
liveCourseWarmMedia,
applyMode,
autoSendReport: isAutoSendReport ? "AUTO":"OFF_AUTO",
calendarTime
operatorId:User.getUserId(),
startTime,
storeId:User.getUserId(),
courseName: courseName.trim(),
storeId:User.getStoreId(),
teacherId:'1338461876914020353',
}
if (type === 'add') {
const params = {
coverUrl,
...commonParams,
}
if(params.liveCourseWarmMedia && !params.liveCourseWarmMedia.mediaUrl) {
delete params.liveCourseWarmMedia
}
axios.Apollo("public/businessLive/createCourse", params).then((res) => {
if (!res) return;
message.success("新建成功");
localStorage.setItem('largeLiveCourseItem', JSON.stringify({
...params,
liveCourseId: res.result
}));
window.RCHistory.goBack();
// if(params.liveCourseWarmMedia && !params.liveCourseWarmMedia.mediaUrl) {
// delete params.liveCourseWarmMedia
// }
CourseService.createLiveCloudCourse(params).then((res) => {
// if (!res) return;
// message.success("新建成功");
// localStorage.setItem('largeLiveCourseItem', JSON.stringify({
// ...params,
// liveCourseId: res.result
// }));
// window.RCHistory.goBack();
});
} else {
const params = {
...commonParams,
......@@ -527,37 +493,38 @@ class AddLive extends React.Component {
}
}
}
resolve(true)
// if(consumeClassTime > (endTime - startTime) / 60000) {
// message.warning('到课规则时长不能超过排课时长');
// resolve(false);
// return;
// }
if(!teacherId) {
message.warning('上课老师不能为空');
resolve(false);
return;
} else if(!applyMode) {
message.warning('请选择分享设置');
resolve(false);
return;
} else {
const textIntro = liveCourseMediaRequests.filter(item => { return item.mediaType === 'TEXT'; });
for (let i = 0, len = textIntro.length; i < len; i++) {
if (textIntro[i].mediaContent && textIntro[i].mediaContentLength.length > 1000) {
message.warning(`第${i+1}个文字简介的字数超过了1000个字`);
resolve(false);
return;
}
}
}
if(window.NewVersion && type === 'add') {
this.handleValidateLackConsumeModal(consumeHourNum, calendarTime, consumeStudentList).then(res => {
resolve(res)
})
} else {
resolve(true);
}
// if(!teacherId) {
// message.warning('上课老师不能为空');
// resolve(false);
// return;
// } else if(!applyMode) {
// message.warning('请选择分享设置');
// resolve(false);
// return;
// } else {
// const textIntro = liveCourseMediaRequests.filter(item => { return item.mediaType === 'TEXT'; });
// for (let i = 0, len = textIntro.length; i < len; i++) {
// if (textIntro[i].mediaContent && textIntro[i].mediaContentLength.length > 1000) {
// message.warning(`第${i+1}个文字简介的字数超过了1000个字`);
// resolve(false);
// return;
// }
// }
// }
// if(window.NewVersion && type === 'add') {
// this.handleValidateLackConsumeModal(consumeHourNum, calendarTime, consumeStudentList).then(res => {
// resolve(res)
// })
// } else {
// resolve(true);
// }
});
}
......
......@@ -19,9 +19,10 @@ import MultipleDatePicker from '@/components/MultipleDatePicker';
import moment from 'moment';
import './AddLiveClass.less';
const defaultQuery = {
const defaultTeacherQuery = {
size: 10,
current: 1,
nickName:null
}
class AddLiveClass extends React.Component {
constructor(props) {
......@@ -29,7 +30,7 @@ class AddLiveClass extends React.Component {
this.state = {
loading: false,
hasNext: false,
teacherQuery: defaultQuery,
teacherQuery: defaultTeacherQuery,
teacherList:[],
assistantList: [], // 助教老师列表
addLiveType: props.addLiveType
......@@ -41,30 +42,20 @@ class AddLiveClass extends React.Component {
this.getAssistantList();
}
getTeacherList(current = 1, selectList){
const { teacherQuery,} = this.state;
const idList = selectList ? selectList : [];
const { teacherQuery,teacherList} = this.state;
const _query = {
...teacherQuery,
current,
idList,
size: idList.length <= 10 ? 10 : idList.length + 10
size:10
};
StoreService.getEmployeeList( _query).then((res) => {
// const { result = {} } = res;
// const { records = [], total = 0, hasNext } = result;
// const list = current > 1 ? assistantList.concat(records) : records;
// const _assistantList = _.uniq(
// selectedAssistant.concat(
// _.reject(list, (item) => item.id === teacherId)
// ),
// false,
// (item) => item.id
// );
// this.setState({
// hasNext,
// assistantList: list,
// _assistantList: _assistantList
// })
const { result = {} } = res;
const { records = [], total = 0, hasNext } = result;
const list = current > 1 ? teacherList.concat(records) : records;
this.setState({
hasNext,
teacherList: list,
})
});
}
// 获取助教老师列表
......@@ -133,6 +124,8 @@ class AddLiveClass extends React.Component {
render() {
const {
loading,
teacherList,
teacherQuery
} = this.state;
// pageType: 页面类型:add->新建、edit->编辑
......@@ -140,13 +133,14 @@ class AddLiveClass extends React.Component {
// data:表单数据
// selectedAssistant: 已经选择的助教
const { pageType, liveScene, data, selectedAssistant, isXiaomai, isEdit, after } = this.props;
const { pageType, liveScene, data, selectedAssistant, isXiaomai,isEdit, after} = this.props;
const {
endTime,
startTime,
studentList,
consumeStudentList,
calendarTime
calendarTime,
} = data;
// 已选择的上课学员数量(不扣课时)
const hasSelectedStu = studentList.length;
......@@ -214,13 +208,25 @@ class AddLiveClass extends React.Component {
placeholder="请选择讲师"
style={{ width: 240, marginTop: 6 }}
filterOption={(input, option) => option}
onSearch={(value) => {
// onPopupScroll={this.handleScroll}
onChange={(value) => {
this.props.onChange('teacherId', value)
}}
onBlur={() => {
onSearch={(value) => {
teacherQuery.nickName = value
this.setState({
teacherQuery
}, () => {
this.getAssistantList()
})
}}
></Select>
>
{_.map(teacherList, (item, index) => {
return (
<Select.Option value={item.id} key={item.id}>{item.nickName}</Select.Option>
);
})}
</Select>
</div>
<div className="assistant-teacher">
<span className="label">助教:</span>
......@@ -231,6 +237,7 @@ class AddLiveClass extends React.Component {
style={{ width: 240, marginTop: 6 }}
filterOption={(input, option) => option}
>
</Select>
</div>
</div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment