正在显示
6 个修改的文件
包含
433 行增加
和
5 行删除
此 diff 太大无法显示。
| @@ -31,7 +31,7 @@ import MediaSharedApe from 'apes/MediaSharedApe'; | @@ -31,7 +31,7 @@ import MediaSharedApe from 'apes/MediaSharedApe'; | ||
| 31 | import UTF8 from 'utf-8'; | 31 | import UTF8 from 'utf-8'; |
| 32 | 32 | ||
| 33 | let loger = Loger.getLoger('McuClient'); | 33 | let loger = Loger.getLoger('McuClient'); |
| 34 | -let _sdkInfo = {"version": "v1.31.0.20170607", "author": "www.3mang.com"}; | 34 | +let _sdkInfo = {"version": "v1.31.3.20170609", "author": "www.3mang.com"}; |
| 35 | 35 | ||
| 36 | //APE | 36 | //APE |
| 37 | let _sass; | 37 | let _sass; |
| @@ -77,6 +77,9 @@ export default class MessageEntrance extends Emiter { | @@ -77,6 +77,9 @@ export default class MessageEntrance extends Emiter { | ||
| 77 | _sass.on(_sass.DELETE_DOCUMENT_SUCCESS, this._sassDeleteDocumentSuccess.bind(this));//sass删除文档成功 | 77 | _sass.on(_sass.DELETE_DOCUMENT_SUCCESS, this._sassDeleteDocumentSuccess.bind(this));//sass删除文档成功 |
| 78 | _sass.on(_sass.DELETE_MEDIASHARE_SUCCESS, this._sassDeleteMediaShareSuccess.bind(this));//sass删除媒体文件成功 | 78 | _sass.on(_sass.DELETE_MEDIASHARE_SUCCESS, this._sassDeleteMediaShareSuccess.bind(this));//sass删除媒体文件成功 |
| 79 | 79 | ||
| 80 | + | ||
| 81 | + | ||
| 82 | + | ||
| 80 | //选点模块 | 83 | //选点模块 |
| 81 | _ipManager = new IpManager(); | 84 | _ipManager = new IpManager(); |
| 82 | 85 | ||
| @@ -208,6 +211,12 @@ export default class MessageEntrance extends Emiter { | @@ -208,6 +211,12 @@ export default class MessageEntrance extends Emiter { | ||
| 208 | this.mediaSharedStop = this._sendMediaSharedStop.bind(this);//停止 | 211 | this.mediaSharedStop = this._sendMediaSharedStop.bind(this);//停止 |
| 209 | this.mediaSharedUpdate=this._sendMediaSharedUpdate.bind(this); //更新媒体的状态 | 212 | this.mediaSharedUpdate=this._sendMediaSharedUpdate.bind(this); //更新媒体的状态 |
| 210 | 213 | ||
| 214 | + //答题卡 | ||
| 215 | + this.creatQuestion=this._creatQuestion.bind(this); | ||
| 216 | + this.getQuestion=this._getQuestion.bind(this); | ||
| 217 | + this.getQuestionResult=this._getQuestionResult.bind(this); | ||
| 218 | + this.sendAnswer=this._sendAnswer.bind(this); | ||
| 219 | + | ||
| 211 | this.setDeviceInfo = this._setDeviceInfo.bind(this);//设置设备信息(麦克风,摄像头等等.....) | 220 | this.setDeviceInfo = this._setDeviceInfo.bind(this);//设置设备信息(麦克风,摄像头等等.....) |
| 212 | this.setMessageDelay = this._setMessageDelay.bind(this);//设置是否延迟消息 | 221 | this.setMessageDelay = this._setMessageDelay.bind(this);//设置是否延迟消息 |
| 213 | this.switchServer = this._switchMcuIpHandler.bind(this);//切换mcu服务器 | 222 | this.switchServer = this._switchMcuIpHandler.bind(this);//切换mcu服务器 |
| @@ -1726,4 +1735,51 @@ export default class MessageEntrance extends Emiter { | @@ -1726,4 +1735,51 @@ export default class MessageEntrance extends Emiter { | ||
| 1726 | this._emit(MessageTypes.CLASS_JOIN_SUCCESS, joinClassSuccessCallBackData); | 1735 | this._emit(MessageTypes.CLASS_JOIN_SUCCESS, joinClassSuccessCallBackData); |
| 1727 | } | 1736 | } |
| 1728 | 1737 | ||
| 1738 | + // //答题卡 | ||
| 1739 | + _creatQuestion(_param){ | ||
| 1740 | + if (!_mcu.connected) { | ||
| 1741 | + loger.warn(GlobalConfig.getCurrentStatus()); | ||
| 1742 | + return; | ||
| 1743 | + } | ||
| 1744 | + if (_confer_ape) { | ||
| 1745 | + _confer_ape.creatQuestion(_param); | ||
| 1746 | + } | ||
| 1747 | + } | ||
| 1748 | + _getQuestion(_param){ | ||
| 1749 | + if (!_mcu.connected) { | ||
| 1750 | + loger.warn(GlobalConfig.getCurrentStatus()); | ||
| 1751 | + return; | ||
| 1752 | + } | ||
| 1753 | + if (_confer_ape) { | ||
| 1754 | + _confer_ape.getQuestion(_param); | ||
| 1755 | + } | ||
| 1756 | + } | ||
| 1757 | + _getQuestionResult(_param){ | ||
| 1758 | + if (!_mcu.connected) { | ||
| 1759 | + loger.warn(GlobalConfig.getCurrentStatus()); | ||
| 1760 | + return; | ||
| 1761 | + } | ||
| 1762 | + if (_confer_ape) { | ||
| 1763 | + _confer_ape.getQuestionResult(_param); | ||
| 1764 | + } | ||
| 1765 | + } | ||
| 1766 | + _stopQuestion(){ | ||
| 1767 | + if (!_mcu.connected) { | ||
| 1768 | + loger.warn(GlobalConfig.getCurrentStatus()); | ||
| 1769 | + return; | ||
| 1770 | + } | ||
| 1771 | + if (_confer_ape) { | ||
| 1772 | + _confer_ape.stopQuestion(_param); | ||
| 1773 | + } | ||
| 1774 | + } | ||
| 1775 | + _sendAnswer(_param){ | ||
| 1776 | + if (!_mcu.connected) { | ||
| 1777 | + loger.warn(GlobalConfig.getCurrentStatus()); | ||
| 1778 | + return; | ||
| 1779 | + } | ||
| 1780 | + if (_confer_ape) { | ||
| 1781 | + _confer_ape.sendAnswer(_param); | ||
| 1782 | + } | ||
| 1783 | + } | ||
| 1784 | + | ||
| 1729 | } | 1785 | } |
| @@ -357,7 +357,7 @@ class Sass extends Emiter { | @@ -357,7 +357,7 @@ class Sass extends Emiter { | ||
| 357 | } | 357 | } |
| 358 | 358 | ||
| 359 | 359 | ||
| 360 | - //保存课堂的当前信息------------------------------------------------------------------------------------------------- | 360 | + //保存课堂的当前信息----------------------------------------------------- |
| 361 | /*保存课堂的当前信息,首次是插入,后面是更新 | 361 | /*保存课堂的当前信息,首次是插入,后面是更新 |
| 362 | /api/meeting/saveInfo.do | 362 | /api/meeting/saveInfo.do |
| 363 | 参数(application/x-www-form-urlencoded): | 363 | 参数(application/x-www-form-urlencoded): |
| @@ -474,6 +474,254 @@ class Sass extends Emiter { | @@ -474,6 +474,254 @@ class Sass extends Emiter { | ||
| 474 | loger.error(`保存开始录制信息异常.状态码:${err}`); | 474 | loger.error(`保存开始录制信息异常.状态码:${err}`); |
| 475 | }); | 475 | }); |
| 476 | } | 476 | } |
| 477 | + | ||
| 478 | + | ||
| 479 | + //答题卡------------------------------------------------------- | ||
| 480 | + //创建答题数据 | ||
| 481 | + creatQuestion(_param){ | ||
| 482 | + if(GlobalConfig.isRecordPlayBack){ | ||
| 483 | + loger.log('录制回放中->创建答题数据->不做操作'); | ||
| 484 | + return; | ||
| 485 | + } | ||
| 486 | + /* { | ||
| 487 | + "type": 1,//1单选,2多选,3判断,4点名 | ||
| 488 | + "content": "题目",//没有就传"" | ||
| 489 | + "timeLimit": 88,//有效时间(秒) | ||
| 490 | + "correct": "[]",//正确答案,没有就传[] | ||
| 491 | + "options": {},//选项数组,没有就传[] | ||
| 492 | + "option": []//学生选择的答案,没有就传[] | ||
| 493 | + }*/ | ||
| 494 | + if(!_param){ | ||
| 495 | + loger.warn('创建答题数据->参数错误->param:',_param); | ||
| 496 | + this._emit(Sass.SASS_CREAT_QUESTION_FAILED); | ||
| 497 | + return; | ||
| 498 | + } | ||
| 499 | + let classId=GlobalConfig.classId;//课堂号 | ||
| 500 | + var timestamp = new Date().getTime(); | ||
| 501 | + let authId = MD5(classId+""+timestamp); | ||
| 502 | + | ||
| 503 | + let type = parseInt(_param.type);//1单选,2多选,3判断,4点名 | ||
| 504 | + let content =_param.content||""; | ||
| 505 | + let timeLimit = parseInt(_param.timeLimit); | ||
| 506 | + let correct = _param.correct.toString(); | ||
| 507 | + let options = JSON.stringify(_param.options); | ||
| 508 | + | ||
| 509 | + let url = `http://${GlobalConfig.portal}/3m/api/question/add.do`; | ||
| 510 | + loger.log('创建答题数据', url); | ||
| 511 | + | ||
| 512 | + fetch( encodeURI(url), { | ||
| 513 | + method: 'POST', | ||
| 514 | + headers: { | ||
| 515 | + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" | ||
| 516 | + }, | ||
| 517 | + //classId=1×tamp=2&authId=3&content=&options=["A","B","C","D"]&type=1&correct=0&timeLimit=60 | ||
| 518 | + body: `classId=${classId}×tamp=${timestamp}&authId=${authId}&content=${content}&options=${options}&type=${type}&correct=${correct}&timeLimit=${timeLimit}`, | ||
| 519 | + timeout: 5000 | ||
| 520 | + }) | ||
| 521 | + | ||
| 522 | + .then(ret => { | ||
| 523 | + if (ret.ok) { | ||
| 524 | + return ret.json(); | ||
| 525 | + } else { | ||
| 526 | + loger.error(`创建答题数据-网络异常.状态码:${ret.status}`); | ||
| 527 | + this._emit(Sass.SASS_CREAT_QUESTION_FAILED); | ||
| 528 | + throw ''; | ||
| 529 | + } | ||
| 530 | + }) | ||
| 531 | + .then(ret => { | ||
| 532 | + if (ret.code== 0) { | ||
| 533 | + //errorCode int 0 正常 1 没有指定的课堂 4 验证信息错误(authId) | ||
| 534 | + // {"code":0,"id":1} | ||
| 535 | + loger.log('创建答题数据->完成'); | ||
| 536 | + this._emit(Sass.SASS_CREAT_QUESTION_SUCCESS, ret); | ||
| 537 | + } else { | ||
| 538 | + loger.warn('创建答题数据->失败.', ret); | ||
| 539 | + this._emit(Sass.SASS_CREAT_QUESTION_FAILED); | ||
| 540 | + } | ||
| 541 | + }) | ||
| 542 | + .catch(err => { | ||
| 543 | + loger.error(`创建答题数据->状态码:${err}`); | ||
| 544 | + this._emit(Sass.SASS_CREAT_QUESTION_FAILED); | ||
| 545 | + }); | ||
| 546 | + } | ||
| 547 | + //保存答题数据 | ||
| 548 | + sendAnswer(_param){ | ||
| 549 | + if(GlobalConfig.isRecordPlayBack){ | ||
| 550 | + loger.log('录制回放中->保存答题数据->不做操作'); | ||
| 551 | + return; | ||
| 552 | + } | ||
| 553 | + if(!_param){ | ||
| 554 | + loger.warn('保存答题数据->参数错误->param:',_param); | ||
| 555 | + this._emit(Sass.SASS_SEND_ANSWER_FAILED); | ||
| 556 | + return; | ||
| 557 | + } | ||
| 558 | + /*classId String课堂号 | ||
| 559 | + timestamp 时间戳 | ||
| 560 | + authId String验证信息md5(classId+timestamp) | ||
| 561 | + | ||
| 562 | + questionId long 题目id | ||
| 563 | + answer String 选择的选项的索引,如果是多选,用英文逗号分隔。例如:'0,3' | ||
| 564 | + userId String 用户id | ||
| 565 | + userName String 用户名字*/ | ||
| 566 | + | ||
| 567 | + let classId=GlobalConfig.classId;//课堂号 | ||
| 568 | + var timestamp = new Date().getTime(); | ||
| 569 | + let authId = MD5(classId+""+timestamp); | ||
| 570 | + | ||
| 571 | + let type = parseInt(_param.type);//1单选,2多选,3判断,4点名 | ||
| 572 | + | ||
| 573 | + let questionId = parseInt(_param.questionId);//题目id | ||
| 574 | + let answer = _param.answer.toString(); | ||
| 575 | + let userId = _param.userId; | ||
| 576 | + let userName = _param.userName; | ||
| 577 | + | ||
| 578 | + let url = `http://${GlobalConfig.portal}/3m/api/question/answer.do`; | ||
| 579 | + loger.log('保存答题数据', url); | ||
| 580 | + | ||
| 581 | + fetch( encodeURI(url), { | ||
| 582 | + method: 'POST', | ||
| 583 | + headers: { | ||
| 584 | + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" | ||
| 585 | + }, | ||
| 586 | + //classId=1×tamp=2&authId=3&questionId=1&answer=0&userId=111&userName=zhang3 | ||
| 587 | + body: `classId=${classId}×tamp=${timestamp}&authId=${authId}&questionId=${questionId}&answer=${answer}&userId=${userId}&userName=${userName}`, | ||
| 588 | + timeout: 5000 | ||
| 589 | + }) | ||
| 590 | + | ||
| 591 | + .then(ret => { | ||
| 592 | + if (ret.ok) { | ||
| 593 | + return ret.json(); | ||
| 594 | + } else { | ||
| 595 | + loger.error(`保存答题数据-网络异常.状态码:${ret.status}`); | ||
| 596 | + this._emit(Sass.SASS_SEND_ANSWER_FAILED); | ||
| 597 | + throw ''; | ||
| 598 | + } | ||
| 599 | + }) | ||
| 600 | + .then(ret => { | ||
| 601 | + if (ret.code== 0) { | ||
| 602 | + // 0 正常 1 没有指定的课堂 4 验证信息错误(authId) 5 没有指定的题目 6 题目不属于该课堂 | ||
| 603 | + //{"code":0} | ||
| 604 | + loger.log('保存答题数据->完成'); | ||
| 605 | + this._emit(Sass.SASS_SEND_ANSWER_SUCCESS, ret); | ||
| 606 | + } else { | ||
| 607 | + loger.warn('保存答题数据->失败.', ret); | ||
| 608 | + this._emit(Sass.SASS_SEND_ANSWER_FAILED); | ||
| 609 | + } | ||
| 610 | + }) | ||
| 611 | + .catch(err => { | ||
| 612 | + loger.error(`保存答题数据->状态码:${err}`); | ||
| 613 | + this._emit(Sass.SASS_SEND_ANSWER_FAILED); | ||
| 614 | + }); | ||
| 615 | + } | ||
| 616 | + //查询题目数据 | ||
| 617 | + getQuestion(_param){ | ||
| 618 | + if(GlobalConfig.isRecordPlayBack){ | ||
| 619 | + loger.log('录制回放中->查询题目数据->不做操作'); | ||
| 620 | + return; | ||
| 621 | + } | ||
| 622 | + if(!_param){ | ||
| 623 | + loger.warn('查询题目数据->参数错误->param:',_param); | ||
| 624 | + this._emit(Sass.SASS_GET_QUESTION_FAILED); | ||
| 625 | + return; | ||
| 626 | + } | ||
| 627 | + //questionId long 题目id | ||
| 628 | + | ||
| 629 | + let questionId = parseInt(_param.questionId);//题目id | ||
| 630 | + let url = `http://${GlobalConfig.portal}/3m/api/question/get.do`; | ||
| 631 | + loger.log('查询题目数据', url); | ||
| 632 | + //接口中用的是GET | ||
| 633 | + fetch( encodeURI(url), { | ||
| 634 | + method: 'POST', | ||
| 635 | + headers: { | ||
| 636 | + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" | ||
| 637 | + }, | ||
| 638 | + body: `questionId=${questionId}`, | ||
| 639 | + timeout: 5000 | ||
| 640 | + }) | ||
| 641 | + | ||
| 642 | + .then(ret => { | ||
| 643 | + if (ret.ok) { | ||
| 644 | + return ret.json(); | ||
| 645 | + } else { | ||
| 646 | + loger.error(`查询题目数据-网络异常.状态码:${ret.status}`); | ||
| 647 | + this._emit(Sass.SASS_GET_QUESTION_FAILED); | ||
| 648 | + throw ''; | ||
| 649 | + } | ||
| 650 | + }) | ||
| 651 | + .then(ret => { | ||
| 652 | + if (ret.code== 0) { | ||
| 653 | + //0 正常 5 没有指定的题目 | ||
| 654 | + //{"timeLimit":0,"content":"test question","id":11,"code":0,"type":3,"options":"["True", "False"]"} | ||
| 655 | + loger.log('查询题目数据->完成'); | ||
| 656 | + this._emit(Sass.SASS_GET_QUESTION_SUCCESS, ret); | ||
| 657 | + } else { | ||
| 658 | + loger.warn('查询题目数据->失败.', ret); | ||
| 659 | + this._emit(Sass.SASS_GET_QUESTION_FAILED); | ||
| 660 | + } | ||
| 661 | + }) | ||
| 662 | + .catch(err => { | ||
| 663 | + loger.error(`查询题目数据->状态码:${err}`); | ||
| 664 | + this._emit(Sass.SASS_GET_QUESTION_FAILED); | ||
| 665 | + }); | ||
| 666 | + } | ||
| 667 | + //查询答题结果数据 | ||
| 668 | + getQuestionResult(_param){ | ||
| 669 | + if(GlobalConfig.isRecordPlayBack){ | ||
| 670 | + loger.log('录制回放中->查询答题结果数据->不做操作'); | ||
| 671 | + return; | ||
| 672 | + } | ||
| 673 | + if(!_param){ | ||
| 674 | + loger.warn('查询答题结果数据->参数错误->param:',_param); | ||
| 675 | + this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); | ||
| 676 | + return; | ||
| 677 | + } | ||
| 678 | + //questionId long 题目id | ||
| 679 | + | ||
| 680 | + let questionId = parseInt(_param.questionId);//题目id | ||
| 681 | + let url = `http://${GlobalConfig.portal}/3m/api/question/results.do`; | ||
| 682 | + loger.log('查询答题结果数据', url); | ||
| 683 | + | ||
| 684 | + fetch( encodeURI(url), { | ||
| 685 | + method: 'POST', | ||
| 686 | + headers: { | ||
| 687 | + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" | ||
| 688 | + }, | ||
| 689 | + body: `questionId=${questionId}`, | ||
| 690 | + timeout: 5000 | ||
| 691 | + }) | ||
| 692 | + | ||
| 693 | + .then(ret => { | ||
| 694 | + if (ret.ok) { | ||
| 695 | + return ret.json(); | ||
| 696 | + } else { | ||
| 697 | + loger.error(`查询答题结果数据-网络异常.状态码:${ret.status}`); | ||
| 698 | + this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); | ||
| 699 | + throw ''; | ||
| 700 | + } | ||
| 701 | + }) | ||
| 702 | + .then(ret => { | ||
| 703 | + if (ret.code== 0) { | ||
| 704 | + //int 0 正常5 没有指定的题目 | ||
| 705 | + /* list array 数组 | ||
| 706 | + userId string 用户id | ||
| 707 | + userName string 用户姓名 | ||
| 708 | + answer string 答案。选项的索引,多个时用逗号分隔 | ||
| 709 | + {"timeLimit":0,"content":"test question","id":11,"code":0,"type":3,"options":"["True", "False"]"}*/ | ||
| 710 | + | ||
| 711 | + loger.log('查询答题结果数据->完成'); | ||
| 712 | + this._emit(Sass.SASS_GET_QUESTION_RESULT_SUCCESS, ret); | ||
| 713 | + } else { | ||
| 714 | + loger.warn('查询答题结果数据->失败.', ret); | ||
| 715 | + this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); | ||
| 716 | + } | ||
| 717 | + }) | ||
| 718 | + .catch(err => { | ||
| 719 | + loger.error(`查询答题结果数据->状态码:${err}`); | ||
| 720 | + this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); | ||
| 721 | + }); | ||
| 722 | + } | ||
| 723 | + | ||
| 724 | + //点名--------------------------------------------------------- | ||
| 477 | } | 725 | } |
| 478 | 726 | ||
| 479 | Sass.prototype.SUCCESS = Sass.SUCCESS = 'Sass_success'; | 727 | Sass.prototype.SUCCESS = Sass.SUCCESS = 'Sass_success'; |
| @@ -486,6 +734,18 @@ Sass.prototype.DELETE_MEDIASHARE_SUCCESS = Sass.DELETE_MEDIASHARE_SUCCESS = 'sas | @@ -486,6 +734,18 @@ Sass.prototype.DELETE_MEDIASHARE_SUCCESS = Sass.DELETE_MEDIASHARE_SUCCESS = 'sas | ||
| 486 | Sass.prototype.CLASS_SAVE_STATUS_INFO_SUCCESS = Sass.CLASS_SAVE_STATUS_INFO_SUCCESS = 'sass_class_saveClassStatusInfoSuccess_message';//保存课堂状态信息 | 734 | Sass.prototype.CLASS_SAVE_STATUS_INFO_SUCCESS = Sass.CLASS_SAVE_STATUS_INFO_SUCCESS = 'sass_class_saveClassStatusInfoSuccess_message';//保存课堂状态信息 |
| 487 | Sass.prototype.CLASS_SAVE_RECORD_INFO_SUCCESS = Sass.CLASS_SAVE_RECORD_INFO_SUCCESS = 'sass_class_saveClassRecordInfoSuccess_message';//保存录制课堂信息 | 735 | Sass.prototype.CLASS_SAVE_RECORD_INFO_SUCCESS = Sass.CLASS_SAVE_RECORD_INFO_SUCCESS = 'sass_class_saveClassRecordInfoSuccess_message';//保存录制课堂信息 |
| 488 | 736 | ||
| 737 | +//答题卡和点名 | ||
| 738 | +Sass.prototype.SASS_CREAT_QUESTION_SUCCESS = Sass.SASS_CREAT_QUESTION_SUCCESS = 'sass_creat_question_success';//创建答题卡问题成功 | ||
| 739 | +Sass.prototype.SASS_CREAT_QUESTION_FAILED = Sass.SASS_CREAT_QUESTION_FAILED = 'sass_creat_question_failed';//创建答题卡失败 | ||
| 740 | + | ||
| 741 | +Sass.prototype.SASS_GET_QUESTION_SUCCESS = Sass.SASS_GET_QUESTION_SUCCESS = 'sass_get_question_success';//获取问题成功 | ||
| 742 | +Sass.prototype.SASS_GET_QUESTION_FAILED = Sass.SASS_GET_QUESTION_FAILED = 'sass_get_question_failed';//获取问题失败 | ||
| 743 | + | ||
| 744 | +Sass.prototype.SASS_GET_QUESTION_RESULT_SUCCESS = Sass.SASS_GET_QUESTION_RESULT_SUCCESS = 'sass_get_question_result_success';//获取问题结果成功 | ||
| 745 | +Sass.prototype.SASS_GET_QUESTION_RESULT_FAILED = Sass.SASS_GET_QUESTION_RESULT_FAILED = 'sass_get_question_result_failed';//获取问题结果失败 | ||
| 746 | + | ||
| 747 | +Sass.prototype.SASS_SEND_ANSWER_SUCCESS = Sass.SASS_SEND_ANSWER_SUCCESS = 'sass_send_answer_success';//保存答案成功 | ||
| 748 | +Sass.prototype.SASS_SEND_ANSWER_FAILED = Sass.SASS_SEND_ANSWER_FAILED = 'sass_send_answer_failed';//保存答案失败 | ||
| 489 | 749 | ||
| 490 | export default new Sass; | 750 | export default new Sass; |
| 491 | 751 |
| @@ -199,6 +199,12 @@ ApeConsts.CONFERENCE_OBJ_COUNTER_ID = ((ApeConsts.CONFERENCE_SESSION_ID << 16) + | @@ -199,6 +199,12 @@ ApeConsts.CONFERENCE_OBJ_COUNTER_ID = ((ApeConsts.CONFERENCE_SESSION_ID << 16) + | ||
| 199 | ApeConsts.CONFERENCE_OBJ_COUNTER_NAME = "id list"; | 199 | ApeConsts.CONFERENCE_OBJ_COUNTER_NAME = "id list"; |
| 200 | ApeConsts.CONFERENCE_OBJ_COUNTER_TAG = "id list tag"; | 200 | ApeConsts.CONFERENCE_OBJ_COUNTER_TAG = "id list tag"; |
| 201 | 201 | ||
| 202 | +//答题卡 | ||
| 203 | +ApeConsts.CONFERENCE_OBJ_QUESTION_ID = ((ApeConsts.CONFERENCE_SESSION_ID << 16) + 5); | ||
| 204 | +ApeConsts.CONFERENCE_OBJ_QUESTION_NAME = "question list"; | ||
| 205 | +ApeConsts.CONFERENCE_OBJ_QUESTION_TAG = "question list tag"; | ||
| 206 | + | ||
| 207 | + | ||
| 202 | // web sharing objects | 208 | // web sharing objects |
| 203 | ApeConsts.WEBSHARING_OBJ_TABLE_ID = ((ApeConsts.WEBSHARING_SESSION_ID << 16) + 1); | 209 | ApeConsts.WEBSHARING_OBJ_TABLE_ID = ((ApeConsts.WEBSHARING_SESSION_ID << 16) + 1); |
| 204 | ApeConsts.WEBSHARING_OBJ_TABLE_NAME = "web list"; | 210 | ApeConsts.WEBSHARING_OBJ_TABLE_NAME = "web list"; |
| @@ -7,12 +7,13 @@ import ApeConsts from './ApeConsts'; | @@ -7,12 +7,13 @@ import ApeConsts from './ApeConsts'; | ||
| 7 | import ThirdMessage from './ThirdMessage'; | 7 | import ThirdMessage from './ThirdMessage'; |
| 8 | import MessageTypes from 'MessageTypes'; | 8 | import MessageTypes from 'MessageTypes'; |
| 9 | import pdu from 'pdus'; | 9 | import pdu from 'pdus'; |
| 10 | -import { Zlib } from 'zlibjs/bin/zlib.min'; | 10 | +//import { Zlib } from 'zlibjs/bin/zlib.min'; |
| 11 | import UTF8 from 'utf-8'; | 11 | import UTF8 from 'utf-8'; |
| 12 | import Loger from 'Loger'; | 12 | import Loger from 'Loger'; |
| 13 | import GlobalConfig from 'GlobalConfig'; | 13 | import GlobalConfig from 'GlobalConfig'; |
| 14 | import EngineUtils from 'EngineUtils'; | 14 | import EngineUtils from 'EngineUtils'; |
| 15 | import TimerCounter from "TimerCounter"; | 15 | import TimerCounter from "TimerCounter"; |
| 16 | +import Sass from 'Sass'; | ||
| 16 | 17 | ||
| 17 | let loger = Loger.getLoger('ConferApe'); | 18 | let loger = Loger.getLoger('ConferApe'); |
| 18 | let itemIdx = 0;//table插入新数据的计数id,目前用时间戳 | 19 | let itemIdx = 0;//table插入新数据的计数id,目前用时间戳 |
| @@ -24,6 +25,7 @@ class ConferApe extends Ape { | @@ -24,6 +25,7 @@ class ConferApe extends Ape { | ||
| 24 | ApeConsts.CONFERENCE_SESSION_NAME, | 25 | ApeConsts.CONFERENCE_SESSION_NAME, |
| 25 | ApeConsts.CONFERENCE_SESSION_TAG | 26 | ApeConsts.CONFERENCE_SESSION_TAG |
| 26 | ); | 27 | ); |
| 28 | + | ||
| 27 | this.rosters = {};//用户列表 | 29 | this.rosters = {};//用户列表 |
| 28 | this.timerCounter = new TimerCounter();//计时器 | 30 | this.timerCounter = new TimerCounter();//计时器 |
| 29 | 31 | ||
| @@ -31,6 +33,21 @@ class ConferApe extends Ape { | @@ -31,6 +33,21 @@ class ConferApe extends Ape { | ||
| 31 | this.thirdMessage=new ThirdMessage(); | 33 | this.thirdMessage=new ThirdMessage(); |
| 32 | this.thirdMessage.on(ThirdMessage.RECIVE_MESSAGE,this.onThirdReciveParentMessage.bind(this)); | 34 | this.thirdMessage.on(ThirdMessage.RECIVE_MESSAGE,this.onThirdReciveParentMessage.bind(this)); |
| 33 | 35 | ||
| 36 | + //监听Sass事件 | ||
| 37 | + this._sass=Sass; | ||
| 38 | + //创建答题卡 | ||
| 39 | + this._sass.on(Sass.SASS_CREAT_QUESTION_SUCCESS,this._sassCreatQuestionSuccessHandler.bind(this)); | ||
| 40 | + this._sass.on(Sass.SASS_CREAT_QUESTION_FAILED,this._sassCreatQuestionFailedHandler.bind(this)); | ||
| 41 | + //获取题目数据 | ||
| 42 | + this._sass.on(Sass.SASS_GET_QUESTION_SUCCESS,this._sassGetQuestionSuccessHandler.bind(this)); | ||
| 43 | + this._sass.on(Sass.SASS_GET_QUESTION_FAILED,this._sassGetQuestionFailedHandler.bind(this)); | ||
| 44 | + //获取答题结果 | ||
| 45 | + this._sass.on(Sass.SASS_GET_QUESTION_RESULT_SUCCESS,this._sassGetQuestionResultSuccessHandler.bind(this)); | ||
| 46 | + this._sass.on(Sass.SASS_GET_QUESTION_RESULT_FAILED,this._sassGetQuestionResultFailedHandler.bind(this)); | ||
| 47 | + //保存答题数据 | ||
| 48 | + this._sass.on(Sass.SASS_SEND_ANSWER_SUCCESS,this._sassSendAnswerSuccessHandler.bind(this)); | ||
| 49 | + this._sass.on(Sass.SASS_SEND_ANSWER_FAILED,this._sassSendAnswerFailedHandler.bind(this)); | ||
| 50 | + | ||
| 34 | // Ape Models | 51 | // Ape Models |
| 35 | this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer); | 52 | this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer); |
| 36 | 53 | ||
| @@ -433,7 +450,7 @@ class ConferApe extends Ape { | @@ -433,7 +450,7 @@ class ConferApe extends Ape { | ||
| 433 | this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); | 450 | this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); |
| 434 | return; | 451 | return; |
| 435 | } | 452 | } |
| 436 | - itemIdx = ApeConsts.CONFERENCE_OBJ_TABLE_ID;// itemIdx=_param.itemIdx; | 453 | + let itemIdx = ApeConsts.CONFERENCE_OBJ_TABLE_ID;// itemIdx=_param.itemIdx; |
| 437 | let modelPdu = this.packPdu(_param, itemIdx); | 454 | let modelPdu = this.packPdu(_param, itemIdx); |
| 438 | loger.log(modelPdu); | 455 | loger.log(modelPdu); |
| 439 | if (modelPdu == null) { | 456 | if (modelPdu == null) { |
| @@ -949,6 +966,95 @@ class ConferApe extends Ape { | @@ -949,6 +966,95 @@ class ConferApe extends Ape { | ||
| 949 | } | 966 | } |
| 950 | return null; | 967 | return null; |
| 951 | } | 968 | } |
| 969 | + //答题卡接口------------------------------------------------------------------- | ||
| 970 | + creatQuestion(_param){ | ||
| 971 | + if(!_param){ | ||
| 972 | + loger.warn("创建答题卡->参数错误",_param); | ||
| 973 | + return; | ||
| 974 | + } | ||
| 975 | + loger.log("创建答题卡->",_param); | ||
| 976 | + if(this._sass){ | ||
| 977 | + /*{ | ||
| 978 | + "type": 1,//1单选,2多选,3判断,4点名 | ||
| 979 | + "content": "题目",//没有就传"" | ||
| 980 | + "timeLimit": 88,//有效时间(秒) | ||
| 981 | + "correct": "[]",//正确答案,没有就传[] | ||
| 982 | + "options": [],//选项数组,没有就传[] | ||
| 983 | + "answer": []//学生选择的答案,没有就传[] | ||
| 984 | + }*/ | ||
| 985 | + let paramObj=_param; | ||
| 986 | + paramObj.classId=GlobalConfig.classId; | ||
| 987 | + this._sass.creatQuestion(paramObj); | ||
| 988 | + } | ||
| 989 | + } | ||
| 990 | + getQuestion(_param){ | ||
| 991 | + if(!_param){ | ||
| 992 | + loger.warn("获取答题卡数据->参数错误",_param); | ||
| 993 | + return; | ||
| 994 | + } | ||
| 995 | + loger.log("获取答题卡数据->.",_param); | ||
| 996 | + if(this._sass){ | ||
| 997 | + this._sass.getQuestion(_param); | ||
| 998 | + } | ||
| 999 | + } | ||
| 1000 | + getQuestionResult(_param){ | ||
| 1001 | + if(!_param){ | ||
| 1002 | + loger.warn("获取答题卡结果->参数错误",_param); | ||
| 1003 | + return; | ||
| 1004 | + } | ||
| 1005 | + loger.log("获取答题卡结果->",_param); | ||
| 1006 | + if(this._sass){ | ||
| 1007 | + this._sass.getQuestionResult(_param); | ||
| 1008 | + } | ||
| 1009 | + } | ||
| 1010 | + stopQuestion(_param){ | ||
| 1011 | + if(!_param){ | ||
| 1012 | + loger.warn("停止答题->参数错误",_param); | ||
| 1013 | + return; | ||
| 1014 | + } | ||
| 1015 | + loger.log("停止答题->",_param); | ||
| 1016 | + | ||
| 1017 | + } | ||
| 1018 | + sendAnswer(_param){ | ||
| 1019 | + if(!_param){ | ||
| 1020 | + loger.warn("保存答题答案->参数错误",_param); | ||
| 1021 | + return; | ||
| 1022 | + } | ||
| 1023 | + loger.log("保存答题答案->",_param); | ||
| 1024 | + if(this._sass){ | ||
| 1025 | + let paramObj=_param; | ||
| 1026 | + paramObj.classId=GlobalConfig.classId; | ||
| 1027 | + paramObj.userId = GlobalConfig.userId; | ||
| 1028 | + paramObj.userName = GlobalConfig.userName; | ||
| 1029 | + this._sass.sendAnswer(_param); | ||
| 1030 | + } | ||
| 1031 | + } | ||
| 1032 | + | ||
| 1033 | + //Sass 事件监听 | ||
| 1034 | + _sassCreatQuestionSuccessHandler(_data){ | ||
| 1035 | + loger.log("创建答题卡成功",_data); | ||
| 1036 | + } | ||
| 1037 | + _sassCreatQuestionFailedHandler(_data){ | ||
| 1038 | + loger.log("创建答题卡失败",_data); | ||
| 1039 | + } | ||
| 1040 | + _sassGetQuestionSuccessHandler(_data){ | ||
| 1041 | + loger.log("获取答题卡数据成功",_data); | ||
| 1042 | + } | ||
| 1043 | + _sassGetQuestionFailedHandler(_data){ | ||
| 1044 | + loger.log("获取答题卡数据失败",_data); | ||
| 1045 | + } | ||
| 1046 | + _sassGetQuestionResultSuccessHandler(_data){ | ||
| 1047 | + loger.log("获取答题卡结果成功",_data); | ||
| 1048 | + } | ||
| 1049 | + _sassGetQuestionResultFailedHandler(_data){ | ||
| 1050 | + loger.log("获取答题卡结果失败",_data); | ||
| 1051 | + } | ||
| 1052 | + _sassSendAnswerSuccessHandler(_data){ | ||
| 1053 | + loger.log("保存答案成功",_data); | ||
| 1054 | + } | ||
| 1055 | + _sassSendAnswerFailedHandler(_data){ | ||
| 1056 | + loger.log("保存答案失败",_data); | ||
| 1057 | + } | ||
| 952 | 1058 | ||
| 953 | } | 1059 | } |
| 954 | 1060 |
| @@ -18,7 +18,7 @@ import ApeConsts from './ApeConsts'; | @@ -18,7 +18,7 @@ import ApeConsts from './ApeConsts'; | ||
| 18 | import pdu from 'pdus'; | 18 | import pdu from 'pdus'; |
| 19 | import Loger from 'Loger'; | 19 | import Loger from 'Loger'; |
| 20 | import MessageTypes from 'MessageTypes'; | 20 | import MessageTypes from 'MessageTypes'; |
| 21 | -import { Zlib } from 'zlibjs/bin/zlib.min'; | 21 | +//import { Zlib } from 'zlibjs/bin/zlib.min'; |
| 22 | import UTF8 from 'utf-8'; | 22 | import UTF8 from 'utf-8'; |
| 23 | import GlobalConfig from 'GlobalConfig'; | 23 | import GlobalConfig from 'GlobalConfig'; |
| 24 | import EngineUtils from 'EngineUtils'; | 24 | import EngineUtils from 'EngineUtils'; |
-
请 注册 或 登录 后发表评论