package weaver.meeting.video.consumer; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.api.meeting.cusvideo.util.YealinkVideoUtil; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; import weaver.Constants; import weaver.WorkPlan.WorkPlanHandler; import weaver.WorkPlan.WorkPlanService; import weaver.WorkPlan.WorkPlanShare; import weaver.conn.RecordSet; import weaver.domain.workplan.WorkPlan; import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; import weaver.hrm.resource.ResourceComInfo; import weaver.meeting.video.util.VideoMeetingUtil; import weaver.systeminfo.SystemEnv; import java.net.URLEncoder; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Description: * @Author: lj * @CreateTime: 2023-06-05 15:41 * @Version: 1.0 */ public class YealinkVideoClient extends VideoMeetingClient { private static BaseBean logger = new BaseBean(); @Override public Map addMeeting(Map otherParam) { Map apiData = new HashMap<>(); try { if ("".equals(Util.null2String(getDomainName_url()))) { throw new RuntimeException("获取亿联会议地址URl未配置,请检查视频会议是否配置正常!"); } //获取参数 logger.writeLog("^^^ YealinkVideoClient.addMeeting : otherParam = " + otherParam); String userid = Util.null2String(otherParam.get("userid"));//创建人ID String topic = Util.null2String(otherParam.get("topic"));//会议标题 String start_time = Util.null2String(otherParam.get("starttime")) + ":00";//会议开始时间 String end_time = Util.null2String(otherParam.get("end_time")) + ":00";//会议结束时间 String hrmids = Util.null2String(otherParam.get("hrmids"));//会议参与人 String password = Util.null2String(otherParam.get("password"));//会议密码 String apiKey = Util.null2String(otherParam.get("api_key"));//对应亿联的client id String apiSecret = Util.null2String(otherParam.get("api_secret"));//对应亿联的client secret //这里需要替换创建人的ID String host = StringUtils.removeEnd(getDomainName_url(), "/"); //获取token String token = YealinkVideoUtil.getToken(host, apiKey, apiSecret); //开始执行请求 String createUserId = YealinkVideoUtil.getYeaLinkUserId(host, token, userid); String url = host + "/users/" + createUserId + "/meetings"; //构建请求体 JSONObject body = new JSONObject(); //会议主题,长度小于128 if (topic.length() > 128) { topic = StringUtils.substring(topic, 0, 128); } body.put("subject", topic); //会议开始日期,格式为yyyy-MM-dd Date start = DateUtils.parseDate(start_time, "yyyy-MM-dd HH:mm:ss"); if (start.compareTo(new Date()) < 0) { start = new Date(); } String startDate = DateFormatUtils.format(start, "yyyy-MM-dd"); body.put("startDate", startDate); //会议开始时间,格式为HH:mm,小时部分使用24小时计算,分钟部分为5的倍数。会议开始时间必须大于当前时间。 int minute = DateUtil.minute(start); start = DateUtils.addMinutes(DateUtils.addMinutes(start, -minute % 5), 5); String startTime = DateFormatUtils.format(start, "HH:mm"); body.put("startTime", startTime); //会议持续时间小时部分,取值范围为[0, 48)。 int[] dateHoursAndMinute = getDateHoursAndMinute(start, DateUtils.parseDate(end_time, "yyyy-MM-dd HH:mm:ss")); int durationHour = dateHoursAndMinute[0]; body.put("durationHour", durationHour); //会议持续时间分钟部分,当durationHour为0时,可选值为:30、45;其他情况下,可选值为:0、15、30、45。 int durationMinute = dateHoursAndMinute[1]; body.put("durationMinute", durationMinute); //参会成员列表。参会成员数量默认支持100个,如需调整请联系亿联会议,默认创建者为组织者 JSONArray participants = new JSONArray(); //首先添加组织者 JSONObject createUser = new JSONObject(); createUser.put("id", createUserId); createUser.put("role", 0); participants.add(createUser); for (String hrmid : StringUtils.split(hrmids, ",")) { JSONObject participant = new JSONObject(); participant.put("id", YealinkVideoUtil.getYeaLinkUserId(host, token, hrmid)); participant.put("role", 2); participants.add(participant); } body.put("participants", participants); //是否使用随机会议号,true:使用随机会议号,false:使用会议室会议号 body.put("enableRandomMeetingNumber", true); //会议密码,格式为:6位数字 body.put("meetingPassword", password); body.put("enableWatermark", true); body.put("watermarkTransparency", 2); body.put("watermarkFontSize", 1); //执行接口 JSONObject resultJson = YealinkVideoUtil.doPost(url, token, null, body); //返回结果 apiData.put("maxid", videoData2OA(host, token, createUserId, resultJson, otherParam)); apiData.put("api_status", true); } catch (Exception e) { logger.writeLog("^^^ YealinkVideoClient.addMeeting : error !!!", e); apiData.put("api_status", false); apiData.put("msg", "新增亿联会议失败:" + e.getMessage()); } return apiData; } @Override public Map editMeeting(Map otherParam) { Map apiData = new HashMap<>(); try { if ("".equals(Util.null2String(getDomainName_url()))) { throw new RuntimeException("获取亿联会议地址URl未配置,请检查视频会议是否配置正常!"); } //获取参数 logger.writeLog("^^^ YealinkVideoClient.editMeeting : otherParam = " + otherParam); String userid = Util.null2String(otherParam.get("userid"));//创建人ID String topic = Util.null2String(otherParam.get("topic"));//会议标题 String start_time = Util.null2String(otherParam.get("starttime")) + ":00";//会议开始时间 String end_time = Util.null2String(otherParam.get("end_time")) + ":00";//会议结束时间 String hrmids = Util.null2String(otherParam.get("hrmids"));//会议参与人 String password = Util.null2String(otherParam.get("password"));//会议密码 String apiKey = Util.null2String(otherParam.get("api_key"));//对应亿联的client id String apiSecret = Util.null2String(otherParam.get("api_secret"));//对应亿联的client secret //这里需要替换创建人的ID String host = StringUtils.removeEnd(getDomainName_url(), "/"); //获取token String token = YealinkVideoUtil.getToken(host, apiKey, apiSecret); //开始执行请求 String createUserId = YealinkVideoUtil.getYeaLinkUserId(host, token, userid); //会议ID String meetingId = Util.null2String(otherParam.get("id")); String url = host + "/users/" + createUserId + "/meetings/" + meetingId; //先获取原始会议信息 JSONObject meetingInfo = getMeetingInfoById(host, token, createUserId, meetingId); //构建请求体 JSONObject body = new JSONObject(); //更新类型,可选值:0:更新单个会议,1:更新会议序列 body.put("updateType", 0); //会议顺序号,取值范围为[1, 100],更新单个会议时必输 body.put("sequence", 1); //时区ID。具体时区列表信息详见基础信息-查询时区列表接口 body.put("zoneId", meetingInfo.getString("zoneId")); //会议主题,长度小于128 if (topic.length() > 128) { topic = StringUtils.substring(topic, 0, 128); } body.put("subject", topic); //会议开始日期,格式为yyyy-MM-dd Date start = DateUtils.parseDate(start_time, "yyyy-MM-dd HH:mm:ss"); if (start.compareTo(new Date()) < 0) { start = new Date(); } String startDate = DateFormatUtils.format(start, "yyyy-MM-dd"); body.put("startDate", startDate); //会议开始时间,格式为HH:mm,小时部分使用24小时计算,分钟部分为5的倍数。会议开始时间必须大于当前时间。 int minute = DateUtil.minute(start); start = DateUtils.addMinutes(DateUtils.addMinutes(start, -minute % 5), 5); String startTime = DateFormatUtils.format(start, "HH:mm"); body.put("startTime", startTime); //会议持续时间小时部分,取值范围为[0, 48)。 int[] dateHoursAndMinute = getDateHoursAndMinute(start, DateUtils.parseDate(end_time, "yyyy-MM-dd HH:mm:ss")); int durationHour = dateHoursAndMinute[0]; body.put("durationHour", durationHour); //会议持续时间分钟部分,当durationHour为0时,可选值为:30、45;其他情况下,可选值为:0、15、30、45。 int durationMinute = dateHoursAndMinute[1]; body.put("durationMinute", durationMinute); //参会成员列表。参会成员数量默认支持100个,如需调整请联系亿联会议,默认创建者为组织者 JSONArray participants = new JSONArray(); //首先添加组织者 JSONObject createUser = new JSONObject(); createUser.put("id", createUserId); createUser.put("role", 0); participants.add(createUser); for (String hrmid : StringUtils.split(hrmids, ",")) { JSONObject participant = new JSONObject(); participant.put("id", YealinkVideoUtil.getYeaLinkUserId(host, token, hrmid)); participant.put("role", 2); participants.add(participant); } body.put("participants", participants); //是否使用随机会议号,true:使用随机会议号,false:使用会议室会议号 body.put("enableRandomMeetingNumber", true); //会议密码,格式为:6位数字 body.put("meetingPassword", meetingInfo.getString("meetingPassword")); //执行接口 JSONObject resultJson = YealinkVideoUtil.doPut(url, token, null, body); if (resultJson == null) { resultJson = new JSONObject(); resultJson.put("id", meetingId); } //返回结果 apiData.put("maxid", videoData2OA(host, token, createUserId, resultJson, otherParam)); apiData.put("api_status", true); } catch (Exception e) { logger.writeLog("^^^ YealinkVideoClient.editMeeting : error !!!", e); apiData.put("api_status", false); apiData.put("msg", "编辑亿联会议失败:" + e.getMessage()); } return apiData; } @Override public Map overMeeting(Map otherParam) { otherParam.put("completed", true); RecordSet rs = new RecordSet(); String id = MapUtils.getString(otherParam, "id", ""); String manufacturers = MapUtils.getString(otherParam, "manufacturers", ""); rs.executeQuery("select id from meeting_videolist where videomtid=? and manufacturers=?", id, manufacturers); if (rs.next()) { String videoid = rs.getString(1); otherParam.put("videoid", videoid); } return cancelMeeting(otherParam); } @Override public Map cancelMeeting(Map otherParam) { Map apiData = new HashMap<>(); try { if ("".equals(Util.null2String(getDomainName_url()))) { throw new RuntimeException("获取亿联会议地址URl未配置,请检查视频会议是否配置正常!"); } //获取参数 logger.writeLog("^^^ YealinkVideoClient.cancelMeeting : otherParam = " + otherParam); String userid = Util.null2String(otherParam.get("userid"));//创建人ID //这两个需要重新获取 otherParam = VideoMeetingUtil.dealParams(otherParam); String apiKey = Util.null2String(otherParam.get("api_key"));//对应亿联的client id String apiSecret = Util.null2String(otherParam.get("api_secret"));//对应亿联的client secret //这里需要替换创建人的ID String host = StringUtils.removeEnd(getDomainName_url(), "/"); //获取token String token = YealinkVideoUtil.getToken(host, apiKey, apiSecret); //开始执行请求 String createUserId = YealinkVideoUtil.getYeaLinkUserId(host, token, userid); //会议ID String meetingId = Util.null2String(otherParam.get("id")); String url = host + "/users/" + createUserId + "/meetings/" + meetingId; //构建请求体 JSONObject body = new JSONObject(); //删除类型,可选值:0:删除单个会议,1:删除会议序列 body.put("deleteType", 0); //会议顺序号,取值范围为[1, 100],删除单个会议时必输 body.put("sequence", 1); //执行接口 JSONObject resultJson = YealinkVideoUtil.doDelete(url, token, null, body); //处理对应的日程 String videoid = MapUtils.getString(otherParam, "videoid", "-1"); if (otherParam.containsKey("completed")) { finishWorkPlan(videoid); } else { deleteWorkPlan(videoid); } //返回结果 apiData.put("result", true); } catch (Exception e) { logger.writeLog("^^^ YealinkVideoClient.editMeeting : error !!!", e); apiData.put("result", false); apiData.put("msg", "删除亿联会议失败:" + e.getMessage()); } return apiData; } @Override public Map getUserInfo(Map otherParam) { return null; } /** * 获取间隔小时数 * * @param start * @param end * @return */ private int[] getDateHoursAndMinute(Date start, Date end) { int[] arr = new int[2]; long milliseconds = end.getTime() - start.getTime(); long seconds = milliseconds / 1000; int hours = Math.round(seconds / 3600); int minutes = Math.round((seconds % 3600) / 60); if (minutes > 45) { hours += 1; minutes = 0; } else if (minutes > 30) { minutes = 45; } else { if (hours > 0) { if (minutes > 15) { minutes = 30; } else if (minutes > 0) { minutes = 15; } } else { minutes = 30; } } if (hours >= 48) { hours = 47; } arr[0] = hours; arr[1] = minutes; return arr; } /** * 视频数据同步到OA * * @param resultJson * @param map * @return */ private String videoData2OA(String host, String token, String creater, JSONObject resultJson, Map map) { logger.writeLog("videoData2OA.param"); logger.writeLog("videoData2OA.param.host"+host); logger.writeLog("videoData2OA.param.token"+token); logger.writeLog("videoData2OA.param.creater"+creater); logger.writeLog("videoData2OA.param.resultJson"+resultJson); logger.writeLog("videoData2OA.param.map"+map); String maxId = ""; String videomthostid = Util.null2String(map.get("host_id")); String videomtname = Util.null2String(map.get("topic")); // String videomtbegindate = Util.null2String(map.get("start_time")); String starttime = Util.null2String(map.get("starttime")); String videomtenddate = Util.null2String(map.get("end_time")); String videomtcreater = Util.null2String(map.get("userid")); // String mtpassword = Util.null2String(map.get("password")); // String mtcontrolpassword = Util.null2String(map.get("controlpassword")); // String userid = Util.null2String(map.get("userid")); String manufacturers = Util.null2String(map.get("manufacturers")); String mouldkey = Util.null2String(map.get("mouldkey"));//模块主键 String frommould = Util.null2String(map.get("frommould"));//所属模块 String videoid = Util.null2String(map.get("videoid")); String hrmids = Util.null2String(map.get("hrmids")); int isOtherShare = Util.getIntValue(Util.null2String(map.get("isOtherShare")),1); RecordSet recordSet = new RecordSet(); recordSet.executeQuery("SELECT * FROM meeting_videomould WHERE mouldvalue = ? or mouldname = ?", frommould, frommould); if (recordSet.next()) { //这里强制约定。这里传的标识,必须和表里保持一致,否则,作为垃圾数据处理。 frommould = Util.null2String(recordSet.getString("mouldvalue")); } else { frommould = ""; mouldkey = ""; } //获取接口返回的会议ID String videomtstatus = "1";//0,未开始,1进行中,2结束,3取消(根据时间来判断) String videomtid = Util.null2String(resultJson.getString("id"));//虚拟会议id //这里需要根据会议ID再次查询会议详细信息 JSONObject json = getMeetingInfoById(host, token, creater, videomtid); String mtpwd = Util.null2String(json.getString("meetingPassword")); String mtnum = Util.null2String(json.getString("meetingNumber")); String url2 = getYealinkUrl(host, token, mtnum, videomtcreater, mtpwd); String url1 = url2; try { ResourceComInfo resourceComInfo = new ResourceComInfo(); url1 = StringUtils.replace(url1, "&name=", "&name=" + URLEncoder.encode(resourceComInfo.getLastname(videomtcreater), "utf-8")); if (url1.contains("&autojoin=false")) { url1 = StringUtils.replace(url1, "&autojoin=false", "&autojoin=true"); } } catch (Exception e) { logger.writeLog("^^^ YealinkVideoClient.videoData2OA : encode error !!!", e); } //更新到视频会议表 RecordSet rs = new RecordSet(); String oaMtid = mtnum; VideoMeetingUtil videoMeetingUtil = new VideoMeetingUtil(); if (StringUtils.isBlank(videoid)) { if (rs.getDBType().equalsIgnoreCase("oracle") && Util.null2String(rs.getOrgindbtype()).equals("oracle")) { rs.executeUpdate("INSERT INTO meeting_videolist (videomtid ,videomthostid , videomtname ,videomtbegindate ," + "videomtenddate ,videomtcreater ,videomtstatus ,manufacturers ,frommould ,mouldkey,mtpassword," + "oaMtid,videomtstarturl,videomtjoinurl,isOtherShare) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", videomtid, videomthostid, videomtname, starttime, videomtenddate, videomtcreater, videomtstatus, manufacturers, frommould, mouldkey, mtpwd, oaMtid, url1, url2,isOtherShare); } else { rs.executeUpdate("INSERT INTO meeting_videolist (videomtid ,videomthostid , videomtname ,videomtbegindate ," + "videomtenddate ,videomtcreater ,videomtstatus ,manufacturers ,frommould ,mouldkey,mtpassword," + "oaMtid,hrmids,videomtstarturl,videomtjoinurl,isOtherShare) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", videomtid, videomthostid, videomtname, starttime, videomtenddate, videomtcreater, videomtstatus, manufacturers, frommould, mouldkey, mtpwd, oaMtid, hrmids, url1, url2,isOtherShare); } rs.executeQuery("SELECT max(id) FROM meeting_videolist where videomtcreater = ?", videomtcreater); rs.next(); String MaxID = rs.getString(1); if (rs.getDBType().equalsIgnoreCase("oracle") && Util.null2String(rs.getOrgindbtype()).equals("oracle")) { rs.executeUpdate("update meeting_videolist set hrmids = empty_clob() where id = ?", MaxID); videoMeetingUtil.updateHrmmembers(MaxID, hrmids); } maxId = MaxID; } else { if (rs.getDBType().equalsIgnoreCase("oracle") && Util.null2String(rs.getOrgindbtype()).equals("oracle")) { rs.executeUpdate("update meeting_videolist set videomtid = ?, videomtname = ?,videomtbegindate = ?," + "videomtenddate = ?,mtpassword = ?,videomtstarturl = ?,videomtjoinurl = ?,hrmids = empty_clob(),isOtherShare = ? " + "where id =?", videomtid, videomtname, starttime, videomtenddate, mtpwd, url1, url2,isOtherShare, videoid); videoMeetingUtil.updateHrmmembers(videoid, hrmids); } else { rs.executeUpdate("update meeting_videolist set videomtid = ?, videomtname = ?,videomtbegindate = ?," + "videomtenddate = ?,mtpassword = ?,videomtstarturl = ?,videomtjoinurl = ?,hrmids=? ,isOtherShare = ? " + "where id =?", videomtid, videomtname, starttime, videomtenddate, mtpwd, url1, url2, hrmids, isOtherShare, videoid); } maxId = videoid; } //同步日程 handleWorkPlan(maxId, Util.getIntValue(videomtcreater), videomtname, hrmids, starttime, videomtenddate, oaMtid); return maxId; } /** * 处理日程信息 * * @param videoMtId * @param createrId * @param title * @param hrmids * @param start * @param end * @param mtNum */ private void handleWorkPlan(String videoMtId, int createrId, String title, String hrmids, String start, String end, String mtNum) { try { WorkPlan workPlan = new WorkPlan(); RecordSet rs = new RecordSet(); //查询是否存在此日程 rs.executeQuery("select id from workplan where videomtid=?", videoMtId); int workPlanId = -1; if (rs.next()) { workPlanId = Util.getIntValue(rs.getString(1)); } if (workPlanId > 0) {//修改 workPlan.setWorkPlanID(workPlanId); //获取原日程信息 getWorkPlanById(rs, workPlan); } else {//新增 workPlan.setCreateType(1); //紧急程度 workPlan.setUrgentLevel("1"); //日程提醒方式 workPlan.setRemindType(com.engine.workplan.util.WorkPlanUtil.getWorkPlanDefaultRemindTypeIds()); //日程类型 workPlan.setWorkPlanType(1); //是否开始前提醒 workPlan.setRemindBeforeStart("1"); //是否结束前提醒 workPlan.setRemindBeforeEnd("0"); // workPlan.setRemindTimesBeforeStart(10); workPlan.setRemindTimesBeforeEnd(10); // workPlan.setStatus(Constants.WorkPlan_Status_Unfinished); } //创建人 workPlan.setCreaterId(createrId); //标题 workPlan.setWorkPlanName(title); //接收人 workPlan.setResourceId(hrmids); //系统参与人 if (StringUtils.isBlank(workPlan.getResourceId()) && createrId > 0) {//接收人为空,默认直接 workPlan.setResourceId(createrId + ""); } //开始时间 String beginDate = "", beginTime = ""; if (StringUtils.isNotBlank(start)) { String[] s = StringUtils.split(start, " "); beginDate = s[0]; if (s.length > 1) { beginTime = s[1]; if (beginTime.length() == 8) { beginTime = StringUtils.substringBeforeLast(beginTime, ":"); } } } workPlan.setBeginDate(beginDate); //开始日期 workPlan.setBeginTime(beginTime); //开始时间 //结束时间 String endDate = "", endTime = ""; if (StringUtils.isNotBlank(end)) { String[] s = StringUtils.split(end, " "); endDate = s[0]; if (s.length > 1) { endTime = s[1]; if (endTime.length() == 8) { endTime = StringUtils.substringBeforeLast(endTime, ":"); } } } workPlan.setEndDate(endDate); //结束日期 workPlan.setEndTime(endTime); //结束时间 //内容 User user = User.getUser(createrId, 0); String description = SystemEnv.getHtmlLabelName(10000849, Util.getIntValue(user.getLanguage())) + ":" + workPlan.getWorkPlanName() + " " + SystemEnv.getHtmlLabelName(81901, user.getLanguage()) + ":" + workPlan.getBeginDate() + " " + workPlan.getBeginTime() + " " + SystemEnv.getHtmlLabelName(525536, user.getLanguage()) + ":[亿联] " + mtNum; workPlan.setDescription(description); //是否来自外部系统 workPlan.setIsFromOthSystem(false); if (!"".equals(workPlan.getBeginDate()) && null != workPlan.getBeginDate()) { List beginDateTimeRemindList = Util.processTimeBySecond(workPlan.getBeginDate(), workPlan.getBeginTime(), workPlan.getRemindTimesBeforeStart() * -1 * 60); workPlan.setRemindDateBeforeStart((String) beginDateTimeRemindList.get(0)); //开始前提醒日期 workPlan.setRemindTimeBeforeStart((String) beginDateTimeRemindList.get(1)); //开始前提醒时间 } if (!"".equals(workPlan.getEndDate()) && null != workPlan.getEndDate()) { List endDateTimeRemindList = Util.processTimeBySecond(workPlan.getEndDate(), workPlan.getEndTime(), workPlan.getRemindTimesBeforeEnd() * -1 * 60); workPlan.setRemindDateBeforeEnd((String) endDateTimeRemindList.get(0)); //结束前提醒日期 workPlan.setRemindTimeBeforeEnd((String) endDateTimeRemindList.get(1)); //结束前提醒时间 } //附件 String workPlanType = workPlan.getWorkPlanType() + ""; WorkPlanService workPlanService = new WorkPlanService(); WorkPlanShare workPlanShare = new WorkPlanShare(); if (workPlan.getWorkPlanID() > 0) { //修改 WorkPlan oldWorkPlan = new WorkPlan(); oldWorkPlan.setWorkPlanID(workPlan.getWorkPlanID()); workPlanService.updateWorkPlan(oldWorkPlan, workPlan); try { workPlanShare.setShareDetail(workPlan.getWorkPlanID() + ""); } catch (Exception e) { logger.writeLog("^^^ YealinkVideoClient.handleWorkPlan : setShareDetail error !!!", e); } } else { //新增 workPlanService.insertWorkPlan(workPlan); //插入日程 try { workPlanShare.setDefaultShareDetail(user, String.valueOf(workPlan.getWorkPlanID()), workPlanType);//只在新增的时候设置默认共享 } catch (Exception e) { logger.writeLog("^^^ YealinkVideoClient.handleWorkPlan : setDefaultShareDetail error !!!", e); } rs.executeUpdate("update workplan set videomtid=? where id=?", videoMtId, workPlan.getWorkPlanID()); } } catch (Exception e) { logger.writeLog("^^^ YealinkVideoClient.handleWorkPlan : 用户[" + createrId + "]日程处理处理失败!", e); } } /** * 删除对应的日程 * * @param videoMtId */ private void deleteWorkPlan(String videoMtId) { RecordSet rs = new RecordSet(); rs.executeQuery("select id from workplan where videomtid=?", videoMtId); int workPlanId = -1; if (rs.next()) { workPlanId = Util.getIntValue(rs.getString(1)); } if (workPlanId > 0) { new WorkPlanHandler().delete(workPlanId + ""); } } /** * 完成日程 * * @param videoMtId */ private void finishWorkPlan(String videoMtId) { RecordSet rs = new RecordSet(); rs.executeQuery("select id from workplan where videomtid=?", videoMtId); int workPlanId = -1; if (rs.next()) { workPlanId = Util.getIntValue(rs.getString(1)); } if (workPlanId > 0) { new WorkPlanHandler().finishWorkPlan(workPlanId + ""); } } /** * 获取原日程信息 * * @param rs * @param workPlan */ private void getWorkPlanById(RecordSet rs, WorkPlan workPlan) { rs.executeQuery("select * from workplan where id=?", workPlan.getWorkPlanID()); rs.next(); workPlan.setWorkPlanType(Util.getIntValue(rs.getString("type_n"))); workPlan.setBeginDate(Util.null2String(rs.getString("begindate"))); workPlan.setBeginTime(Util.null2String(rs.getString("begintime"))); workPlan.setEndDate(Util.null2String(rs.getString("enddate"))); workPlan.setEndTime(Util.null2String(rs.getString("endtime"))); workPlan.setStatus(Util.null2String(rs.getString("status"))); workPlan.setCreaterId(Util.getIntValue(rs.getString("createrid"))); workPlan.setWorkPlanName(Util.null2String(rs.getString("name"))); workPlan.setCreateType(Util.getIntValue(rs.getString("creatertype"))); workPlan.setUrgentLevel(Util.null2String(rs.getString("urgentlevel"))); workPlan.setRemindType(Util.null2String(rs.getString("remindtype"))); workPlan.setRemindTimesBeforeStart(Util.getIntValue(rs.getString("remindtimesbeforestart"))); workPlan.setRemindTimesBeforeEnd(Util.getIntValue(rs.getString("remindtimesbeforeend"))); workPlan.setRemindBeforeStart(Util.null2String(rs.getString("remindbeforestart"))); workPlan.setRemindBeforeEnd(Util.null2String(rs.getString("remindbeforeend"))); workPlan.setRemindDateBeforeStart(Util.null2String(rs.getString("reminddatebeforestart"))); workPlan.setRemindTimeBeforeStart(Util.null2String(rs.getString("remindtimebeforestart"))); workPlan.setRemindDateBeforeEnd(Util.null2String(rs.getString("reminddatebeforeend"))); workPlan.setRemindTimeBeforeEnd(Util.null2String(rs.getString("remindtimebeforeend"))); workPlan.setResourceId(Util.null2String(rs.getString("resourceid"))); workPlan.setUuid(Util.null2String(rs.getString("uuid"))); } /** * 获取入会链接 * * @param host * @param token * @param mtnum * @param userId * @param meetingPassword * @return */ private String getYealinkUrl(String host, String token, String mtnum, String userId, String meetingPassword) { String url = host + "/meeting-join-links/" + mtnum; JSONObject body = new JSONObject(); body.put("language", "zh"); body.put("password", meetingPassword); JSONObject resultJson = YealinkVideoUtil.doGet(url, token, null, body); return resultJson.getString("joinLink"); } /** * 查询会议信息 * * @param host * @param token * @param userId * @param mtId * @return */ private JSONObject getMeetingInfoById(String host, String token, String userId, String mtId) { String url = host + "/users/" + userId + "/meetings/" + mtId; JSONObject body = new JSONObject(); body.put("sequence", 1); return YealinkVideoUtil.doGet(url, token, null, body); } }