var meetingModel = require('../model/meetingModel'); var oldMeetingModel = require('../model/oldMeetingModel'); var oldMeetingRecording = require('../model/oldMeetingRecording'); var v_meetingModel = require('../model/v_meetingModel'); var status = require('../util/resTemplate'); var saitMd5 = require('../util/saltMD5'); var sequelize = require('../config'); var tokenUtil = require('../util/tokenUtil'); var saitMd5 = require('../util/saltMD5') var co = require('co'); const xml2js = require('xml2js'); const requestUtil = require('../util/requestUtil') const builder = new xml2js.Builder(); // JSON->xml const parser = new xml2js.Parser(); //xml -> json function meetingService(){ } meetingService.prototype.createMeeting = async(meetingInfo) =>{ try { let backMeeting = await meetingModel.create(meetingInfo); return backMeeting } catch (error) { throw error } } meetingService.prototype.getMeeting = async(queryData,page = 1,pageno =12) =>{ try { let sql =`SELECT id, meeting_number AS meetingNumber, meeting_name AS meetingName, meeting_content AS meetingContent, create_user, create_time AS createTime, begin_time AS beginTime, end_time AS endTime, invite_user AS inviteUser, meeting_type AS meetingType, meeting_status AS meetingStatus, user_ip AS userIp, meeting_key AS meetingKey, host_password AS hostPassword, presenter_password AS presenterPassword, assistant_password AS assistantPassword, attendee_password AS attendeePassword, capacity, top_node_id AS topNodeId, top_node_addr AS topNodeAddr, user_data AS userData, site_id AS siteId, classroom_number AS classroomNumber, ui_language AS uiLanguage, is_public AS isPublic, control_mode AS controlMode, mic_auto AS micAuto, has_interaction AS hasInteraction, auto_record AS autoRecord, max_videoChannels AS maxVideoChannels, max_audioChannels AS maxAudioChannels, video_quality AS videoQuality, pagenavi_Userprivilege AS pagenaviUserprivilege, marker_Userprivilege AS markerUserprivilege, chatToNormal_Userprivilege AS chatToNormalUserprivilege, chatToHost_Userprivilege AS chatToHostUserprivilege, doc_module AS docModule, screen_module AS screenModule, media_module AS mediaModule, whiteboard_module AS whiteboardModule, record_module AS recordModule, video_module AS videoModule, userList_module AS userListModule, chat_module AS chatModule, cycle, repeatmode, endmode, finalenddate, endcount, repeatday, repeatweek, repeatmonthday, repeatmonthweekweek, repeatmonthweekday, frequency, month_type AS monthType, inviter_radio AS inviterRadio, ahead_time AS aheadTime, chat_interval AS chatInterval, h5_Module AS h5Module, (SELECT 3m_attachment.path FROM 3m_user LEFT JOIN 3m_attachment ON 3m_attachment.business_id = 3m_user.id WHERE 3m_user.login_name = 3m_meeting.create_user) teacherPhoto, ( SELECT path FROM 3m_attachment WHERE 3m_attachment.business_id = 3m_meeting.id and 3m_attachment.category = 1 ) meetingPhoto, ( SELECT COUNT(*) FROM 3m_student_meeting WHERE 3m_student_meeting.meeting_id = 3m_meeting.id ) reservationNumber FROM 3m_meeting AS 3m_meeting WHERE 3m_meeting.site_id = '` +queryData.siteId+"'"; if(queryData.create_user){ sql += " and 3m_meeting.create_user = '" + queryData.create_user+"'"; } if(queryData.id){ sql += " and 3m_meeting.id = '" + queryData.id+"'"; } if(queryData.meetingStatus){ sql += " and 3m_meeting.meeting_status = '" + queryData.meetingStatus+"'"; } if(queryData.meetingType){ sql += " and 3m_meeting.meeting_type = '" + queryData.meetingType+"'"; } sql += ' ORDER BY 3m_meeting.create_time DESC LIMIT '+(page-1)*pageno+' , ' +pageno let backMeeting = await sequelize.query(sql); //let backMeeting = await meetingModel.findAll({where:queryData,order:[['createTime', 'DESC']], offset: (page-1)*pageno, limit: pageno}); let count = await meetingModel.count({where:queryData}) return {meetingInfo:backMeeting[0],count:count,page:page,pageno:pageno}; } catch (error) { console.error(error) throw error; } } meetingService.prototype.delMeeting = async(meetingId) =>{ try { let Meeting = await meetingModel.findOne({where:{id:meetingId}}); if(!Meeting){ return {code:11,msg:'课堂不存在'} } let backMeeting = await meetingModel.destroy({where:{id:meetingId}}); return backMeeting } catch (error) { throw error; } } meetingService.prototype.updateMeeting = async(params,meetingId) =>{ try { let Meeting = await meetingModel.findOne({where:{id:meetingId}}); if(!Meeting){ return {code:11,msg:'课堂不存在'} } let backMeeting = await meetingModel.update({where:{id:meetingId}}); return backMeeting } catch (error) { console.error(error); throw error } } meetingService.prototype.getAllMeetingBySiteID = async(params,page = 1,pageno =10)=>{ try { let oldMeeting = await oldMeetingModel.findAll({where:{siteId:params.meetingId}}); let oldMeetingCont = await oldMeetingModel.count({where:{siteId:params.meetingId}}); let Meeting = await meetingModel.findAll({where:{site_id:params.meetingId}}); let MeetingCount = await meetingModel.count({where:{site_id:params.meetingId}}); if(!Meeting){ return {code:11,msg:'课堂不存在'} } let meetingAll = await v_meetingModel.findAll({where:params,offset: (page-1)*pageno, limit: pageno,order:[['beginTime', 'DESC']]}); let meetingdata = Meeting.concat(oldMeeting); await meetingdata.sort(function(m1,m2){ return new Date(m2.beginTime).getTime() - new Date(m1.beginTime).getTime(); }); console.log((page-1)*pageno,(page-1)*pageno+10) // return {meeting:meetingdata.slice((page-1)*pageno,100)} return {meeting:meetingAll} } catch (error) { throw error } } meetingService.prototype.recording = async(params)=>{ try { let newURL = 'http://'+params.siteId+'.xuedianyun.com/3m/doPlayRecord.do?meetingNumber='; let Meeting = await meetingModel.findOne({where:{classroomNumber:params.mtgKey}}); if(Meeting){ return {url:newURL+Meeting.meetingNumber} }else{ let oldMeeting = await oldMeetingModel.findOne({where:{classroomNumber:params.mtgKey}}); if(!oldMeeting){ return {code:400,msg:'课堂不存在'} }else{ let oldURL = 'http://saas.3mang.com:80/3m/attend.do?meetingNumber='+oldMeeting.meetingNumber+'&streamNameOfRecord='; let oldMRecording = await oldMeetingRecording.findOne({where:{meetingId:oldMeeting.meetingNumber}}); if(!oldMRecording){ throw new Error('课堂没有录制') } var d = oldMRecording.configFile.split('.')[0] let a = oldURL+d+"&userRole=record&userName="+params.username+"&password="+oldMeeting.attendeePassword; return {url:a} // var xml = builder.buildObject(recordInfo); // let info = await requestUtil.post('http://markettest.xuedianyun.com/3m/meeting/join_mtg.do',xml); // var jsonXml = await requestUtil.json2xml(info); } } return {meeting:Meeting.concat(oldMeeting)} } catch (error) { console.error(error); throw error } } module.exports = new meetingService();