李勇

1.修改加入会议的接口,增加两个字段,摄像头和麦克风是否可用的字段

2.用户信息中增加摄像头和麦克风是否可用两个属性
@@ -198,7 +198,7 @@ export default class MessageEntrance extends Emiter { @@ -198,7 +198,7 @@ export default class MessageEntrance extends Emiter {
198 GlobalConfig.portal = _param.portal; 198 GlobalConfig.portal = _param.portal;
199 GlobalConfig.userRole = _param.userRole || ApeConsts.normal; 199 GlobalConfig.userRole = _param.userRole || ApeConsts.normal;
200 GlobalConfig.userId = _param.userId || "0"; 200 GlobalConfig.userId = _param.userId || "0";
201 - 201 + GlobalConfig.userName=_param.userName || "";
202 //获取课堂校验信息 202 //获取课堂校验信息
203 if (_sass) { 203 if (_sass) {
204 _sass.getJoinParams(GlobalConfig.getClassInfo()); 204 _sass.getJoinParams(GlobalConfig.getClassInfo());
@@ -221,9 +221,13 @@ export default class MessageEntrance extends Emiter { @@ -221,9 +221,13 @@ export default class MessageEntrance extends Emiter {
221 return; 221 return;
222 } 222 }
223 223
224 - GlobalConfig.userName = _param.userName; 224 + if(GlobalConfig.userName==null||GlobalConfig.userName==""){
  225 + GlobalConfig.userName = _param.userName;
  226 + }
225 GlobalConfig.password = _param.password || ""; 227 GlobalConfig.password = _param.password || "";
226 - 228 + GlobalConfig.hasCamera=(typeof _param.hasCamera=="boolean")? _param.hasCamera:false;
  229 + GlobalConfig.hasMicrophone=(typeof _param.hasMicrophone=="boolean")? _param.hasMicrophone:false;
  230 + debugger;
227 //开始校验 231 //开始校验
228 if (_sass) { 232 if (_sass) {
229 _sass.passwordAndMd5Checking(GlobalConfig.getClassInfo()); 233 _sass.passwordAndMd5Checking(GlobalConfig.getClassInfo());
@@ -259,6 +259,8 @@ GlobalConfig.maxMediaChannels=0; @@ -259,6 +259,8 @@ GlobalConfig.maxMediaChannels=0;
259 GlobalConfig.isDebug=false; 259 GlobalConfig.isDebug=false;
260 GlobalConfig.deBugData={}; 260 GlobalConfig.deBugData={};
261 261
  262 +GlobalConfig.hasCamera=false;//摄像头是否可用
  263 +GlobalConfig.hasMicrophone=false;//麦克风是否可用
262 264
263 GlobalConfig.deviceType=0; //设备类型 0:电脑 1:安卓 2:ios 265 GlobalConfig.deviceType=0; //设备类型 0:电脑 1:安卓 2:ios
264 GlobalConfig.userIP="";//用户当前IP 266 GlobalConfig.userIP="";//用户当前IP
@@ -42,7 +42,7 @@ public static const NR_INVISIBLE:uint = 32; // 隐身用户 @@ -42,7 +42,7 @@ public static const NR_INVISIBLE:uint = 32; // 隐身用户
42 42
43 43
44 //角色身份 44 //角色身份
45 -ApeConsts.NR_GUEST = 0; // 客人 45 +//ApeConsts.NR_GUEST = 0; // 客人
46 ApeConsts.NR_NORMAL = 1;// 普通与会者 46 ApeConsts.NR_NORMAL = 1;// 普通与会者
47 ApeConsts.NR_ADMIN = 2;// 管理员 47 ApeConsts.NR_ADMIN = 2;// 管理员
48 ApeConsts.NR_MASTER = 4; // 主持人 48 ApeConsts.NR_MASTER = 4; // 主持人
@@ -56,6 +56,19 @@ ApeConsts.presenter="presenter";//(主讲人) @@ -56,6 +56,19 @@ ApeConsts.presenter="presenter";//(主讲人)
56 ApeConsts.assistant="assistant";//(助教) 56 ApeConsts.assistant="assistant";//(助教)
57 ApeConsts.normal="normal";//(普通角色/学生) 57 ApeConsts.normal="normal";//(普通角色/学生)
58 ApeConsts.record="record";//(暂时没用. 58 ApeConsts.record="record";//(暂时没用.
  59 +ApeConsts.invisible="invisible";//隐身用户
  60 +
  61 +////最新定义的角色身份 20170220
  62 +//ApeConsts.USER_TYPE_HOST=1;//(主持人/老师)
  63 +//ApeConsts.USER_TYPE_ASSISTANT=2;//(助教)
  64 +//ApeConsts.USER_TYPE_NORMAL=8;//(普通角色/学生)
  65 +//ApeConsts.USER_TYPE_MONITOR_INVISIBLE=32;//(监课/隐身)
  66 +//
  67 +////
  68 +//ApeConsts.USER_TYPE_HOST_STRING="host";//(主持人/老师)
  69 +//ApeConsts.USER_TYPE_ASSISTANT_STRING="assistant";//(助教)
  70 +//ApeConsts.USER_TYPE_NORMAL_STRING="normal";//(普通角色/学生)
  71 +//ApeConsts.USER_TYPE_MONITOR_INVISIBLE_STRING="invisible";//(监课/隐身)
59 72
60 73
61 /*msType type*/ 74 /*msType type*/
@@ -146,7 +146,6 @@ class ConferApe extends Ape { @@ -146,7 +146,6 @@ class ConferApe extends Ape {
146 let userDataPdu = new pdu['RCNodeInfoUserDataPdu']; 146 let userDataPdu = new pdu['RCNodeInfoUserDataPdu'];
147 userDataPdu.qq = ''; 147 userDataPdu.qq = '';
148 userDataPdu.skype = ''; 148 userDataPdu.skype = '';
149 - userDataPdu.mobile = '';  
150 149
151 nodeInfoRecordPdu.userData = userDataPdu.toArrayBuffer(); 150 nodeInfoRecordPdu.userData = userDataPdu.toArrayBuffer();
152 nodeInfoRecordPdu.deviceType = GlobalConfig.deviceType; 151 nodeInfoRecordPdu.deviceType = GlobalConfig.deviceType;
@@ -441,8 +440,14 @@ class ConferApe extends Ape { @@ -441,8 +440,14 @@ class ConferApe extends Ape {
441 } 440 }
442 let rosterExists = this.rosters[nodeId]; 441 let rosterExists = this.rosters[nodeId];
443 this.rosters[nodeId] = nodeData; 442 this.rosters[nodeId] = nodeData;
  443 + let userDataObj=null;
444 if (!rosterExists) { 444 if (!rosterExists) {
445 - let userDataObj=pdu['RCNodeInfoUserDataPdu'].decode(nodeData.userData); 445 + try{
  446 + userDataObj=pdu['RCNodeInfoUserDataPdu'].decode(nodeData.userData);
  447 + }catch (err){
  448 + loger.log("RCNodeInfoUserDataPdu decode err",err.message);
  449 + }
  450 +
446 let newNodeData=nodeData; 451 let newNodeData=nodeData;
447 newNodeData.userData=userDataObj; 452 newNodeData.userData=userDataObj;
448 loger.log("更新人员列表数据 rosterUpdateHandler",{"nodeId":nodeId}); 453 loger.log("更新人员列表数据 rosterUpdateHandler",{"nodeId":nodeId});
@@ -170,14 +170,20 @@ class VideoChat extends Ape { @@ -170,14 +170,20 @@ class VideoChat extends Ape {
170 loger.log('不能发送Video消息.McuClient还未初始化数据!'); 170 loger.log('不能发送Video消息.McuClient还未初始化数据!');
171 if(GlobalConfig.getCurrentStatus().code==0||GlobalConfig.getCurrentStatus().code==1){ 171 if(GlobalConfig.getCurrentStatus().code==0||GlobalConfig.getCurrentStatus().code==1){
172 this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_SEND_FAILED_NO_JOIN); 172 this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_SEND_FAILED_NO_JOIN);
173 - return; 173 + return ;
174 } 174 }
175 - return ; 175 + return 1;
  176 + }
  177 + if(_param==null){
  178 + loger.warn('sendVideoCommandMsg失败,参数错误',paramInfo);
  179 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
  180 + return 1;
176 } 181 }
177 // to, message 182 // to, message
178 loger.log('发送Video消息.', _param); 183 loger.log('发送Video消息.', _param);
179 184
180 185
  186 +
181 /* message RCVideoSendDataRequestPdu { 187 /* message RCVideoSendDataRequestPdu {
182 required uint32 from_node_id = 1;//发起人 188 required uint32 from_node_id = 1;//发起人
183 optional uint32 to_node_id = 2;//接收人,如果是0就是所有人都接收 189 optional uint32 to_node_id = 2;//接收人,如果是0就是所有人都接收
@@ -204,6 +210,7 @@ class VideoChat extends Ape { @@ -204,6 +210,7 @@ class VideoChat extends Ape {
204 loger.log('发送公聊Video消息.'); 210 loger.log('发送公聊Video消息.');
205 this.sendChatUniform(videoSendPdu); 211 this.sendChatUniform(videoSendPdu);
206 } 212 }
  213 + return 0;
207 } 214 }
208 215
209 sendTableUpdateHandler(){ 216 sendTableUpdateHandler(){
@@ -334,6 +341,7 @@ class VideoChat extends Ape { @@ -334,6 +341,7 @@ class VideoChat extends Ape {
334 let packPduModel =new pdu['RCVideoChannelInfoPdu']; 341 let packPduModel =new pdu['RCVideoChannelInfoPdu'];
335 packPduModel.status=ApeConsts.CHANNEL_STATUS_OPENING; 342 packPduModel.status=ApeConsts.CHANNEL_STATUS_OPENING;
336 packPduModel.channelId=_itemIdx; 343 packPduModel.channelId=_itemIdx;
  344 + packPduModel.classId=parseInt(GlobalConfig.classId);
337 packPduModel.mediaType=ApeConsts.MEDIA_TYPE_VIDEO; 345 packPduModel.mediaType=ApeConsts.MEDIA_TYPE_VIDEO;
338 packPduModel.timestamp=EngineUtils.creatTimestamp(); 346 packPduModel.timestamp=EngineUtils.creatTimestamp();
339 packPduModel.fromNodeId =GlobalConfig.nodeId; 347 packPduModel.fromNodeId =GlobalConfig.nodeId;
@@ -134,6 +134,17 @@ enum RCPduType_E { @@ -134,6 +134,17 @@ enum RCPduType_E {
134 RCPDU_INDEX_CONFERENCE_USER_JOINED = 302; 134 RCPDU_INDEX_CONFERENCE_USER_JOINED = 302;
135 RCPDU_INDEX_CONFERENCE_USER_EXITED = 303; 135 RCPDU_INDEX_CONFERENCE_USER_EXITED = 303;
136 RCPDU_INDEX_CONFERENCE_USERS = 304; 136 RCPDU_INDEX_CONFERENCE_USERS = 304;
  137 +
  138 +
  139 +
  140 +
  141 + //new data
  142 + RCPDU_SEND_CONFERENCE_DATA_REQUEST =500;
  143 + RCPDU_SEND_VIDEO_DATA_REQUEST = 501;
  144 + RCPDU_SEND_AUDIO_DATA_REQUEST = 502;
  145 + RCPDU_SEND_GIFT_DATA_REQUEST = 503;
  146 + RCPDU_SEND_CHAT_DATA_REQUEST = 504;
  147 +
137 } 148 }
138 149
139 enum RCPduNodeType_E { 150 enum RCPduNodeType_E {
@@ -756,6 +767,7 @@ message RCVideoChannelInfoPdu { @@ -756,6 +767,7 @@ message RCVideoChannelInfoPdu {
756 optional uint32 from_node_id = 4;//发起者的id 767 optional uint32 from_node_id = 4;//发起者的id
757 optional uint32 to_node_id = 5;//接收者的id,(如果是0,所有人都接收) 768 optional uint32 to_node_id = 5;//接收者的id,(如果是0,所有人都接收)
758 optional uint32 media_type = 6;//媒体类型:视频(包含音频)或音频 769 optional uint32 media_type = 6;//媒体类型:视频(包含音频)或音频
  770 + optional uint32 class_id = 7;//课堂号
759 } 771 }
760 772
761 message RCVideoChannelInfoRecordPdu { 773 message RCVideoChannelInfoRecordPdu {