meetingService.js
9.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
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();