李勇

1.Sass增加答题卡4个接口(创建,查询题目,查询结果,保存答案);2.会议模块增加对外控制的接口(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&timestamp=2&authId=3&content=&options=["A","B","C","D"]&type=1&correct=0&timeLimit=60
  518 + body: `classId=${classId}&timestamp=${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&timestamp=2&authId=3&questionId=1&answer=0&userId=111&userName=zhang3
  587 + body: `classId=${classId}&timestamp=${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';