package cn.com.goldenwater.dcproj.service.impl.meeting; import cn.com.goldenwater.dcproj.dao.BisInspAllRlationPersDao; import cn.com.goldenwater.dcproj.dao.BisInspMeetRoomDao; import cn.com.goldenwater.dcproj.dao.BisInspOrgBaseDao; import cn.com.goldenwater.dcproj.dao.BisInspOrgDao; import cn.com.goldenwater.dcproj.dto.BisInspMeetRoomDto; import cn.com.goldenwater.dcproj.dto.MeetRoomConfigsSetDto; import cn.com.goldenwater.dcproj.model.BisInspAllRlationPers; import cn.com.goldenwater.dcproj.model.BisInspMeetRoom; import cn.com.goldenwater.dcproj.model.BisInspOrg; import cn.com.goldenwater.dcproj.model.BisInspOrgBase; import cn.com.goldenwater.dcproj.param.BisInspMeetRoomParam; import cn.com.goldenwater.dcproj.param.BisInspOrgBaseParam; import cn.com.goldenwater.dcproj.param.BisInspOrgParam; import cn.com.goldenwater.dcproj.service.BisInspMeetRoomService; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.utils.gwxy.MeetData; import cn.com.goldenwater.dcproj.utils.gwxy.MeetUtil; import cn.com.goldenwater.id.util.UuidUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.xylink.util.HttpUtil; import com.xylink.util.Result; import net.sf.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.util.*; /** * @author lhc * @date 2019-5-27 */ @Service @Transactional public class BisInspMeetRoomServiceImpl extends AbstractCrudService implements BisInspMeetRoomService { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private BisInspMeetRoomDao bisInspMeetRoomDao; @Value("${ylink.enterpriseId}") public String enterpriseId; @Value("${ylink.token}") public String token; @Value("${ylink.ip}") public String ylinkIp; @Autowired private BisInspAllRlationPersDao bisInspAllRlationPersDao; @Autowired private BisInspOrgDao bisInspOrgDao; public BisInspMeetRoomServiceImpl(BisInspMeetRoomDao bisInspMeetRoomDao) { super(bisInspMeetRoomDao); this.bisInspMeetRoomDao = bisInspMeetRoomDao; } public BisInspMeetRoom addXylink(BisInspMeetRoom bisInspMeetRoom) throws IOException { Map jsonEntity = new HashMap<>(); jsonEntity.put("meetingName", bisInspMeetRoom.getMeetingName()); if (bisInspMeetRoom.getMaxParticipant() != null) { jsonEntity.put("maxParticipant", bisInspMeetRoom.getMaxParticipant()); } jsonEntity.put("requirePassword", !"0".equals(bisInspMeetRoom.getRequirePassword()) ); jsonEntity.put("password", bisInspMeetRoom.getInPassword() == null ? "" : bisInspMeetRoom.getInPassword()); jsonEntity.put("controlPassword", bisInspMeetRoom.getControlPassword()); if (bisInspMeetRoom.getAutoMute() != null) { jsonEntity.put("autoMute", bisInspMeetRoom.getAutoMute()); } if (bisInspMeetRoom.getStartTime() != null && bisInspMeetRoom.getEndTime() != null) { jsonEntity.put("startTime", bisInspMeetRoom.getStartTime().getTime()); jsonEntity.put("endTime", bisInspMeetRoom.getEndTime().getTime()); } MeetRoomConfigsSetDto meetRoomConfigsDto = new MeetRoomConfigsSetDto(); if (bisInspMeetRoom.getAutoRecord() != null) { meetRoomConfigsDto.setAutoRecord("0".equals(bisInspMeetRoom.getAutoRecord()) ? false : true); } if (bisInspMeetRoom.getSmartMuteperson() != null) { meetRoomConfigsDto.setSmartMutePerson(bisInspMeetRoom.getSmartMuteperson()); } if (bisInspMeetRoom.getSmartMuteperson() != null && bisInspMeetRoom.getAutoRecord() != null) { jsonEntity.put("configs", meetRoomConfigsDto); } String json = JSONObject.fromObject(jsonEntity).toString(); String method = "POST"; String reqPath = ylinkIp + "/api/rest/external/v2/create_meeting?enterpriseId=" + enterpriseId; String requestUriPrefix = ylinkIp + "/api/rest/external/v2/"; //获取签名 String signature = MeetUtil.computeSignature(json, method, token, reqPath, requestUriPrefix); reqPath += "&signature=" + signature; MeetData meetData = new MeetData(); Result result = HttpUtil.getResponse(reqPath, "POST", json.toString(), meetData.getClass()); meetData = (MeetData) result.getData(); if (result.isSuccess()) { bisInspMeetRoom.setMeetingNumber(meetData.getMeetingNumber()); return bisInspMeetRoom; } else { return null; } } @Override public BisInspMeetRoom add(BisInspMeetRoom bisInspMeetRoom) throws IOException { //首先调用小鱼sdk 创建会议室,成功后,再添加到数据库表里 //调用小鱼sdk if (bisInspMeetRoom.getMeetingNumber() == null || "".equals(bisInspMeetRoom.getMeetingNumber())) { Map jsonEntity = new HashMap<>(); jsonEntity.put("meetingName", bisInspMeetRoom.getMeetingName()); if (bisInspMeetRoom.getMaxParticipant() != null) { jsonEntity.put("maxParticipant", bisInspMeetRoom.getMaxParticipant()); } jsonEntity.put("requirePassword", "0".equals(bisInspMeetRoom.getRequirePassword()) ? false : true); jsonEntity.put("password", bisInspMeetRoom.getInPassword() == null ? "" : bisInspMeetRoom.getInPassword()); jsonEntity.put("controlPassword", bisInspMeetRoom.getControlPassword()); if (bisInspMeetRoom.getAutoMute() != null) { jsonEntity.put("autoMute", bisInspMeetRoom.getAutoMute()); } if (bisInspMeetRoom.getStartTime() != null && bisInspMeetRoom.getEndTime() != null) { jsonEntity.put("startTime", bisInspMeetRoom.getStartTime().getTime()); jsonEntity.put("endTime", bisInspMeetRoom.getEndTime().getTime()); } MeetRoomConfigsSetDto meetRoomConfigsDto = new MeetRoomConfigsSetDto(); if (bisInspMeetRoom.getAutoRecord() != null) { meetRoomConfigsDto.setAutoRecord("0".equals(bisInspMeetRoom.getAutoRecord()) ? false : true); } if (bisInspMeetRoom.getSmartMuteperson() != null) { meetRoomConfigsDto.setSmartMutePerson(bisInspMeetRoom.getSmartMuteperson()); } if (bisInspMeetRoom.getSmartMuteperson() != null && bisInspMeetRoom.getAutoRecord() != null) { jsonEntity.put("configs", meetRoomConfigsDto); } String json = JSONObject.fromObject(jsonEntity).toString(); String method = "POST"; String reqPath = ylinkIp + "/api/rest/external/v2/create_meeting?enterpriseId=" + enterpriseId; String requestUriPrefix = ylinkIp + "/api/rest/external/v2/"; //获取签名 String signature = MeetUtil.computeSignature(json, method, token, reqPath, requestUriPrefix); reqPath += "&signature=" + signature; MeetData meetData = new MeetData(); Result result = HttpUtil.getResponse(reqPath, "POST", json.toString(), meetData.getClass()); meetData = (MeetData) result.getData(); if (result.isSuccess()) { try { String uuid = UuidUtil.uuid(); // 生成uuid bisInspMeetRoom.setId(uuid); bisInspMeetRoom.setIntm(new Date()); bisInspMeetRoom.setUptm(new Date()); bisInspMeetRoom.setMeetingNumber(meetData.getMeetingNumber()); bisInspMeetRoom.setShareUrl(meetData.getShareUrl()); bisInspMeetRoom.setInPassword(meetData.getPassword()); bisInspMeetRoom.setControlPassword(meetData.getControlPassword()); bisInspMeetRoom.setFlagValid("1"); //根据人员获取人员所在机构 BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(bisInspMeetRoom.getPersId()); bisInspMeetRoom.setPersName(bisInspAllRlationPers.getPersName()); bisInspMeetRoom.setOrgNm(bisInspAllRlationPers.getOrgNm()); bisInspMeetRoom.setOrgId(bisInspAllRlationPers.getOrgId()); if (bisInspMeetRoom.getUsOrgId() != null) { BisInspOrgParam bisInspOrgParam = new BisInspOrgParam(); bisInspOrgParam.setOrgId(bisInspMeetRoom.getUsOrgId()); List bisInspOrgs = bisInspOrgDao.findList(bisInspOrgParam); if (bisInspOrgs.size() == 1) { bisInspMeetRoom.setUsOrgNm(bisInspOrgs.get(0).getOrgNm()); } } bisInspMeetRoomDao.insert(bisInspMeetRoom); } catch (Exception ex) { ex.printStackTrace(); } } else { logger.info(String.valueOf(result.getErrorStatus())); } } else { String uuid = UuidUtil.uuid(); // 生成uuid bisInspMeetRoom.setId(uuid); bisInspMeetRoom.setIntm(new Date()); bisInspMeetRoom.setUptm(new Date()); bisInspMeetRoom.setMeetingNumber(bisInspMeetRoom.getMeetingNumber()); bisInspMeetRoom.setShareUrl(bisInspMeetRoom.getShareUrl()); bisInspMeetRoom.setInPassword(bisInspMeetRoom.getInPassword()); bisInspMeetRoom.setControlPassword(bisInspMeetRoom.getControlPassword()); bisInspMeetRoom.setFlagValid("1"); //根据人员获取人员所在机构 BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersDao.get(bisInspMeetRoom.getPersId()); bisInspMeetRoom.setPersName(bisInspAllRlationPers.getPersName()); bisInspMeetRoom.setOrgNm(bisInspAllRlationPers.getOrgNm()); bisInspMeetRoom.setOrgId(bisInspAllRlationPers.getOrgId()); if (bisInspMeetRoom.getUsOrgId() != null) { BisInspOrgParam bisInspOrgParam = new BisInspOrgParam(); bisInspOrgParam.setOrgId(bisInspMeetRoom.getUsOrgId()); List bisInspOrgs = bisInspOrgDao.findList(bisInspOrgParam); if (bisInspOrgs.size() == 1) { bisInspMeetRoom.setUsOrgNm(bisInspOrgs.get(0).getOrgNm()); } } bisInspMeetRoomDao.insert(bisInspMeetRoom); } return bisInspMeetRoom; } @Override public int del(String id) throws IOException { String json = ""; BisInspMeetRoom bisInspMeetRoom = bisInspMeetRoomDao.get(id); if (bisInspMeetRoom != null) { //调用小鱼sdk 删除会议号 String method = "DELETE"; String reqPath = ylinkIp + "/api/rest/external/v1/meetingInfo/" + bisInspMeetRoom.getMeetingNumber() + "?enterpriseId=" + enterpriseId; String requestUriPrefix = ylinkIp + "/api/rest/external/v1/"; String signature = MeetUtil.computeSignature(json, method, token, reqPath, requestUriPrefix); reqPath += "&signature=" + signature; Result result = HttpUtil.getResponse(reqPath, method, json, null); if (result.isSuccess()) { return bisInspMeetRoomDao.delete(bisInspMeetRoom.getId()); } else { return result.getErrorStatus(); } } else { return 6001; } } @Override public int edit(BisInspMeetRoom bisInspMeetRoom) throws IOException { Map jsonEntity = new HashMap<>(); jsonEntity.put("meettingRoomName", bisInspMeetRoom.getMeetingName()); if (bisInspMeetRoom.getAutoMute() != null) { jsonEntity.put("autoMute", bisInspMeetRoom.getAutoMute()); } if (bisInspMeetRoom.getSmartMuteperson() != null) { jsonEntity.put("smartMutePerson", bisInspMeetRoom.getSmartMuteperson()); } jsonEntity.put("autoRecord", bisInspMeetRoom.getAutoRecord() == null ? false : true); jsonEntity.put("expireTime", bisInspMeetRoom.getEndTime().getTime()); jsonEntity.put("password", bisInspMeetRoom.getInPassword()); jsonEntity.put("meetingControlPwd", bisInspMeetRoom.getControlPassword()); JSONObject json = JSONObject.fromObject(jsonEntity); String method = "PUT"; String reqPath = ylinkIp + "/api/rest/external/v1/meetingInfo/" + bisInspMeetRoom.getMeetingNumber() + "?enterpriseId=" + enterpriseId; String requestUriPrefix = ylinkIp + "/api/rest/external/v1/"; String signature = MeetUtil.computeSignature(json.toString(), method, token, reqPath, requestUriPrefix); reqPath += "&signature=" + signature; MeetData meetData = new MeetData(); Result result = HttpUtil.getResponse(reqPath, method, json.toString(), meetData.getClass()); if (result.isSuccess()) { bisInspMeetRoom.setUptm(new Date()); return bisInspMeetRoomDao.update(bisInspMeetRoom); } else { return result.getErrorStatus(); } } @Override public PageInfo getRoomByPersId(BisInspMeetRoomParam bisInspMeetRoomParam) throws IOException { //根据人员获取人员所在机构 String orgId = bisInspAllRlationPersDao.get(bisInspMeetRoomParam.getPersId()).getOrgId(); if ("027".equals(orgId) || "029".equals(orgId) || "041".equals(orgId) || "042".equals(orgId)) { bisInspMeetRoomParam.setPersId(null); } else { bisInspMeetRoomParam.setUsOrgId(orgId); } PageHelper.startPage(bisInspMeetRoomParam); List bisInspMeetRooms = bisInspMeetRoomDao.getRoomByPersId(bisInspMeetRoomParam); PageInfo page = new PageInfo(bisInspMeetRooms); return page; } @Override public List meetingStatus(String callNumber) throws IOException { String method = "GET"; String json = ""; String reqPath = ylinkIp + "/api/rest/external/v1/meetingInfo/" + enterpriseId + "/meetingRoomInfo?enterpriseId=" + enterpriseId; String requestUriPrefix = ylinkIp + "/api/rest/external/v1/"; String signature = MeetUtil.computeSignature(json, method, token, reqPath, requestUriPrefix); reqPath += "&signature=" + signature; MeetData meetData = new MeetData(); Result result = HttpUtil.getResponse(reqPath, method, json, meetData.getClass()); if (result.isSuccess()) { return null; } else { return null; } } @Override public int deleteByCode(String meetId) throws IOException { //调用小鱼sdk 删除会议号 String json = ""; String method = "DELETE"; String reqPath = ylinkIp + "/api/rest/external/v1/meetingInfo/" + meetId + "?enterpriseId=" + enterpriseId; String requestUriPrefix = ylinkIp + "/api/rest/external/v1/"; String signature = MeetUtil.computeSignature(json, method, token, reqPath, requestUriPrefix); reqPath += "&signature=" + signature; Result result = HttpUtil.getResponse(reqPath, method, json, null); if (result.isSuccess()) { return result.getErrorStatus(); } else { return result.getErrorStatus(); } } }